From b2abc1050dbdf2a7a7f02acbd9469fb11ba64ae8 Mon Sep 17 00:00:00 2001 From: Bruce Adams Date: Wed, 18 Dec 2019 22:14:22 -0500 Subject: [PATCH 1/2] Disable database triggers during import - This allows `updated_at` field values to be loaded during import. Before this change, `updated_at` was set to when the import ran, overwriting the values being loaded. - Also, the import completes in about one fifth the time (on my slow MacBook Air). --- src/tasks/dump_db/dump-import.sql.hbs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/tasks/dump_db/dump-import.sql.hbs b/src/tasks/dump_db/dump-import.sql.hbs index 49508e7e35a..7ffe01a53e3 100644 --- a/src/tasks/dump_db/dump-import.sql.hbs +++ b/src/tasks/dump_db/dump-import.sql.hbs @@ -1,3 +1,10 @@ +BEGIN; + -- Disable triggers on each table. +{{~#each tables}} + ALTER TABLE "{{this.name}}" DISABLE TRIGGER ALL; +{{~/each}} +COMMIT; + BEGIN; -- Set defaults for non-nullable columns not included in the dump. {{~#each tables as |table|}} @@ -23,3 +30,10 @@ BEGIN; {{~/each}} {{~/each}} COMMIT; + +BEGIN; + -- Reenable triggers on each table. +{{~#each tables}} + ALTER TABLE "{{this.name}}" ENABLE TRIGGER ALL; +{{~/each}} +COMMIT; From 74150742dc18529c9ec00c7afa00d373d5fff711 Mon Sep 17 00:00:00 2001 From: Bruce Adams Date: Thu, 19 Dec 2019 07:48:43 -0500 Subject: [PATCH 2/2] Import database in a single transaction --- src/tasks/dump_db/dump-import.sql.hbs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/tasks/dump_db/dump-import.sql.hbs b/src/tasks/dump_db/dump-import.sql.hbs index 7ffe01a53e3..1d4f56b5ce1 100644 --- a/src/tasks/dump_db/dump-import.sql.hbs +++ b/src/tasks/dump_db/dump-import.sql.hbs @@ -3,9 +3,7 @@ BEGIN; {{~#each tables}} ALTER TABLE "{{this.name}}" DISABLE TRIGGER ALL; {{~/each}} -COMMIT; -BEGIN; -- Set defaults for non-nullable columns not included in the dump. {{~#each tables as |table|}} {{~#each column_defaults}} @@ -29,9 +27,7 @@ BEGIN; ALTER TABLE "{{table.name}}" ALTER COLUMN "{{@key}}" DROP DEFAULT; {{~/each}} {{~/each}} -COMMIT; -BEGIN; -- Reenable triggers on each table. {{~#each tables}} ALTER TABLE "{{this.name}}" ENABLE TRIGGER ALL;