Skip to content

Commit ae0641d

Browse files
authored
Merge pull request #1048 from dr-itz/rails6-dev
Rails 6.0 fixes
2 parents 5a5a322 + 81738ab commit ae0641d

File tree

2 files changed

+40
-8
lines changed

2 files changed

+40
-8
lines changed

lib/arjdbc/postgresql/adapter.rb

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,10 @@ def supports_optimizer_hints?
303303
@has_pg_hint_plan
304304
end
305305

306+
def supports_common_table_expressions?
307+
true
308+
end
309+
306310
def supports_lazy_transactions?
307311
true
308312
end
@@ -379,13 +383,23 @@ def exec_insert(sql, name = nil, binds = [], pk = nil, sequence_name = nil)
379383
end
380384
end
381385

386+
def execute_batch(statements, name = nil)
387+
if statements.is_a? Array
388+
execute(combine_multi_statements(statements), name)
389+
else
390+
execute(statements, name)
391+
end
392+
end
393+
382394
def explain(arel, binds = [])
383395
sql, binds = to_sql_and_binds(arel, binds)
384396
ActiveRecord::ConnectionAdapters::PostgreSQL::ExplainPrettyPrinter.new.pp(exec_query("EXPLAIN #{sql}", 'EXPLAIN', binds))
385397
end
386398

387399
# from ActiveRecord::ConnectionAdapters::PostgreSQL::DatabaseStatements
388-
READ_QUERY = ActiveRecord::ConnectionAdapters::AbstractAdapter.build_read_query_regexp(:begin, :commit, :explain, :select, :set, :show, :release, :savepoint, :rollback) # :nodoc:
400+
READ_QUERY = ActiveRecord::ConnectionAdapters::AbstractAdapter.build_read_query_regexp(
401+
:begin, :commit, :explain, :select, :set, :show, :release, :savepoint, :rollback, :with
402+
) # :nodoc:
389403
private_constant :READ_QUERY
390404

391405
def write_query?(sql) # :nodoc:
@@ -435,7 +449,12 @@ def build_insert_sql(insert) # :nodoc:
435449
end
436450

437451
def build_truncate_statements(*table_names)
438-
"TRUNCATE TABLE #{table_names.map(&method(:quote_table_name)).join(", ")}"
452+
["TRUNCATE TABLE #{table_names.flatten.map(&method(:quote_table_name)).join(", ")}"]
453+
end
454+
455+
def truncate(table_name, name = nil)
456+
ActiveRecord::Base.clear_query_caches_for_current_thread if @query_cache_enabled
457+
execute("TRUNCATE TABLE #{quote_table_name(table_name)}", name)
439458
end
440459

441460
def all_schemas

lib/arjdbc/sqlite3/adapter.rb

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,10 @@ def supports_json?
9797
true
9898
end
9999

100+
def supports_common_table_expressions?
101+
database_version >= "3.8.3"
102+
end
103+
100104
def supports_insert_on_conflict?
101105
database_version >= "3.24.0"
102106
end
@@ -154,7 +158,9 @@ def disable_referential_integrity # :nodoc:
154158
# DATABASE STATEMENTS ======================================
155159
#++
156160

157-
READ_QUERY = ActiveRecord::ConnectionAdapters::AbstractAdapter.build_read_query_regexp(:begin, :commit, :explain, :select, :pragma, :release, :savepoint, :rollback) # :nodoc:
161+
READ_QUERY = ActiveRecord::ConnectionAdapters::AbstractAdapter.build_read_query_regexp(
162+
:begin, :commit, :explain, :select, :pragma, :release, :savepoint, :rollback, :with
163+
) # :nodoc:
158164
private_constant :READ_QUERY
159165

160166
def write_query?(sql) # :nodoc:
@@ -317,11 +323,17 @@ def get_database_version # :nodoc:
317323
SQLite3Adapter::Version.new(query_value("SELECT sqlite_version(*)"))
318324
end
319325

326+
def build_truncate_statement(table_name)
327+
"DELETE FROM #{quote_table_name(table_name)}"
328+
end
329+
320330
def build_truncate_statements(*table_names)
321-
truncate_tables = table_names.map do |table_name|
322-
"DELETE FROM #{quote_table_name(table_name)}"
323-
end
324-
combine_multi_statements(truncate_tables)
331+
table_names.flatten.map { |table_name| build_truncate_statement table_name }
332+
end
333+
334+
def truncate(table_name, name = nil)
335+
ActiveRecord::Base.clear_query_caches_for_current_thread if @query_cache_enabled
336+
execute(build_truncate_statement(table_name), name)
325337
end
326338

327339
def check_version
@@ -352,7 +364,8 @@ def table_structure(table_name)
352364
# See: https://www.sqlite.org/lang_altertable.html
353365
# SQLite has an additional restriction on the ALTER TABLE statement
354366
def invalid_alter_table_type?(type, options)
355-
type.to_sym == :primary_key || options[:primary_key]
367+
type.to_sym == :primary_key || options[:primary_key] ||
368+
options[:null] == false && options[:default].nil?
356369
end
357370

358371
def alter_table(table_name, foreign_keys = foreign_keys(table_name), **options)

0 commit comments

Comments
 (0)