未验证 提交 054893d5 编写于 作者: R Ryuta Kamizono 提交者: GitHub

Merge pull request #32923 from yahonda/bump_sqlite3_version_to_38

Bump minimum SQLite version to 3.8
...@@ -1062,13 +1062,7 @@ def assume_migrated_upto_version(version, migrations_paths) ...@@ -1062,13 +1062,7 @@ def assume_migrated_upto_version(version, migrations_paths)
if (duplicate = inserting.detect { |v| inserting.count(v) > 1 }) if (duplicate = inserting.detect { |v| inserting.count(v) > 1 })
raise "Duplicate migration #{duplicate}. Please renumber your migrations to resolve the conflict." raise "Duplicate migration #{duplicate}. Please renumber your migrations to resolve the conflict."
end end
if supports_multi_insert? execute insert_versions_sql(inserting)
execute insert_versions_sql(inserting)
else
inserting.each do |v|
execute insert_versions_sql(v)
end
end
end end
end end
......
...@@ -137,6 +137,10 @@ def initialize(version_string) ...@@ -137,6 +137,10 @@ def initialize(version_string)
def <=>(version_string) def <=>(version_string)
@version <=> version_string.split(".").map(&:to_i) @version <=> version_string.split(".").map(&:to_i)
end end
def to_s
@version.join(".")
end
end end
def valid_type?(type) # :nodoc: def valid_type?(type) # :nodoc:
...@@ -320,6 +324,7 @@ def supports_comments_in_create? ...@@ -320,6 +324,7 @@ def supports_comments_in_create?
def supports_multi_insert? def supports_multi_insert?
true true
end end
deprecate :supports_multi_insert?
# Does this adapter support virtual columns? # Does this adapter support virtual columns?
def supports_virtual_columns? def supports_virtual_columns?
......
...@@ -104,6 +104,10 @@ def initialize(connection, logger, connection_options, config) ...@@ -104,6 +104,10 @@ def initialize(connection, logger, connection_options, config)
@active = true @active = true
@statements = StatementPool.new(self.class.type_cast_config_to_integer(config[:statement_limit])) @statements = StatementPool.new(self.class.type_cast_config_to_integer(config[:statement_limit]))
if sqlite_version < "3.8.0"
raise "Your version of SQLite (#{sqlite_version}) is too old. Active Record supports SQLite >= 3.8."
end
configure_connection configure_connection
end end
...@@ -116,7 +120,7 @@ def supports_savepoints? ...@@ -116,7 +120,7 @@ def supports_savepoints?
end end
def supports_partial_index? def supports_partial_index?
sqlite_version >= "3.8.0" true
end end
def requires_reloading? def requires_reloading?
...@@ -124,7 +128,7 @@ def requires_reloading? ...@@ -124,7 +128,7 @@ def requires_reloading?
end end
def supports_foreign_keys_in_create? def supports_foreign_keys_in_create?
sqlite_version >= "3.6.19" true
end end
def supports_views? def supports_views?
...@@ -139,10 +143,6 @@ def supports_json? ...@@ -139,10 +143,6 @@ def supports_json?
true true
end end
def supports_multi_insert?
sqlite_version >= "3.7.11"
end
def active? def active?
@active @active
end end
......
...@@ -295,6 +295,10 @@ def test_log_invalid_encoding ...@@ -295,6 +295,10 @@ def test_log_invalid_encoding
assert_equal "ы", error.message assert_equal "ы", error.message
end end
end end
def test_supports_multi_insert_is_deprecated
assert_deprecated { @connection.supports_multi_insert? }
end
end end
class AdapterForeignKeyTest < ActiveRecord::TestCase class AdapterForeignKeyTest < ActiveRecord::TestCase
......
...@@ -37,24 +37,6 @@ def test_dump_schema_information_outputs_lexically_ordered_versions ...@@ -37,24 +37,6 @@ def test_dump_schema_information_outputs_lexically_ordered_versions
ActiveRecord::SchemaMigration.delete_all ActiveRecord::SchemaMigration.delete_all
end end
if current_adapter?(:SQLite3Adapter)
%w{3.7.8 3.7.11 3.7.12}.each do |version_string|
test "dumps schema version for sqlite version #{version_string}" do
version = ActiveRecord::ConnectionAdapters::SQLite3Adapter::Version.new(version_string)
ActiveRecord::Base.connection.stubs(:sqlite_version).returns(version)
versions = %w{ 20100101010101 20100201010101 20100301010101 }
versions.reverse_each do |v|
ActiveRecord::SchemaMigration.create!(version: v)
end
schema_info = ActiveRecord::Base.connection.dump_schema_information
assert_match(/20100201010101.*20100301010101/m, schema_info)
ActiveRecord::SchemaMigration.delete_all
end
end
end
def test_schema_dump def test_schema_dump
output = standard_dump output = standard_dump
assert_match %r{create_table "accounts"}, output assert_match %r{create_table "accounts"}, output
...@@ -192,7 +174,7 @@ def test_schema_dumps_index_columns_in_right_order ...@@ -192,7 +174,7 @@ def test_schema_dumps_index_columns_in_right_order
def test_schema_dumps_partial_indices def test_schema_dumps_partial_indices
index_definition = dump_table_schema("companies").split(/\n/).grep(/t\.index.*company_partial_index/).first.strip index_definition = dump_table_schema("companies").split(/\n/).grep(/t\.index.*company_partial_index/).first.strip
if current_adapter?(:PostgreSQLAdapter, :SQLite3Adapter) && ActiveRecord::Base.connection.supports_partial_index? if ActiveRecord::Base.connection.supports_partial_index?
assert_equal 't.index ["firm_id", "type"], name: "company_partial_index", where: "(rating > 10)"', index_definition assert_equal 't.index ["firm_id", "type"], name: "company_partial_index", where: "(rating > 10)"', index_definition
else else
assert_equal 't.index ["firm_id", "type"], name: "company_partial_index"', index_definition assert_equal 't.index ["firm_id", "type"], name: "company_partial_index"', index_definition
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册