Merge pull request #45373 from ghiculescu/sqlite3-strict-database-yml

Let sqlite `strict` config read from `database.yml` or config
This commit is contained in:
Jean Boussier 2022-06-16 21:24:09 +02:00 committed by GitHub
commit 2077524d5e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 40 additions and 1 deletions

@ -32,9 +32,10 @@ def sqlite3_connection(config)
Dir.mkdir(dirname) unless File.directory?(dirname)
end
config[:strict] = ConnectionAdapters::SQLite3Adapter.strict_strings_by_default unless config.key?(:strict)
db = SQLite3::Database.new(
config[:database].to_s,
config.merge(results_as_hash: true, strict: ConnectionAdapters::SQLite3Adapter.strict_strings_by_default)
config.merge(results_as_hash: true)
)
ConnectionAdapters::SQLite3Adapter.new(db, logger, nil, config)

@ -635,6 +635,44 @@ def test_strict_strings_by_default
end
end
def test_strict_strings_by_default_and_true_in_database_yml
conn = Base.sqlite3_connection(database: ":memory:", adapter: "sqlite3", strict: true)
conn.create_table :testings
error = assert_raises(StandardError) do
conn.add_index :testings, :non_existent
end
assert_match(/no such column: non_existent/, error.message)
with_strict_strings_by_default do
conn = Base.sqlite3_connection(database: ":memory:", adapter: "sqlite3", strict: true)
conn.create_table :testings
error = assert_raises(StandardError) do
conn.add_index :testings, :non_existent2
end
assert_match(/no such column: non_existent2/, error.message)
end
end
def test_strict_strings_by_default_and_false_in_database_yml
conn = Base.sqlite3_connection(database: ":memory:", adapter: "sqlite3", strict: false)
conn.create_table :testings
assert_nothing_raised do
conn.add_index :testings, :non_existent
end
with_strict_strings_by_default do
conn = Base.sqlite3_connection(database: ":memory:", adapter: "sqlite3", strict: false)
conn.create_table :testings
assert_nothing_raised do
conn.add_index :testings, :non_existent
end
end
end
private
def assert_logged(logs)
subscriber = SQLSubscriber.new