mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
bind substitution is working properly
This commit is contained in:
parent
9d46e0d012
commit
43bbb25ddd
2 changed files with 19 additions and 7 deletions
|
@ -228,7 +228,7 @@ module ActiveRecord
|
|||
|
||||
def clear_cache!
|
||||
@statements.each_value do |value|
|
||||
exec "DEALLOCATE #{value}"
|
||||
@connection.query "DEALLOCATE #{value}"
|
||||
end
|
||||
@statements.clear
|
||||
end
|
||||
|
@ -251,6 +251,7 @@ module ActiveRecord
|
|||
def reconnect!
|
||||
if @connection.respond_to?(:reset)
|
||||
@connection.reset
|
||||
clear_cache!
|
||||
configure_connection
|
||||
else
|
||||
disconnect!
|
||||
|
@ -515,6 +516,10 @@ module ActiveRecord
|
|||
end
|
||||
end
|
||||
|
||||
def substitute_for(column, current_values)
|
||||
Arel.sql("$#{current_values.length + 1}")
|
||||
end
|
||||
|
||||
def exec(sql, name = 'SQL', binds = [])
|
||||
return async_exec(sql, name, binds) if @async
|
||||
|
||||
|
@ -537,7 +542,9 @@ module ActiveRecord
|
|||
})
|
||||
@connection.block
|
||||
result = @connection.get_last_result
|
||||
ActiveRecord::Result.new(result.fields, result_as_array(result))
|
||||
ret = ActiveRecord::Result.new(result.fields, result_as_array(result))
|
||||
result.clear
|
||||
return ret
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1014,11 +1021,8 @@ module ActiveRecord
|
|||
|
||||
# Executes a SELECT query and returns the results, performing any data type
|
||||
# conversions that are required to be performed here instead of in PostgreSQLColumn.
|
||||
def select(sql, name = nil)
|
||||
fields, rows = select_raw(sql, name)
|
||||
rows.map do |row|
|
||||
Hash[fields.zip(row)]
|
||||
end
|
||||
def select(sql, name = nil, binds = [])
|
||||
exec(sql, name, binds).to_a
|
||||
end
|
||||
|
||||
def select_raw(sql, name = nil)
|
||||
|
|
|
@ -55,6 +55,14 @@ module ActiveRecord
|
|||
|
||||
assert_equal [['1', 'foo']], result.rows
|
||||
end
|
||||
|
||||
def test_substitute_for
|
||||
bind = @connection.substitute_for(nil, [])
|
||||
assert_equal Arel.sql('$1'), bind
|
||||
|
||||
bind = @connection.substitute_for(nil, [nil])
|
||||
assert_equal Arel.sql('$2'), bind
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue