Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update migration query to make it work with existing view #2308

Merged
merged 1 commit into from
Dec 12, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,2 +1,28 @@
/* SPDX-License-Identifier: Apache-2.0 */
ALTER TABLE dataset_symlinks ALTER COLUMN name TYPE VARCHAR;

DO
$$
DECLARE
datasets_view_exists boolean;
datasets_view_definition text;
BEGIN
SELECT EXISTS (
SELECT * FROM information_schema.views
WHERE table_schema='public' AND table_name='datasets_view'
) INTO datasets_view_exists;

IF datasets_view_exists THEN
-- Altering is not allowed when the column is being used from views. So here,
-- we temporarily drop the view before altering and recreate it.
SELECT view_definition FROM information_schema.views
WHERE table_schema='public' AND table_name='datasets_view'
INTO datasets_view_definition;

DROP VIEW datasets_view;
ALTER TABLE dataset_symlinks ALTER COLUMN name TYPE VARCHAR;
EXECUTE format('CREATE VIEW datasets_view AS %s', datasets_view_definition);
ELSE
ALTER TABLE dataset_symlinks ALTER COLUMN name TYPE VARCHAR;
END IF;
Comment on lines +8 to +26
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

😳

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's an overkill, as

DROP VIEW IF EXISTS datasets_view;

at the beginning of the script should be enough as in PR:
https://github.com/MarquezProject/marquez/pull/2313/files

END
$$ LANGUAGE plpgsql;