diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2010-10-15 16:41:44 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2010-10-26 13:44:10 -0700 |
commit | 43bbb25ddd413acc27998fe25be8f086585a7a2e (patch) | |
tree | 376648d8e61156054def1ff819e0b8314407a1f4 /activerecord/lib/active_record | |
parent | 9d46e0d012e5c4687af4d14584f1230e71d7d654 (diff) | |
download | rails-43bbb25ddd413acc27998fe25be8f086585a7a2e.tar.gz rails-43bbb25ddd413acc27998fe25be8f086585a7a2e.tar.bz2 rails-43bbb25ddd413acc27998fe25be8f086585a7a2e.zip |
bind substitution is working properly
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb index 46c3486be6..71adfe8d8c 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -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) |