mirror of
https://github.com/github/rails.git
synced 2026-01-29 16:28:09 -05:00
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
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user