Created
November 12, 2021 19:06
-
-
Save fitnr/f0e8d23be3cc398893ed4794ac4d9f6f to your computer and use it in GitHub Desktop.
recursively get dependent matviews
This file contains hidden or 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
/* | |
* Arguments: | |
* :matview - schema-qualified name of materialized view | |
*/ | |
WITH RECURSIVE vvv AS ( | |
SELECT DISTINCT ON (objid, refobjid) v.oid::regclass AS view, 1 AS level | |
FROM pg_depend AS d | |
JOIN pg_rewrite AS r ON r.oid = d.objid | |
JOIN pg_class AS v ON v.oid = r.ev_class | |
JOIN pg_class as c ON c.oid = d.refobjid AND c.oid::regclass != v.oid::regclass | |
WHERE v.relkind = 'm' AND d.deptype = 'n' | |
AND d.classid = 'pg_rewrite'::regclass | |
AND d.refclassid = 'pg_class'::regclass | |
AND d.refobjid = :'matview'::regclass | |
UNION ALL | |
SELECT DISTINCT ON (objid, refobjid) v.oid::regclass AS view, vvv.level + 1 | |
FROM vvv | |
JOIN pg_depend AS d ON vvv.view = d.refobjid | |
JOIN pg_rewrite AS r ON r.oid = d.objid | |
JOIN pg_class AS v ON v.oid = r.ev_class | |
JOIN pg_class as c ON c.oid = d.refobjid AND c.oid::regclass != v.oid::regclass | |
WHERE v.relkind = 'm' AND d.deptype = 'n' | |
AND d.classid = 'pg_rewrite'::regclass | |
AND d.refclassid = 'pg_class'::regclass | |
AND v.oid <> vvv.view | |
) SELECT * FROM vvv |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment