Bump minimum SQLite version to 3.8
These OS versions have SQLite 3.8 or higher by default. - macOS 10.10 (Yosemite) or higher - Ubuntu 14.04 LTS or higher Raising the minimum version of SQLite 3.8 introduces these changes: - All of bundled adapters support `supports_multi_insert?` - SQLite 3.8 always satisifies `supports_foreign_keys_in_create?` and `supports_partial_index?` - sqlite adapter can support `alter_table` method for foreign key referenced tables by #32865 - Deprecated `supports_multi_insert?` method
This commit is contained in:
parent
15d00f04f4
commit
d1a74c1e01
@ -1062,13 +1062,7 @@ def assume_migrated_upto_version(version, migrations_paths)
|
||||
if (duplicate = inserting.detect { |v| inserting.count(v) > 1 })
|
||||
raise "Duplicate migration #{duplicate}. Please renumber your migrations to resolve the conflict."
|
||||
end
|
||||
if supports_multi_insert?
|
||||
execute insert_versions_sql(inserting)
|
||||
else
|
||||
inserting.each do |v|
|
||||
execute insert_versions_sql(v)
|
||||
end
|
||||
end
|
||||
execute insert_versions_sql(inserting)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -137,6 +137,10 @@ def initialize(version_string)
|
||||
def <=>(version_string)
|
||||
@version <=> version_string.split(".").map(&:to_i)
|
||||
end
|
||||
|
||||
def to_s
|
||||
@version.join(".")
|
||||
end
|
||||
end
|
||||
|
||||
def valid_type?(type) # :nodoc:
|
||||
@ -320,6 +324,7 @@ def supports_comments_in_create?
|
||||
def supports_multi_insert?
|
||||
true
|
||||
end
|
||||
deprecate :supports_multi_insert?
|
||||
|
||||
# Does this adapter support virtual columns?
|
||||
def supports_virtual_columns?
|
||||
|
@ -104,6 +104,10 @@ def initialize(connection, logger, connection_options, config)
|
||||
@active = true
|
||||
@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
|
||||
end
|
||||
|
||||
@ -116,7 +120,7 @@ def supports_savepoints?
|
||||
end
|
||||
|
||||
def supports_partial_index?
|
||||
sqlite_version >= "3.8.0"
|
||||
true
|
||||
end
|
||||
|
||||
def requires_reloading?
|
||||
@ -124,7 +128,7 @@ def requires_reloading?
|
||||
end
|
||||
|
||||
def supports_foreign_keys_in_create?
|
||||
sqlite_version >= "3.6.19"
|
||||
true
|
||||
end
|
||||
|
||||
def supports_views?
|
||||
@ -139,10 +143,6 @@ def supports_json?
|
||||
true
|
||||
end
|
||||
|
||||
def supports_multi_insert?
|
||||
sqlite_version >= "3.7.11"
|
||||
end
|
||||
|
||||
def active?
|
||||
@active
|
||||
end
|
||||
|
@ -295,6 +295,10 @@ def test_log_invalid_encoding
|
||||
assert_equal "ы", error.message
|
||||
end
|
||||
end
|
||||
|
||||
def test_supports_multi_insert_is_deprecated
|
||||
assert_deprecated { @connection.supports_multi_insert? }
|
||||
end
|
||||
end
|
||||
|
||||
class AdapterForeignKeyTest < ActiveRecord::TestCase
|
||||
|
@ -37,24 +37,6 @@ def test_dump_schema_information_outputs_lexically_ordered_versions
|
||||
ActiveRecord::SchemaMigration.delete_all
|
||||
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
|
||||
output = standard_dump
|
||||
assert_match %r{create_table "accounts"}, output
|
||||
@ -192,7 +174,7 @@ def test_schema_dumps_index_columns_in_right_order
|
||||
|
||||
def test_schema_dumps_partial_indices
|
||||
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
|
||||
else
|
||||
assert_equal 't.index ["firm_id", "type"], name: "company_partial_index"', index_definition
|
||||
|
Loading…
Reference in New Issue
Block a user