aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb11
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb12
2 files changed, 10 insertions, 13 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb b/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb
index abda16b342..d663b59444 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb
@@ -372,12 +372,13 @@ module ActiveRecord
build_fixture_sql(fixtures, table_name)
end.compact
- total_sql = Array.wrap(combine_multi_statements(fixture_inserts, tables_to_delete))
+ table_deletes = tables_to_delete.map { |table| "DELETE FROM #{quote_table_name table}".dup }
+ total_sql = Array.wrap(combine_multi_statements(table_deletes + fixture_inserts))
disable_referential_integrity do
transaction(requires_new: true) do
total_sql.each do |sql|
- execute sql, "Fixtures Insert"
+ execute sql, "Fixtures Load"
yield if block_given?
end
end
@@ -445,10 +446,8 @@ module ActiveRecord
manager.to_sql
end
- def combine_multi_statements(fixture_inserts, tables_to_delete)
- tables_to_delete.each { |table| delete "DELETE FROM #{quote_table_name(table)}", "Fixture Delete" }
-
- fixture_inserts.join(";\n")
+ def combine_multi_statements(total_sql)
+ total_sql.join(";\n")
end
# Returns a subquery for the given key using the join information.
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
index 4537d6455d..5e6ab1c16d 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb
@@ -545,14 +545,12 @@ module ActiveRecord
private
- def combine_multi_statements(fixture_inserts, tables_to_delete)
- super
-
- fixture_inserts.each_with_object([]) do |sql, total_sql|
- previous_packet = total_sql.last
+ def combine_multi_statements(total_sql)
+ total_sql.each_with_object([]) do |sql, total_sql_chunks|
+ previous_packet = total_sql_chunks.last
sql << ";\n"
- if max_allowed_packet_reached?(sql, previous_packet) || total_sql.empty?
- total_sql << sql
+ if max_allowed_packet_reached?(sql, previous_packet) || total_sql_chunks.empty?
+ total_sql_chunks << sql
else
previous_packet << sql
end