mirror of
https://github.com/github/rails.git
synced 2026-01-14 09:07:58 -05:00
future proofing the sqlite3 adapter code
Signed-off-by: Yehuda Katz <wycats@Yehuda-Katz.local>
This commit is contained in:
committed by
Yehuda Katz
parent
6404feee50
commit
beda2d43d6
@@ -193,20 +193,20 @@ module ActiveRecord
|
||||
SQL
|
||||
|
||||
execute(sql, name).map do |row|
|
||||
row[0]
|
||||
row['name']
|
||||
end
|
||||
end
|
||||
|
||||
def columns(table_name, name = nil) #:nodoc:
|
||||
table_structure(table_name).map do |field|
|
||||
SQLiteColumn.new(field['name'], field['dflt_value'], field['type'], field['notnull'] == "0")
|
||||
SQLiteColumn.new(field['name'], field['dflt_value'], field['type'], field['notnull'].to_i == 0)
|
||||
end
|
||||
end
|
||||
|
||||
def indexes(table_name, name = nil) #:nodoc:
|
||||
execute("PRAGMA index_list(#{quote_table_name(table_name)})", name).map do |row|
|
||||
index = IndexDefinition.new(table_name, row['name'])
|
||||
index.unique = row['unique'] != '0'
|
||||
index.unique = row['unique'].to_i != 0
|
||||
index.columns = execute("PRAGMA index_info('#{index.name}')").map { |col| col['name'] }
|
||||
index
|
||||
end
|
||||
|
||||
@@ -288,6 +288,9 @@ class CalculationsTest < ActiveRecord::TestCase
|
||||
# Oracle adapter returns floating point value 636.0 after SUM
|
||||
if current_adapter?(:OracleAdapter)
|
||||
assert_equal 636, Account.sum("2 * credit_limit")
|
||||
elsif current_adapter?(:SQLite3Adapter)
|
||||
# Future versions of the SQLite3 adapter will return a number
|
||||
assert_equal 636, Account.sum("2 * credit_limit").to_i
|
||||
else
|
||||
assert_equal '636', Account.sum("2 * credit_limit")
|
||||
end
|
||||
|
||||
@@ -49,10 +49,16 @@ class QueryCacheTest < ActiveRecord::TestCase
|
||||
end
|
||||
|
||||
def test_cache_does_not_wrap_string_results_in_arrays
|
||||
require 'sqlite3/version' if current_adapter?(:SQLite3Adapter)
|
||||
|
||||
Task.cache do
|
||||
# Oracle adapter returns count() as Fixnum or Float
|
||||
if current_adapter?(:OracleAdapter)
|
||||
assert Task.connection.select_value("SELECT count(*) AS count_all FROM tasks").is_a?(Numeric)
|
||||
elsif current_adapter?(:SQLite3Adapter) && SQLite3::Version::VERSION > '1.2.5'
|
||||
# Future versions of the sqlite3 adapter will return numeric
|
||||
assert_instance_of Fixnum,
|
||||
Task.connection.select_value("SELECT count(*) AS count_all FROM tasks")
|
||||
else
|
||||
assert_instance_of String, Task.connection.select_value("SELECT count(*) AS count_all FROM tasks")
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user