-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #392 from oleksiiRybak/postgres-to-auroradb-migration
postgresql to aurora db migration fix
- Loading branch information
Showing
2 changed files
with
32 additions
and
11 deletions.
There are no files selected for viewing
36 changes: 26 additions & 10 deletions
36
mdm-core/grails-app/conf/db/migration/core/V5_1_3__delete_invalid_breadcrumb_trees.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,26 +1,42 @@ | ||
-- before mdm-core version 5.2.0, child BreadcrumbTrees were not deleted when parent models were deleted | ||
-- clean up orphaned BreadcrumbTrees | ||
|
||
CREATE TEMPORARY TABLE valid_breadcrumb_trees_temp AS | ||
CREATE TEMPORARY TABLE IF NOT EXISTS valid_breadcrumb_trees_temp AS | ||
WITH RECURSIVE valid_breadcrumb_trees AS MATERIALIZED ( | ||
SELECT * | ||
FROM core.breadcrumb_tree | ||
WHERE top_breadcrumb_tree = TRUE | ||
UNION ALL | ||
SELECT c.* | ||
FROM core.breadcrumb_tree c | ||
INNER JOIN valid_breadcrumb_trees v | ||
INNER JOIN valid_breadcrumb_trees v | ||
ON c.parent_id = v.id | ||
) | ||
SELECT * | ||
FROM valid_breadcrumb_trees; | ||
|
||
ALTER TABLE core.breadcrumb_tree DISABLE TRIGGER ALL; | ||
DELETE FROM core.breadcrumb_tree; | ||
ALTER TABLE core.breadcrumb_tree ENABLE TRIGGER ALL; | ||
SELECT * FROM valid_breadcrumb_trees; | ||
|
||
DO | ||
$$ | ||
BEGIN | ||
IF EXISTS (SELECT aurora_version()) THEN | ||
SET session_replication_role = replica; | ||
DELETE FROM core.breadcrumb_tree; | ||
SET session_replication_role = DEFAULT; | ||
ELSE | ||
ALTER TABLE core.breadcrumb_tree DISABLE TRIGGER ALL; | ||
DELETE FROM core.breadcrumb_tree; | ||
ALTER TABLE core.breadcrumb_tree ENABLE TRIGGER ALL; | ||
END IF; | ||
|
||
exception | ||
when undefined_function then | ||
ALTER TABLE core.breadcrumb_tree DISABLE TRIGGER ALL; | ||
DELETE FROM core.breadcrumb_tree; | ||
ALTER TABLE core.breadcrumb_tree ENABLE TRIGGER ALL; | ||
END | ||
$$; | ||
|
||
INSERT INTO core.breadcrumb_tree | ||
SELECT * | ||
FROM valid_breadcrumb_trees_temp; | ||
SELECT * FROM valid_breadcrumb_trees_temp; | ||
|
||
CREATE INDEX breadcrumb_tree_tree_string_idx ON core.breadcrumb_tree (tree_string text_pattern_ops); | ||
CREATE INDEX IF NOT EXISTS breadcrumb_tree_tree_string_idx ON core.breadcrumb_tree (tree_string text_pattern_ops); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters