diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2006-08-05 21:18:12 +0000 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2006-08-05 21:18:12 +0000 |
commit | 5779deb88d3dae9658cdd508dbde079acd68c2fb (patch) | |
tree | 8694d839700008da729ff774d9fb5012317afa83 /activerecord | |
parent | c99df461f45c514d434a6f0bcb368320b71fd0c8 (diff) | |
download | rails-5779deb88d3dae9658cdd508dbde079acd68c2fb.tar.gz rails-5779deb88d3dae9658cdd508dbde079acd68c2fb.tar.bz2 rails-5779deb88d3dae9658cdd508dbde079acd68c2fb.zip |
Refactored select routing for SQL Server adapter (closes #5683) [tom@popdog.net]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4671 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/sqlserver_adapter.rb | 22 | ||||
-rwxr-xr-x | activerecord/test/abstract_unit.rb | 6 |
2 files changed, 14 insertions, 14 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/sqlserver_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlserver_adapter.rb index 341a388121..a19da5a545 100644 --- a/activerecord/lib/active_record/connection_adapters/sqlserver_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/sqlserver_adapter.rb @@ -504,22 +504,22 @@ module ActiveRecord private def select(sql, name = nil) - rows = [] repair_special_columns(sql) - log(sql, name) do - @connection.select_all(sql) do |row| - record = {} - row.column_names.each do |col| - record[col] = row[col] - if record[col].is_a? DBI::Timestamp - ts = record[col] - record[col] = DateTime.new(ts.year, ts.month, ts.day, ts.hour, ts.minute, ts.sec) + + result = [] + execute(sql) do |handle| + handle.each do |row| + row_hash = {} + row.each_with_index do |value, i| + if value.is_a? DBI::Timestamp + value = DateTime.new(value.year, value.month, value.day, value.hour, value.minute, value.sec) end + row_hash[handle.column_names[i]] = value end - rows << record + result << row_hash end end - rows + result end # Turns IDENTITY_INSERT ON for table during execution of the block diff --git a/activerecord/test/abstract_unit.rb b/activerecord/test/abstract_unit.rb index 4628293449..f30e190fc9 100755 --- a/activerecord/test/abstract_unit.rb +++ b/activerecord/test/abstract_unit.rb @@ -60,12 +60,12 @@ ActiveRecord::Base.connection.class.class_eval do cattr_accessor :query_count # Array of regexes of queries that are not counted against query_count - @@ignore_list = [/^SELECT currval/, /^SELECT CAST/] + @@ignore_list = [/^SELECT currval/, /^SELECT CAST/, /^SELECT @@IDENTITY/] alias_method :execute_without_query_counting, :execute - def execute_with_query_counting(sql, name = nil) + def execute_with_query_counting(sql, name = nil, &block) self.query_count += 1 unless @@ignore_list.any? { |r| sql =~ r } - execute_without_query_counting(sql, name) + execute_without_query_counting(sql, name, &block) end end |