From 4f34bc0f0eb4ed33cb010055c0fe02c892b10631 Mon Sep 17 00:00:00 2001 From: Akshay Joshi Date: Tue, 14 Jul 2020 18:34:50 +0530 Subject: [PATCH] Added missing dependencies/dependent and corrected some wrongly identified. Fixes #5666 --- docs/en_US/release_notes_4_24.rst | 1 + .../9.1_plus => gpdb/5_plus}/dependencies.sql | 48 ++++-- .../depends/gpdb/5_plus/dependents.sql | 73 +++++++++ .../5_plus}/role_dependencies.sql | 0 .../depends/pg/11_plus/dependencies.sql | 75 +++++++++ .../depends/pg/11_plus/dependents.sql | 75 +++++++++ .../depends/pg/12_plus/dependencies.sql | 75 +++++++++ .../depends/pg/12_plus/dependents.sql | 75 +++++++++ .../12_plus => pg/9.1_plus}/dependencies.sql | 50 ++++-- .../depends/pg/9.1_plus/dependents.sql | 73 +++++++++ .../depends/pg/9.1_plus/role_dependencies.sql | 4 + .../depends/pg/9.5_plus/dependencies.sql | 75 +++++++++ .../depends/pg/9.5_plus/dependents.sql | 75 +++++++++ .../depends/ppas/11_plus/dependencies.sql | 79 ++++++++++ .../depends/ppas/11_plus/dependents.sql | 79 ++++++++++ .../depends/ppas/12_plus/dependencies.sql | 79 ++++++++++ .../depends/ppas/12_plus/dependents.sql | 79 ++++++++++ .../depends/ppas/9.1_plus/dependencies.sql | 77 ++++++++++ .../depends/ppas/9.1_plus/dependents.sql | 77 ++++++++++ .../ppas/9.1_plus/role_dependencies.sql | 4 + .../depends/ppas/9.5_plus/dependencies.sql | 79 ++++++++++ .../depends/ppas/9.5_plus/dependents.sql | 79 ++++++++++ .../depends/sql/12_plus/dependents.sql | 50 ------ .../depends/sql/9.1_plus/dependents.sql | 50 ------ .../depends/sql/default/dependencies.sql | 48 ------ .../depends/sql/default/dependents.sql | 47 ------ .../servers/tests/test_dependencies_sql.py | 2 +- .../servers/tests/test_dependents_sql.py | 2 +- .../tests/test_role_dependencies_sql.py | 16 +- web/pgadmin/browser/utils.py | 143 +++++++++--------- .../dependencies/static/js/dependencies.js | 2 +- .../misc/dependents/static/js/dependents.js | 2 +- 32 files changed, 1386 insertions(+), 307 deletions(-) rename web/pgadmin/browser/server_groups/servers/templates/depends/{sql/9.1_plus => gpdb/5_plus}/dependencies.sql (50%) create mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/gpdb/5_plus/dependents.sql rename web/pgadmin/browser/server_groups/servers/templates/depends/{sql/default => gpdb/5_plus}/role_dependencies.sql (100%) create mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/pg/11_plus/dependencies.sql create mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/pg/11_plus/dependents.sql create mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/pg/12_plus/dependencies.sql create mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/pg/12_plus/dependents.sql rename web/pgadmin/browser/server_groups/servers/templates/depends/{sql/12_plus => pg/9.1_plus}/dependencies.sql (50%) create mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.1_plus/dependents.sql create mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.1_plus/role_dependencies.sql create mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.5_plus/dependencies.sql create mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.5_plus/dependents.sql create mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/ppas/11_plus/dependencies.sql create mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/ppas/11_plus/dependents.sql create mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/ppas/12_plus/dependencies.sql create mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/ppas/12_plus/dependents.sql create mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.1_plus/dependencies.sql create mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.1_plus/dependents.sql create mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.1_plus/role_dependencies.sql create mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.5_plus/dependencies.sql create mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.5_plus/dependents.sql delete mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/sql/12_plus/dependents.sql delete mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/sql/9.1_plus/dependents.sql delete mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/sql/default/dependencies.sql delete mode 100644 web/pgadmin/browser/server_groups/servers/templates/depends/sql/default/dependents.sql diff --git a/docs/en_US/release_notes_4_24.rst b/docs/en_US/release_notes_4_24.rst index 75ce28ad5..a16216f79 100644 --- a/docs/en_US/release_notes_4_24.rst +++ b/docs/en_US/release_notes_4_24.rst @@ -20,6 +20,7 @@ Housekeeping | `Issue #5323 `_ - Improve code coverage and API test cases for Foreign Data Wrapper. | `Issue #5326 `_ - Improve code coverage and API test cases for Domain and Domain Constraints. | `Issue #5329 `_ - Improve code coverage and API test cases for FTS Configuration, FTS Parser, FTS Dictionaries, and FTS Template. +| `Issue #5666 `_ - Added missing dependencies/dependent and corrected some wrongly identified. Bug fixes ********* diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/sql/9.1_plus/dependencies.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/gpdb/5_plus/dependencies.sql similarity index 50% rename from web/pgadmin/browser/server_groups/servers/templates/depends/sql/9.1_plus/dependencies.sql rename to web/pgadmin/browser/server_groups/servers/templates/depends/gpdb/5_plus/dependencies.sql index 6600f2db7..33b7d2acc 100644 --- a/web/pgadmin/browser/server_groups/servers/templates/depends/sql/9.1_plus/dependencies.sql +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/gpdb/5_plus/dependencies.sql @@ -1,24 +1,33 @@ SELECT DISTINCT dep.deptype, dep.refclassid, cl.relkind, ad.adbin, ad.adsrc, - CASE WHEN cl.relkind IS NOT NULL THEN cl.relkind || COALESCE(dep.refobjsubid::character varying, '') - WHEN tg.oid IS NOT NULL THEN 'T'::text - WHEN ty.oid IS NOT NULL AND ty.typbasetype = 0 THEN 'y'::text - WHEN ty.oid IS NOT NULL AND ty.typbasetype != 0 THEN 'd'::text + CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END + WHEN tg.oid IS NOT NULL THEN 'Tr'::text + WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END WHEN ns.oid IS NOT NULL THEN 'n'::text - WHEN pr.oid IS NOT NULL AND prtyp.typname = 'trigger' THEN 't'::text - WHEN pr.oid IS NOT NULL THEN 'P'::text + WHEN pr.oid IS NOT NULL AND (prtyp.typname = 'trigger' OR prtyp.typname = 'event_trigger') THEN 'Pt'::text + WHEN pr.oid IS NOT NULL THEN 'Pf'::text WHEN la.oid IS NOT NULL THEN 'l'::text - WHEN rw.oid IS NOT NULL THEN 'R'::text - WHEN co.oid IS NOT NULL THEN 'C'::text || contype + WHEN rw.oid IS NOT NULL THEN 'Rl'::text + WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END WHEN ad.oid IS NOT NULL THEN 'A'::text - WHEN fs.oid IS NOT NULL THEN 'F'::text - WHEN fdw.oid IS NOT NULL THEN 'f'::text + WHEN fs.oid IS NOT NULL THEN 'Fs'::text + WHEN fdw.oid IS NOT NULL THEN 'Fw'::text + WHEN evt.oid IS NOT NULL THEN 'Et'::text + WHEN col.oid IS NOT NULL THEN 'Co'::text + WHEN ftsc.oid IS NOT NULL THEN 'Fc'::text + WHEN ftsp.oid IS NOT NULL THEN 'Fp'::text + WHEN ftsd.oid IS NOT NULL THEN 'Fd'::text + WHEN ftst.oid IS NOT NULL THEN 'Ft'::text + WHEN ext.oid IS NOT NULL THEN 'Ex'::text ELSE '' END AS type, COALESCE(coc.relname, clrw.relname) AS ownertable, CASE WHEN cl.relname IS NOT NULL OR att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') - ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, fs.srvname, fdw.fdwname) + ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, + fs.srvname, fdw.fdwname, evt.evtname, col.collname, ftsc.cfgname, ftsd.dictname, ftsp.prsname, + ftst.tmplname, ext.extname) END AS refname, - COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname) AS nspname, + COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname, colns.nspname, ftscns.nspname, + ftsdns.nspname, ftspns.nspname, ftstns.nspname) AS nspname, CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited FROM pg_depend dep @@ -44,8 +53,21 @@ LEFT JOIN pg_foreign_data_wrapper fdw ON fdw.oid=dep.refobjid LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.refobjid) LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.refobjid) +LEFT JOIN pg_event_trigger evt ON evt.oid=dep.refobjid +LEFT JOIN pg_collation col ON col.oid=dep.refobjid +LEFT JOIN pg_namespace colns ON col.collnamespace=colns.oid +LEFT JOIN pg_ts_config ftsc ON ftsc.oid=dep.refobjid +LEFT JOIN pg_namespace ftscns ON ftsc.cfgnamespace=ftscns.oid +LEFT JOIN pg_ts_dict ftsd ON ftsd.oid=dep.refobjid +LEFT JOIN pg_namespace ftsdns ON ftsd.dictnamespace=ftsdns.oid +LEFT JOIN pg_ts_parser ftsp ON ftsp.oid=dep.refobjid +LEFT JOIN pg_namespace ftspns ON ftsp.prsnamespace=ftspns.oid +LEFT JOIN pg_ts_template ftst ON ftst.oid=dep.refobjid +LEFT JOIN pg_namespace ftstns ON ftst.tmplnamespace=ftstns.oid +LEFT JOIN pg_extension ext ON ext.oid=dep.refobjid {{where_clause}} AND refclassid IN ( SELECT oid FROM pg_class WHERE relname IN ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', - 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper')) + 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper', + 'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension')) ORDER BY refclassid, cl.relkind diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/gpdb/5_plus/dependents.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/gpdb/5_plus/dependents.sql new file mode 100644 index 000000000..0b85a3759 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/gpdb/5_plus/dependents.sql @@ -0,0 +1,73 @@ +SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc, + CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.objsubid::text, '') ELSE cl.relkind END + WHEN tg.oid IS NOT NULL THEN 'Tr'::text + WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END + WHEN ns.oid IS NOT NULL THEN 'n'::text + WHEN pr.oid IS NOT NULL AND (prtyp.typname = 'trigger' OR prtyp.typname = 'event_trigger') THEN 'Pt'::text + WHEN pr.oid IS NOT NULL THEN 'Pf'::text + WHEN la.oid IS NOT NULL THEN 'l'::text + WHEN rw.oid IS NOT NULL THEN 'Rl'::text + WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END + WHEN ad.oid IS NOT NULL THEN 'A'::text + WHEN fs.oid IS NOT NULL THEN 'Fs'::text + WHEN fdw.oid IS NOT NULL THEN 'Fw'::text + WHEN evt.oid IS NOT NULL THEN 'Et'::text + WHEN col.oid IS NOT NULL THEN 'Co'::text + WHEN ftsc.oid IS NOT NULL THEN 'Fc'::text + WHEN ftsp.oid IS NOT NULL THEN 'Fp'::text + WHEN ftsd.oid IS NOT NULL THEN 'Fd'::text + WHEN ftst.oid IS NOT NULL THEN 'Ft'::text + WHEN ext.oid IS NOT NULL THEN 'Ex'::text + ELSE '' + END AS type, + COALESCE(coc.relname, clrw.relname) AS ownertable, + CASE WHEN cl.relname IS NOT NULL AND att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') + ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, + fs.srvname, fdw.fdwname, evt.evtname, col.collname, ftsc.cfgname, ftsd.dictname, ftsp.prsname, + ftst.tmplname, ext.extname) + END AS refname, + COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname, colns.nspname, ftscns.nspname, + ftsdns.nspname, ftspns.nspname, ftstns.nspname) AS nspname, + CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, + CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited +FROM pg_depend dep +LEFT JOIN pg_class cl ON dep.objid=cl.oid +LEFT JOIN pg_attribute att ON dep.objid=att.attrelid AND dep.objsubid=att.attnum +LEFT JOIN pg_namespace nsc ON cl.relnamespace=nsc.oid +LEFT JOIN pg_proc pr ON dep.objid=pr.oid +LEFT JOIN pg_namespace nsp ON pr.pronamespace=nsp.oid +LEFT JOIN pg_trigger tg ON dep.objid=tg.oid +LEFT JOIN pg_type ty ON dep.objid=ty.oid +LEFT JOIN pg_namespace nst ON ty.typnamespace=nst.oid +LEFT JOIN pg_constraint co ON dep.objid=co.oid +LEFT JOIN pg_class coc ON co.conrelid=coc.oid +LEFT JOIN pg_namespace nso ON co.connamespace=nso.oid +LEFT JOIN pg_rewrite rw ON dep.objid=rw.oid +LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class +LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid +LEFT JOIN pg_language la ON dep.objid=la.oid +LEFT JOIN pg_namespace ns ON dep.objid=ns.oid +LEFT JOIN pg_attrdef ad ON ad.oid=dep.objid +LEFT JOIN pg_foreign_server fs ON fs.oid=dep.objid +LEFT JOIN pg_foreign_data_wrapper fdw ON fdw.oid=dep.objid +LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype +LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.objid) +LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.objid) +LEFT JOIN pg_event_trigger evt ON evt.oid=dep.objid +LEFT JOIN pg_collation col ON col.oid=dep.objid +LEFT JOIN pg_namespace colns ON col.collnamespace=colns.oid +LEFT JOIN pg_ts_config ftsc ON ftsc.oid=dep.objid +LEFT JOIN pg_namespace ftscns ON ftsc.cfgnamespace=ftscns.oid +LEFT JOIN pg_ts_dict ftsd ON ftsd.oid=dep.objid +LEFT JOIN pg_namespace ftsdns ON ftsd.dictnamespace=ftsdns.oid +LEFT JOIN pg_ts_parser ftsp ON ftsp.oid=dep.objid +LEFT JOIN pg_namespace ftspns ON ftsp.prsnamespace=ftspns.oid +LEFT JOIN pg_ts_template ftst ON ftst.oid=dep.objid +LEFT JOIN pg_namespace ftstns ON ftst.tmplnamespace=ftstns.oid +LEFT JOIN pg_extension ext ON ext.oid=dep.objid +{{where_clause}} AND +classid IN ( SELECT oid FROM pg_class WHERE relname IN + ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', + 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper', + 'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension')) +ORDER BY classid, cl.relkind diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/sql/default/role_dependencies.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/gpdb/5_plus/role_dependencies.sql similarity index 100% rename from web/pgadmin/browser/server_groups/servers/templates/depends/sql/default/role_dependencies.sql rename to web/pgadmin/browser/server_groups/servers/templates/depends/gpdb/5_plus/role_dependencies.sql diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/pg/11_plus/dependencies.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/pg/11_plus/dependencies.sql new file mode 100644 index 000000000..d1ff693a9 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/pg/11_plus/dependencies.sql @@ -0,0 +1,75 @@ +SELECT DISTINCT dep.deptype, dep.refclassid, cl.relkind, ad.adbin, ad.adsrc, + CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END + WHEN tg.oid IS NOT NULL THEN 'Tr'::text + WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END + WHEN ns.oid IS NOT NULL THEN 'n'::text + WHEN pr.oid IS NOT NULL AND (prtyp.typname = 'trigger' OR prtyp.typname = 'event_trigger') THEN 'Pt'::text + WHEN pr.oid IS NOT NULL THEN CASE WHEN pr.prokind = 'p' THEN 'Pp'::text ELSE 'Pf'::text END + WHEN la.oid IS NOT NULL THEN 'l'::text + WHEN rw.oid IS NOT NULL THEN 'Rl'::text + WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END + WHEN ad.oid IS NOT NULL THEN 'A'::text + WHEN fs.oid IS NOT NULL THEN 'Fs'::text + WHEN fdw.oid IS NOT NULL THEN 'Fw'::text + WHEN evt.oid IS NOT NULL THEN 'Et'::text + WHEN col.oid IS NOT NULL THEN 'Co'::text + WHEN ftsc.oid IS NOT NULL THEN 'Fc'::text + WHEN ftsp.oid IS NOT NULL THEN 'Fp'::text + WHEN ftsd.oid IS NOT NULL THEN 'Fd'::text + WHEN ftst.oid IS NOT NULL THEN 'Ft'::text + WHEN ext.oid IS NOT NULL THEN 'Ex'::text + WHEN pl.oid IS NOT NULL THEN 'Rs'::text + ELSE '' + END AS type, + COALESCE(coc.relname, clrw.relname) AS ownertable, + CASE WHEN cl.relname IS NOT NULL OR att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') + ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, + fs.srvname, fdw.fdwname, evt.evtname, col.collname, ftsc.cfgname, ftsd.dictname, ftsp.prsname, + ftst.tmplname, ext.extname, pl.polname) + END AS refname, + COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname, colns.nspname, ftscns.nspname, + ftsdns.nspname, ftspns.nspname, ftstns.nspname) AS nspname, + CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, + CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited +FROM pg_depend dep +LEFT JOIN pg_class cl ON dep.refobjid=cl.oid +LEFT JOIN pg_attribute att ON dep.refobjid=att.attrelid AND dep.refobjsubid=att.attnum +LEFT JOIN pg_namespace nsc ON cl.relnamespace=nsc.oid +LEFT JOIN pg_proc pr ON dep.refobjid=pr.oid +LEFT JOIN pg_namespace nsp ON pr.pronamespace=nsp.oid +LEFT JOIN pg_trigger tg ON dep.refobjid=tg.oid +LEFT JOIN pg_type ty ON dep.refobjid=ty.oid +LEFT JOIN pg_namespace nst ON ty.typnamespace=nst.oid +LEFT JOIN pg_constraint co ON dep.refobjid=co.oid +LEFT JOIN pg_class coc ON co.conrelid=coc.oid +LEFT JOIN pg_namespace nso ON co.connamespace=nso.oid +LEFT JOIN pg_rewrite rw ON dep.refobjid=rw.oid +LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class +LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid +LEFT JOIN pg_language la ON dep.refobjid=la.oid +LEFT JOIN pg_namespace ns ON dep.refobjid=ns.oid +LEFT JOIN pg_attrdef ad ON ad.adrelid=att.attrelid AND ad.adnum=att.attnum +LEFT JOIN pg_foreign_server fs ON fs.oid=dep.refobjid +LEFT JOIN pg_foreign_data_wrapper fdw ON fdw.oid=dep.refobjid +LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype +LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.refobjid) +LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.refobjid) +LEFT JOIN pg_event_trigger evt ON evt.oid=dep.refobjid +LEFT JOIN pg_collation col ON col.oid=dep.refobjid +LEFT JOIN pg_namespace colns ON col.collnamespace=colns.oid +LEFT JOIN pg_ts_config ftsc ON ftsc.oid=dep.refobjid +LEFT JOIN pg_namespace ftscns ON ftsc.cfgnamespace=ftscns.oid +LEFT JOIN pg_ts_dict ftsd ON ftsd.oid=dep.refobjid +LEFT JOIN pg_namespace ftsdns ON ftsd.dictnamespace=ftsdns.oid +LEFT JOIN pg_ts_parser ftsp ON ftsp.oid=dep.refobjid +LEFT JOIN pg_namespace ftspns ON ftsp.prsnamespace=ftspns.oid +LEFT JOIN pg_ts_template ftst ON ftst.oid=dep.refobjid +LEFT JOIN pg_namespace ftstns ON ftst.tmplnamespace=ftstns.oid +LEFT JOIN pg_extension ext ON ext.oid=dep.refobjid +LEFT JOIN pg_policy pl ON pl.oid=dep.refobjid +{{where_clause}} AND +refclassid IN ( SELECT oid FROM pg_class WHERE relname IN + ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', + 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper', + 'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension', 'pg_policy')) +ORDER BY refclassid, cl.relkind diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/pg/11_plus/dependents.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/pg/11_plus/dependents.sql new file mode 100644 index 000000000..6f2e48288 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/pg/11_plus/dependents.sql @@ -0,0 +1,75 @@ +SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc, + CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.objsubid::text, '') ELSE cl.relkind END + WHEN tg.oid IS NOT NULL THEN 'Tr'::text + WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END + WHEN ns.oid IS NOT NULL THEN 'n'::text + WHEN pr.oid IS NOT NULL AND (prtyp.typname = 'trigger' OR prtyp.typname = 'event_trigger') THEN 'Pt'::text + WHEN pr.oid IS NOT NULL THEN CASE WHEN pr.prokind = 'p' THEN 'Pp'::text ELSE 'Pf'::text END + WHEN la.oid IS NOT NULL THEN 'l'::text + WHEN rw.oid IS NOT NULL THEN 'Rl'::text + WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END + WHEN ad.oid IS NOT NULL THEN 'A'::text + WHEN fs.oid IS NOT NULL THEN 'Fs'::text + WHEN fdw.oid IS NOT NULL THEN 'Fw'::text + WHEN evt.oid IS NOT NULL THEN 'Et'::text + WHEN col.oid IS NOT NULL THEN 'Co'::text + WHEN ftsc.oid IS NOT NULL THEN 'Fc'::text + WHEN ftsp.oid IS NOT NULL THEN 'Fp'::text + WHEN ftsd.oid IS NOT NULL THEN 'Fd'::text + WHEN ftst.oid IS NOT NULL THEN 'Ft'::text + WHEN ext.oid IS NOT NULL THEN 'Ex'::text + WHEN pl.oid IS NOT NULL THEN 'Rs'::text + ELSE '' + END AS type, + COALESCE(coc.relname, clrw.relname) AS ownertable, + CASE WHEN cl.relname IS NOT NULL AND att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') + ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, + fs.srvname, fdw.fdwname, evt.evtname, col.collname, ftsc.cfgname, ftsd.dictname, ftsp.prsname, + ftst.tmplname, ext.extname, pl.polname) + END AS refname, + COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname, colns.nspname, ftscns.nspname, + ftsdns.nspname, ftspns.nspname, ftstns.nspname) AS nspname, + CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, + CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited +FROM pg_depend dep +LEFT JOIN pg_class cl ON dep.objid=cl.oid +LEFT JOIN pg_attribute att ON dep.objid=att.attrelid AND dep.objsubid=att.attnum +LEFT JOIN pg_namespace nsc ON cl.relnamespace=nsc.oid +LEFT JOIN pg_proc pr ON dep.objid=pr.oid +LEFT JOIN pg_namespace nsp ON pr.pronamespace=nsp.oid +LEFT JOIN pg_trigger tg ON dep.objid=tg.oid +LEFT JOIN pg_type ty ON dep.objid=ty.oid +LEFT JOIN pg_namespace nst ON ty.typnamespace=nst.oid +LEFT JOIN pg_constraint co ON dep.objid=co.oid +LEFT JOIN pg_class coc ON co.conrelid=coc.oid +LEFT JOIN pg_namespace nso ON co.connamespace=nso.oid +LEFT JOIN pg_rewrite rw ON dep.objid=rw.oid +LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class +LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid +LEFT JOIN pg_language la ON dep.objid=la.oid +LEFT JOIN pg_namespace ns ON dep.objid=ns.oid +LEFT JOIN pg_attrdef ad ON ad.oid=dep.objid +LEFT JOIN pg_foreign_server fs ON fs.oid=dep.objid +LEFT JOIN pg_foreign_data_wrapper fdw ON fdw.oid=dep.objid +LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype +LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.objid) +LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.objid) +LEFT JOIN pg_event_trigger evt ON evt.oid=dep.objid +LEFT JOIN pg_collation col ON col.oid=dep.objid +LEFT JOIN pg_namespace colns ON col.collnamespace=colns.oid +LEFT JOIN pg_ts_config ftsc ON ftsc.oid=dep.objid +LEFT JOIN pg_namespace ftscns ON ftsc.cfgnamespace=ftscns.oid +LEFT JOIN pg_ts_dict ftsd ON ftsd.oid=dep.objid +LEFT JOIN pg_namespace ftsdns ON ftsd.dictnamespace=ftsdns.oid +LEFT JOIN pg_ts_parser ftsp ON ftsp.oid=dep.objid +LEFT JOIN pg_namespace ftspns ON ftsp.prsnamespace=ftspns.oid +LEFT JOIN pg_ts_template ftst ON ftst.oid=dep.objid +LEFT JOIN pg_namespace ftstns ON ftst.tmplnamespace=ftstns.oid +LEFT JOIN pg_extension ext ON ext.oid=dep.objid +LEFT JOIN pg_policy pl ON pl.oid=dep.objid +{{where_clause}} AND +classid IN ( SELECT oid FROM pg_class WHERE relname IN + ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', + 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper', + 'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension', 'pg_policy')) +ORDER BY classid, cl.relkind diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/pg/12_plus/dependencies.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/pg/12_plus/dependencies.sql new file mode 100644 index 000000000..66363dd61 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/pg/12_plus/dependencies.sql @@ -0,0 +1,75 @@ +SELECT DISTINCT dep.deptype, dep.refclassid, cl.relkind, ad.adbin, pg_get_expr(ad.adbin, ad.adrelid) as adsrc, + CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END + WHEN tg.oid IS NOT NULL THEN 'Tr'::text + WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END + WHEN ns.oid IS NOT NULL THEN 'n'::text + WHEN pr.oid IS NOT NULL AND (prtyp.typname = 'trigger' OR prtyp.typname = 'event_trigger') THEN 'Pt'::text + WHEN pr.oid IS NOT NULL THEN CASE WHEN pr.prokind = 'p' THEN 'Pp'::text ELSE 'Pf'::text END + WHEN la.oid IS NOT NULL THEN 'l'::text + WHEN rw.oid IS NOT NULL THEN 'Rl'::text + WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END + WHEN ad.oid IS NOT NULL THEN 'A'::text + WHEN fs.oid IS NOT NULL THEN 'Fs'::text + WHEN fdw.oid IS NOT NULL THEN 'Fw'::text + WHEN evt.oid IS NOT NULL THEN 'Et'::text + WHEN col.oid IS NOT NULL THEN 'Co'::text + WHEN ftsc.oid IS NOT NULL THEN 'Fc'::text + WHEN ftsp.oid IS NOT NULL THEN 'Fp'::text + WHEN ftsd.oid IS NOT NULL THEN 'Fd'::text + WHEN ftst.oid IS NOT NULL THEN 'Ft'::text + WHEN ext.oid IS NOT NULL THEN 'Ex'::text + WHEN pl.oid IS NOT NULL THEN 'Rs'::text + ELSE '' + END AS type, + COALESCE(coc.relname, clrw.relname) AS ownertable, + CASE WHEN cl.relname IS NOT NULL OR att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') + ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, + fs.srvname, fdw.fdwname, evt.evtname, col.collname, ftsc.cfgname, ftsd.dictname, ftsp.prsname, + ftst.tmplname, ext.extname, pl.polname) + END AS refname, + COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname, colns.nspname, ftscns.nspname, + ftsdns.nspname, ftspns.nspname, ftstns.nspname) AS nspname, + CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, + CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited +FROM pg_depend dep +LEFT JOIN pg_class cl ON dep.refobjid=cl.oid +LEFT JOIN pg_attribute att ON dep.refobjid=att.attrelid AND dep.refobjsubid=att.attnum +LEFT JOIN pg_namespace nsc ON cl.relnamespace=nsc.oid +LEFT JOIN pg_proc pr ON dep.refobjid=pr.oid +LEFT JOIN pg_namespace nsp ON pr.pronamespace=nsp.oid +LEFT JOIN pg_trigger tg ON dep.refobjid=tg.oid +LEFT JOIN pg_type ty ON dep.refobjid=ty.oid +LEFT JOIN pg_namespace nst ON ty.typnamespace=nst.oid +LEFT JOIN pg_constraint co ON dep.refobjid=co.oid +LEFT JOIN pg_class coc ON co.conrelid=coc.oid +LEFT JOIN pg_namespace nso ON co.connamespace=nso.oid +LEFT JOIN pg_rewrite rw ON dep.refobjid=rw.oid +LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class +LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid +LEFT JOIN pg_language la ON dep.refobjid=la.oid +LEFT JOIN pg_namespace ns ON dep.refobjid=ns.oid +LEFT JOIN pg_attrdef ad ON ad.adrelid=att.attrelid AND ad.adnum=att.attnum +LEFT JOIN pg_foreign_server fs ON fs.oid=dep.refobjid +LEFT JOIN pg_foreign_data_wrapper fdw ON fdw.oid=dep.refobjid +LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype +LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.refobjid) +LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.refobjid) +LEFT JOIN pg_event_trigger evt ON evt.oid=dep.refobjid +LEFT JOIN pg_collation col ON col.oid=dep.refobjid +LEFT JOIN pg_namespace colns ON col.collnamespace=colns.oid +LEFT JOIN pg_ts_config ftsc ON ftsc.oid=dep.refobjid +LEFT JOIN pg_namespace ftscns ON ftsc.cfgnamespace=ftscns.oid +LEFT JOIN pg_ts_dict ftsd ON ftsd.oid=dep.refobjid +LEFT JOIN pg_namespace ftsdns ON ftsd.dictnamespace=ftsdns.oid +LEFT JOIN pg_ts_parser ftsp ON ftsp.oid=dep.refobjid +LEFT JOIN pg_namespace ftspns ON ftsp.prsnamespace=ftspns.oid +LEFT JOIN pg_ts_template ftst ON ftst.oid=dep.refobjid +LEFT JOIN pg_namespace ftstns ON ftst.tmplnamespace=ftstns.oid +LEFT JOIN pg_extension ext ON ext.oid=dep.refobjid +LEFT JOIN pg_policy pl ON pl.oid=dep.refobjid +{{where_clause}} AND +refclassid IN ( SELECT oid FROM pg_class WHERE relname IN + ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', + 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper', + 'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension', 'pg_policy')) +ORDER BY refclassid, cl.relkind diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/pg/12_plus/dependents.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/pg/12_plus/dependents.sql new file mode 100644 index 000000000..ef76c885d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/pg/12_plus/dependents.sql @@ -0,0 +1,75 @@ +SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, pg_get_expr(ad.adbin, ad.adrelid) as adsrc, + CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.objsubid::text, '') ELSE cl.relkind END + WHEN tg.oid IS NOT NULL THEN 'Tr'::text + WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END + WHEN ns.oid IS NOT NULL THEN 'n'::text + WHEN pr.oid IS NOT NULL AND (prtyp.typname = 'trigger' OR prtyp.typname = 'event_trigger') THEN 'Pt'::text + WHEN pr.oid IS NOT NULL THEN CASE WHEN pr.prokind = 'p' THEN 'Pp'::text ELSE 'Pf'::text END + WHEN la.oid IS NOT NULL THEN 'l'::text + WHEN rw.oid IS NOT NULL THEN 'Rl'::text + WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END + WHEN ad.oid IS NOT NULL THEN 'A'::text + WHEN fs.oid IS NOT NULL THEN 'Fs'::text + WHEN fdw.oid IS NOT NULL THEN 'Fw'::text + WHEN evt.oid IS NOT NULL THEN 'Et'::text + WHEN col.oid IS NOT NULL THEN 'Co'::text + WHEN ftsc.oid IS NOT NULL THEN 'Fc'::text + WHEN ftsp.oid IS NOT NULL THEN 'Fp'::text + WHEN ftsd.oid IS NOT NULL THEN 'Fd'::text + WHEN ftst.oid IS NOT NULL THEN 'Ft'::text + WHEN ext.oid IS NOT NULL THEN 'Ex'::text + WHEN pl.oid IS NOT NULL THEN 'Rs'::text + ELSE '' + END AS type, + COALESCE(coc.relname, clrw.relname) AS ownertable, + CASE WHEN cl.relname IS NOT NULL AND att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') + ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, + fs.srvname, fdw.fdwname, evt.evtname, col.collname, ftsc.cfgname, ftsd.dictname, ftsp.prsname, + ftst.tmplname, ext.extname, pl.polname) + END AS refname, + COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname, colns.nspname, ftscns.nspname, + ftsdns.nspname, ftspns.nspname, ftstns.nspname) AS nspname, + CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, + CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited +FROM pg_depend dep +LEFT JOIN pg_class cl ON dep.objid=cl.oid +LEFT JOIN pg_attribute att ON dep.objid=att.attrelid AND dep.objsubid=att.attnum +LEFT JOIN pg_namespace nsc ON cl.relnamespace=nsc.oid +LEFT JOIN pg_proc pr ON dep.objid=pr.oid +LEFT JOIN pg_namespace nsp ON pr.pronamespace=nsp.oid +LEFT JOIN pg_trigger tg ON dep.objid=tg.oid +LEFT JOIN pg_type ty ON dep.objid=ty.oid +LEFT JOIN pg_namespace nst ON ty.typnamespace=nst.oid +LEFT JOIN pg_constraint co ON dep.objid=co.oid +LEFT JOIN pg_class coc ON co.conrelid=coc.oid +LEFT JOIN pg_namespace nso ON co.connamespace=nso.oid +LEFT JOIN pg_rewrite rw ON dep.objid=rw.oid +LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class +LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid +LEFT JOIN pg_language la ON dep.objid=la.oid +LEFT JOIN pg_namespace ns ON dep.objid=ns.oid +LEFT JOIN pg_attrdef ad ON ad.oid=dep.objid +LEFT JOIN pg_foreign_server fs ON fs.oid=dep.objid +LEFT JOIN pg_foreign_data_wrapper fdw ON fdw.oid=dep.objid +LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype +LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.objid) +LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.objid) +LEFT JOIN pg_event_trigger evt ON evt.oid=dep.objid +LEFT JOIN pg_collation col ON col.oid=dep.objid +LEFT JOIN pg_namespace colns ON col.collnamespace=colns.oid +LEFT JOIN pg_ts_config ftsc ON ftsc.oid=dep.objid +LEFT JOIN pg_namespace ftscns ON ftsc.cfgnamespace=ftscns.oid +LEFT JOIN pg_ts_dict ftsd ON ftsd.oid=dep.objid +LEFT JOIN pg_namespace ftsdns ON ftsd.dictnamespace=ftsdns.oid +LEFT JOIN pg_ts_parser ftsp ON ftsp.oid=dep.objid +LEFT JOIN pg_namespace ftspns ON ftsp.prsnamespace=ftspns.oid +LEFT JOIN pg_ts_template ftst ON ftst.oid=dep.objid +LEFT JOIN pg_namespace ftstns ON ftst.tmplnamespace=ftstns.oid +LEFT JOIN pg_extension ext ON ext.oid=dep.objid +LEFT JOIN pg_policy pl ON pl.oid=dep.objid +{{where_clause}} AND +classid IN ( SELECT oid FROM pg_class WHERE relname IN + ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', + 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper', + 'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension', 'pg_policy')) +ORDER BY classid, cl.relkind diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/sql/12_plus/dependencies.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.1_plus/dependencies.sql similarity index 50% rename from web/pgadmin/browser/server_groups/servers/templates/depends/sql/12_plus/dependencies.sql rename to web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.1_plus/dependencies.sql index 1490d6830..33b7d2acc 100644 --- a/web/pgadmin/browser/server_groups/servers/templates/depends/sql/12_plus/dependencies.sql +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.1_plus/dependencies.sql @@ -1,24 +1,33 @@ -SELECT DISTINCT dep.deptype, dep.refclassid, cl.relkind, ad.adbin, pg_get_expr(ad.adbin, ad.adrelid) as adsrc, - CASE WHEN cl.relkind IS NOT NULL THEN cl.relkind || COALESCE(dep.refobjsubid::character varying, '') - WHEN tg.oid IS NOT NULL THEN 'T'::text - WHEN ty.oid IS NOT NULL AND ty.typbasetype = 0 THEN 'y'::text - WHEN ty.oid IS NOT NULL AND ty.typbasetype != 0 THEN 'd'::text +SELECT DISTINCT dep.deptype, dep.refclassid, cl.relkind, ad.adbin, ad.adsrc, + CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END + WHEN tg.oid IS NOT NULL THEN 'Tr'::text + WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END WHEN ns.oid IS NOT NULL THEN 'n'::text - WHEN pr.oid IS NOT NULL AND prtyp.typname = 'trigger' THEN 't'::text - WHEN pr.oid IS NOT NULL THEN 'P'::text + WHEN pr.oid IS NOT NULL AND (prtyp.typname = 'trigger' OR prtyp.typname = 'event_trigger') THEN 'Pt'::text + WHEN pr.oid IS NOT NULL THEN 'Pf'::text WHEN la.oid IS NOT NULL THEN 'l'::text - WHEN rw.oid IS NOT NULL THEN 'R'::text - WHEN co.oid IS NOT NULL THEN 'C'::text || contype + WHEN rw.oid IS NOT NULL THEN 'Rl'::text + WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END WHEN ad.oid IS NOT NULL THEN 'A'::text - WHEN fs.oid IS NOT NULL THEN 'F'::text - WHEN fdw.oid IS NOT NULL THEN 'f'::text + WHEN fs.oid IS NOT NULL THEN 'Fs'::text + WHEN fdw.oid IS NOT NULL THEN 'Fw'::text + WHEN evt.oid IS NOT NULL THEN 'Et'::text + WHEN col.oid IS NOT NULL THEN 'Co'::text + WHEN ftsc.oid IS NOT NULL THEN 'Fc'::text + WHEN ftsp.oid IS NOT NULL THEN 'Fp'::text + WHEN ftsd.oid IS NOT NULL THEN 'Fd'::text + WHEN ftst.oid IS NOT NULL THEN 'Ft'::text + WHEN ext.oid IS NOT NULL THEN 'Ex'::text ELSE '' END AS type, COALESCE(coc.relname, clrw.relname) AS ownertable, CASE WHEN cl.relname IS NOT NULL OR att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') - ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, fs.srvname, fdw.fdwname) + ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, + fs.srvname, fdw.fdwname, evt.evtname, col.collname, ftsc.cfgname, ftsd.dictname, ftsp.prsname, + ftst.tmplname, ext.extname) END AS refname, - COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname) AS nspname, + COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname, colns.nspname, ftscns.nspname, + ftsdns.nspname, ftspns.nspname, ftstns.nspname) AS nspname, CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited FROM pg_depend dep @@ -44,8 +53,21 @@ LEFT JOIN pg_foreign_data_wrapper fdw ON fdw.oid=dep.refobjid LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.refobjid) LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.refobjid) +LEFT JOIN pg_event_trigger evt ON evt.oid=dep.refobjid +LEFT JOIN pg_collation col ON col.oid=dep.refobjid +LEFT JOIN pg_namespace colns ON col.collnamespace=colns.oid +LEFT JOIN pg_ts_config ftsc ON ftsc.oid=dep.refobjid +LEFT JOIN pg_namespace ftscns ON ftsc.cfgnamespace=ftscns.oid +LEFT JOIN pg_ts_dict ftsd ON ftsd.oid=dep.refobjid +LEFT JOIN pg_namespace ftsdns ON ftsd.dictnamespace=ftsdns.oid +LEFT JOIN pg_ts_parser ftsp ON ftsp.oid=dep.refobjid +LEFT JOIN pg_namespace ftspns ON ftsp.prsnamespace=ftspns.oid +LEFT JOIN pg_ts_template ftst ON ftst.oid=dep.refobjid +LEFT JOIN pg_namespace ftstns ON ftst.tmplnamespace=ftstns.oid +LEFT JOIN pg_extension ext ON ext.oid=dep.refobjid {{where_clause}} AND refclassid IN ( SELECT oid FROM pg_class WHERE relname IN ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', - 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper')) + 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper', + 'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension')) ORDER BY refclassid, cl.relkind diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.1_plus/dependents.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.1_plus/dependents.sql new file mode 100644 index 000000000..0b85a3759 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.1_plus/dependents.sql @@ -0,0 +1,73 @@ +SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc, + CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.objsubid::text, '') ELSE cl.relkind END + WHEN tg.oid IS NOT NULL THEN 'Tr'::text + WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END + WHEN ns.oid IS NOT NULL THEN 'n'::text + WHEN pr.oid IS NOT NULL AND (prtyp.typname = 'trigger' OR prtyp.typname = 'event_trigger') THEN 'Pt'::text + WHEN pr.oid IS NOT NULL THEN 'Pf'::text + WHEN la.oid IS NOT NULL THEN 'l'::text + WHEN rw.oid IS NOT NULL THEN 'Rl'::text + WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END + WHEN ad.oid IS NOT NULL THEN 'A'::text + WHEN fs.oid IS NOT NULL THEN 'Fs'::text + WHEN fdw.oid IS NOT NULL THEN 'Fw'::text + WHEN evt.oid IS NOT NULL THEN 'Et'::text + WHEN col.oid IS NOT NULL THEN 'Co'::text + WHEN ftsc.oid IS NOT NULL THEN 'Fc'::text + WHEN ftsp.oid IS NOT NULL THEN 'Fp'::text + WHEN ftsd.oid IS NOT NULL THEN 'Fd'::text + WHEN ftst.oid IS NOT NULL THEN 'Ft'::text + WHEN ext.oid IS NOT NULL THEN 'Ex'::text + ELSE '' + END AS type, + COALESCE(coc.relname, clrw.relname) AS ownertable, + CASE WHEN cl.relname IS NOT NULL AND att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') + ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, + fs.srvname, fdw.fdwname, evt.evtname, col.collname, ftsc.cfgname, ftsd.dictname, ftsp.prsname, + ftst.tmplname, ext.extname) + END AS refname, + COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname, colns.nspname, ftscns.nspname, + ftsdns.nspname, ftspns.nspname, ftstns.nspname) AS nspname, + CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, + CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited +FROM pg_depend dep +LEFT JOIN pg_class cl ON dep.objid=cl.oid +LEFT JOIN pg_attribute att ON dep.objid=att.attrelid AND dep.objsubid=att.attnum +LEFT JOIN pg_namespace nsc ON cl.relnamespace=nsc.oid +LEFT JOIN pg_proc pr ON dep.objid=pr.oid +LEFT JOIN pg_namespace nsp ON pr.pronamespace=nsp.oid +LEFT JOIN pg_trigger tg ON dep.objid=tg.oid +LEFT JOIN pg_type ty ON dep.objid=ty.oid +LEFT JOIN pg_namespace nst ON ty.typnamespace=nst.oid +LEFT JOIN pg_constraint co ON dep.objid=co.oid +LEFT JOIN pg_class coc ON co.conrelid=coc.oid +LEFT JOIN pg_namespace nso ON co.connamespace=nso.oid +LEFT JOIN pg_rewrite rw ON dep.objid=rw.oid +LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class +LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid +LEFT JOIN pg_language la ON dep.objid=la.oid +LEFT JOIN pg_namespace ns ON dep.objid=ns.oid +LEFT JOIN pg_attrdef ad ON ad.oid=dep.objid +LEFT JOIN pg_foreign_server fs ON fs.oid=dep.objid +LEFT JOIN pg_foreign_data_wrapper fdw ON fdw.oid=dep.objid +LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype +LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.objid) +LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.objid) +LEFT JOIN pg_event_trigger evt ON evt.oid=dep.objid +LEFT JOIN pg_collation col ON col.oid=dep.objid +LEFT JOIN pg_namespace colns ON col.collnamespace=colns.oid +LEFT JOIN pg_ts_config ftsc ON ftsc.oid=dep.objid +LEFT JOIN pg_namespace ftscns ON ftsc.cfgnamespace=ftscns.oid +LEFT JOIN pg_ts_dict ftsd ON ftsd.oid=dep.objid +LEFT JOIN pg_namespace ftsdns ON ftsd.dictnamespace=ftsdns.oid +LEFT JOIN pg_ts_parser ftsp ON ftsp.oid=dep.objid +LEFT JOIN pg_namespace ftspns ON ftsp.prsnamespace=ftspns.oid +LEFT JOIN pg_ts_template ftst ON ftst.oid=dep.objid +LEFT JOIN pg_namespace ftstns ON ftst.tmplnamespace=ftstns.oid +LEFT JOIN pg_extension ext ON ext.oid=dep.objid +{{where_clause}} AND +classid IN ( SELECT oid FROM pg_class WHERE relname IN + ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', + 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper', + 'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension')) +ORDER BY classid, cl.relkind diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.1_plus/role_dependencies.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.1_plus/role_dependencies.sql new file mode 100644 index 000000000..25fc3f850 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.1_plus/role_dependencies.sql @@ -0,0 +1,4 @@ +SELECT rolname AS refname, refclassid, deptype +FROM pg_shdepend dep +LEFT JOIN pg_roles r ON refclassid=1260 AND refobjid=r.oid +{{where_clause}} ORDER BY 1 diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.5_plus/dependencies.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.5_plus/dependencies.sql new file mode 100644 index 000000000..74ea9efac --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.5_plus/dependencies.sql @@ -0,0 +1,75 @@ +SELECT DISTINCT dep.deptype, dep.refclassid, cl.relkind, ad.adbin, ad.adsrc, + CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END + WHEN tg.oid IS NOT NULL THEN 'Tr'::text + WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END + WHEN ns.oid IS NOT NULL THEN 'n'::text + WHEN pr.oid IS NOT NULL AND (prtyp.typname = 'trigger' OR prtyp.typname = 'event_trigger') THEN 'Pt'::text + WHEN pr.oid IS NOT NULL THEN 'Pf'::text + WHEN la.oid IS NOT NULL THEN 'l'::text + WHEN rw.oid IS NOT NULL THEN 'Rl'::text + WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END + WHEN ad.oid IS NOT NULL THEN 'A'::text + WHEN fs.oid IS NOT NULL THEN 'Fs'::text + WHEN fdw.oid IS NOT NULL THEN 'Fw'::text + WHEN evt.oid IS NOT NULL THEN 'Et'::text + WHEN col.oid IS NOT NULL THEN 'Co'::text + WHEN ftsc.oid IS NOT NULL THEN 'Fc'::text + WHEN ftsp.oid IS NOT NULL THEN 'Fp'::text + WHEN ftsd.oid IS NOT NULL THEN 'Fd'::text + WHEN ftst.oid IS NOT NULL THEN 'Ft'::text + WHEN ext.oid IS NOT NULL THEN 'Ex'::text + WHEN pl.oid IS NOT NULL THEN 'Rs'::text + ELSE '' + END AS type, + COALESCE(coc.relname, clrw.relname) AS ownertable, + CASE WHEN cl.relname IS NOT NULL OR att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') + ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, + fs.srvname, fdw.fdwname, evt.evtname, col.collname, ftsc.cfgname, ftsd.dictname, ftsp.prsname, + ftst.tmplname, ext.extname, pl.polname) + END AS refname, + COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname, colns.nspname, ftscns.nspname, + ftsdns.nspname, ftspns.nspname, ftstns.nspname) AS nspname, + CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, + CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited +FROM pg_depend dep +LEFT JOIN pg_class cl ON dep.refobjid=cl.oid +LEFT JOIN pg_attribute att ON dep.refobjid=att.attrelid AND dep.refobjsubid=att.attnum +LEFT JOIN pg_namespace nsc ON cl.relnamespace=nsc.oid +LEFT JOIN pg_proc pr ON dep.refobjid=pr.oid +LEFT JOIN pg_namespace nsp ON pr.pronamespace=nsp.oid +LEFT JOIN pg_trigger tg ON dep.refobjid=tg.oid +LEFT JOIN pg_type ty ON dep.refobjid=ty.oid +LEFT JOIN pg_namespace nst ON ty.typnamespace=nst.oid +LEFT JOIN pg_constraint co ON dep.refobjid=co.oid +LEFT JOIN pg_class coc ON co.conrelid=coc.oid +LEFT JOIN pg_namespace nso ON co.connamespace=nso.oid +LEFT JOIN pg_rewrite rw ON dep.refobjid=rw.oid +LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class +LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid +LEFT JOIN pg_language la ON dep.refobjid=la.oid +LEFT JOIN pg_namespace ns ON dep.refobjid=ns.oid +LEFT JOIN pg_attrdef ad ON ad.adrelid=att.attrelid AND ad.adnum=att.attnum +LEFT JOIN pg_foreign_server fs ON fs.oid=dep.refobjid +LEFT JOIN pg_foreign_data_wrapper fdw ON fdw.oid=dep.refobjid +LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype +LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.refobjid) +LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.refobjid) +LEFT JOIN pg_event_trigger evt ON evt.oid=dep.refobjid +LEFT JOIN pg_collation col ON col.oid=dep.refobjid +LEFT JOIN pg_namespace colns ON col.collnamespace=colns.oid +LEFT JOIN pg_ts_config ftsc ON ftsc.oid=dep.refobjid +LEFT JOIN pg_namespace ftscns ON ftsc.cfgnamespace=ftscns.oid +LEFT JOIN pg_ts_dict ftsd ON ftsd.oid=dep.refobjid +LEFT JOIN pg_namespace ftsdns ON ftsd.dictnamespace=ftsdns.oid +LEFT JOIN pg_ts_parser ftsp ON ftsp.oid=dep.refobjid +LEFT JOIN pg_namespace ftspns ON ftsp.prsnamespace=ftspns.oid +LEFT JOIN pg_ts_template ftst ON ftst.oid=dep.refobjid +LEFT JOIN pg_namespace ftstns ON ftst.tmplnamespace=ftstns.oid +LEFT JOIN pg_extension ext ON ext.oid=dep.refobjid +LEFT JOIN pg_policy pl ON pl.oid=dep.refobjid +{{where_clause}} AND +refclassid IN ( SELECT oid FROM pg_class WHERE relname IN + ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', + 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper', + 'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension', 'pg_policy')) +ORDER BY refclassid, cl.relkind diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.5_plus/dependents.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.5_plus/dependents.sql new file mode 100644 index 000000000..7ee93100d --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/pg/9.5_plus/dependents.sql @@ -0,0 +1,75 @@ +SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc, + CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.objsubid::text, '') ELSE cl.relkind END + WHEN tg.oid IS NOT NULL THEN 'Tr'::text + WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END + WHEN ns.oid IS NOT NULL THEN 'n'::text + WHEN pr.oid IS NOT NULL AND (prtyp.typname = 'trigger' OR prtyp.typname = 'event_trigger') THEN 'Pt'::text + WHEN pr.oid IS NOT NULL THEN 'Pf'::text + WHEN la.oid IS NOT NULL THEN 'l'::text + WHEN rw.oid IS NOT NULL THEN 'Rl'::text + WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END + WHEN ad.oid IS NOT NULL THEN 'A'::text + WHEN fs.oid IS NOT NULL THEN 'Fs'::text + WHEN fdw.oid IS NOT NULL THEN 'Fw'::text + WHEN evt.oid IS NOT NULL THEN 'Et'::text + WHEN col.oid IS NOT NULL THEN 'Co'::text + WHEN ftsc.oid IS NOT NULL THEN 'Fc'::text + WHEN ftsp.oid IS NOT NULL THEN 'Fp'::text + WHEN ftsd.oid IS NOT NULL THEN 'Fd'::text + WHEN ftst.oid IS NOT NULL THEN 'Ft'::text + WHEN ext.oid IS NOT NULL THEN 'Ex'::text + WHEN pl.oid IS NOT NULL THEN 'Rs'::text + ELSE '' + END AS type, + COALESCE(coc.relname, clrw.relname) AS ownertable, + CASE WHEN cl.relname IS NOT NULL AND att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') + ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, + fs.srvname, fdw.fdwname, evt.evtname, col.collname, ftsc.cfgname, ftsd.dictname, ftsp.prsname, + ftst.tmplname, ext.extname, pl.polname) + END AS refname, + COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname, colns.nspname, ftscns.nspname, + ftsdns.nspname, ftspns.nspname, ftstns.nspname) AS nspname, + CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, + CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited +FROM pg_depend dep +LEFT JOIN pg_class cl ON dep.objid=cl.oid +LEFT JOIN pg_attribute att ON dep.objid=att.attrelid AND dep.objsubid=att.attnum +LEFT JOIN pg_namespace nsc ON cl.relnamespace=nsc.oid +LEFT JOIN pg_proc pr ON dep.objid=pr.oid +LEFT JOIN pg_namespace nsp ON pr.pronamespace=nsp.oid +LEFT JOIN pg_trigger tg ON dep.objid=tg.oid +LEFT JOIN pg_type ty ON dep.objid=ty.oid +LEFT JOIN pg_namespace nst ON ty.typnamespace=nst.oid +LEFT JOIN pg_constraint co ON dep.objid=co.oid +LEFT JOIN pg_class coc ON co.conrelid=coc.oid +LEFT JOIN pg_namespace nso ON co.connamespace=nso.oid +LEFT JOIN pg_rewrite rw ON dep.objid=rw.oid +LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class +LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid +LEFT JOIN pg_language la ON dep.objid=la.oid +LEFT JOIN pg_namespace ns ON dep.objid=ns.oid +LEFT JOIN pg_attrdef ad ON ad.oid=dep.objid +LEFT JOIN pg_foreign_server fs ON fs.oid=dep.objid +LEFT JOIN pg_foreign_data_wrapper fdw ON fdw.oid=dep.objid +LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype +LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.objid) +LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.objid) +LEFT JOIN pg_event_trigger evt ON evt.oid=dep.objid +LEFT JOIN pg_collation col ON col.oid=dep.objid +LEFT JOIN pg_namespace colns ON col.collnamespace=colns.oid +LEFT JOIN pg_ts_config ftsc ON ftsc.oid=dep.objid +LEFT JOIN pg_namespace ftscns ON ftsc.cfgnamespace=ftscns.oid +LEFT JOIN pg_ts_dict ftsd ON ftsd.oid=dep.objid +LEFT JOIN pg_namespace ftsdns ON ftsd.dictnamespace=ftsdns.oid +LEFT JOIN pg_ts_parser ftsp ON ftsp.oid=dep.objid +LEFT JOIN pg_namespace ftspns ON ftsp.prsnamespace=ftspns.oid +LEFT JOIN pg_ts_template ftst ON ftst.oid=dep.objid +LEFT JOIN pg_namespace ftstns ON ftst.tmplnamespace=ftstns.oid +LEFT JOIN pg_extension ext ON ext.oid=dep.objid +LEFT JOIN pg_policy pl ON pl.oid=dep.objid +{{where_clause}} AND +classid IN ( SELECT oid FROM pg_class WHERE relname IN + ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', + 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper', + 'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension', 'pg_policy')) +ORDER BY classid, cl.relkind diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/11_plus/dependencies.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/11_plus/dependencies.sql new file mode 100644 index 000000000..4652129e8 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/11_plus/dependencies.sql @@ -0,0 +1,79 @@ +SELECT DISTINCT dep.deptype, dep.refclassid, cl.relkind, ad.adbin, ad.adsrc, + CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END + WHEN tg.oid IS NOT NULL THEN 'Tr'::text + WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END + WHEN ns.oid IS NOT NULL THEN CASE WHEN ns.nspparent != 0 THEN 'Pa'::text ELSE 'n'::text END + WHEN pr.oid IS NOT NULL AND (prtyp.typname = 'trigger' OR prtyp.typname = 'event_trigger') THEN 'Pt'::text + WHEN pr.oid IS NOT NULL THEN CASE WHEN pr.prokind = 'p' THEN 'Pp'::text ELSE 'Pf'::text END + WHEN la.oid IS NOT NULL THEN 'l'::text + WHEN rw.oid IS NOT NULL THEN 'Rl'::text + WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END + WHEN ad.oid IS NOT NULL THEN 'A'::text + WHEN fs.oid IS NOT NULL THEN 'Fs'::text + WHEN fdw.oid IS NOT NULL THEN 'Fw'::text + WHEN evt.oid IS NOT NULL THEN 'Et'::text + WHEN col.oid IS NOT NULL THEN 'Co'::text + WHEN ftsc.oid IS NOT NULL THEN 'Fc'::text + WHEN ftsp.oid IS NOT NULL THEN 'Fp'::text + WHEN ftsd.oid IS NOT NULL THEN 'Fd'::text + WHEN ftst.oid IS NOT NULL THEN 'Ft'::text + WHEN ext.oid IS NOT NULL THEN 'Ex'::text + WHEN syn.oid IS NOT NULL THEN 'Sy'::text + WHEN pl.oid IS NOT NULL THEN 'Rs'::text + ELSE '' + END AS type, + COALESCE(coc.relname, clrw.relname) AS ownertable, + CASE WHEN cl.relname IS NOT NULL OR att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') + ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, + fs.srvname, fdw.fdwname, evt.evtname, col.collname, ftsc.cfgname, ftsd.dictname, ftsp.prsname, + ftst.tmplname, ext.extname, syn.synname, pl.polname) + END AS refname, + COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname, colns.nspname, ftscns.nspname, + ftsdns.nspname, ftspns.nspname, ftstns.nspname, synns.nspname) AS nspname, + CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, + CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited +FROM pg_depend dep +LEFT JOIN pg_class cl ON dep.refobjid=cl.oid +LEFT JOIN pg_attribute att ON dep.refobjid=att.attrelid AND dep.refobjsubid=att.attnum +LEFT JOIN pg_namespace nsc ON cl.relnamespace=nsc.oid +LEFT JOIN pg_proc pr ON dep.refobjid=pr.oid +LEFT JOIN pg_namespace nsp ON pr.pronamespace=nsp.oid +LEFT JOIN pg_trigger tg ON dep.refobjid=tg.oid +LEFT JOIN pg_type ty ON dep.refobjid=ty.oid +LEFT JOIN pg_namespace nst ON ty.typnamespace=nst.oid +LEFT JOIN pg_constraint co ON dep.refobjid=co.oid +LEFT JOIN pg_class coc ON co.conrelid=coc.oid +LEFT JOIN pg_namespace nso ON co.connamespace=nso.oid +LEFT JOIN pg_rewrite rw ON dep.refobjid=rw.oid +LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class +LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid +LEFT JOIN pg_language la ON dep.refobjid=la.oid +LEFT JOIN pg_namespace ns ON dep.refobjid=ns.oid +LEFT JOIN pg_attrdef ad ON ad.adrelid=att.attrelid AND ad.adnum=att.attnum +LEFT JOIN pg_foreign_server fs ON fs.oid=dep.refobjid +LEFT JOIN pg_foreign_data_wrapper fdw ON fdw.oid=dep.refobjid +LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype +LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.refobjid) +LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.refobjid) +LEFT JOIN pg_event_trigger evt ON evt.oid=dep.refobjid +LEFT JOIN pg_collation col ON col.oid=dep.refobjid +LEFT JOIN pg_namespace colns ON col.collnamespace=colns.oid +LEFT JOIN pg_ts_config ftsc ON ftsc.oid=dep.refobjid +LEFT JOIN pg_namespace ftscns ON ftsc.cfgnamespace=ftscns.oid +LEFT JOIN pg_ts_dict ftsd ON ftsd.oid=dep.refobjid +LEFT JOIN pg_namespace ftsdns ON ftsd.dictnamespace=ftsdns.oid +LEFT JOIN pg_ts_parser ftsp ON ftsp.oid=dep.refobjid +LEFT JOIN pg_namespace ftspns ON ftsp.prsnamespace=ftspns.oid +LEFT JOIN pg_ts_template ftst ON ftst.oid=dep.refobjid +LEFT JOIN pg_namespace ftstns ON ftst.tmplnamespace=ftstns.oid +LEFT JOIN pg_extension ext ON ext.oid=dep.refobjid +LEFT JOIN pg_synonym syn ON syn.oid=dep.refobjid +LEFT JOIN pg_namespace synns ON syn.synnamespace=synns.oid +LEFT JOIN pg_policy pl ON pl.oid=dep.refobjid +{{where_clause}} AND +refclassid IN ( SELECT oid FROM pg_class WHERE relname IN + ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', + 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper', + 'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension', + 'pg_synonym', 'pg_policy')) +ORDER BY refclassid, cl.relkind diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/11_plus/dependents.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/11_plus/dependents.sql new file mode 100644 index 000000000..b6e368731 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/11_plus/dependents.sql @@ -0,0 +1,79 @@ +SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc, + CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.objsubid::text, '') ELSE cl.relkind END + WHEN tg.oid IS NOT NULL THEN 'Tr'::text + WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END + WHEN ns.oid IS NOT NULL THEN CASE WHEN ns.nspparent != 0 THEN 'Pa'::text ELSE 'n'::text END + WHEN pr.oid IS NOT NULL AND (prtyp.typname = 'trigger' OR prtyp.typname = 'event_trigger') THEN 'Pt'::text + WHEN pr.oid IS NOT NULL THEN CASE WHEN pr.prokind = 'p' THEN 'Pp'::text ELSE 'Pf'::text END + WHEN la.oid IS NOT NULL THEN 'l'::text + WHEN rw.oid IS NOT NULL THEN 'Rl'::text + WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END + WHEN ad.oid IS NOT NULL THEN 'A'::text + WHEN fs.oid IS NOT NULL THEN 'Fs'::text + WHEN fdw.oid IS NOT NULL THEN 'Fw'::text + WHEN evt.oid IS NOT NULL THEN 'Et'::text + WHEN col.oid IS NOT NULL THEN 'Co'::text + WHEN ftsc.oid IS NOT NULL THEN 'Fc'::text + WHEN ftsp.oid IS NOT NULL THEN 'Fp'::text + WHEN ftsd.oid IS NOT NULL THEN 'Fd'::text + WHEN ftst.oid IS NOT NULL THEN 'Ft'::text + WHEN ext.oid IS NOT NULL THEN 'Ex'::text + WHEN syn.oid IS NOT NULL THEN 'Sy'::text + WHEN pl.oid IS NOT NULL THEN 'Rs'::text + ELSE '' + END AS type, + COALESCE(coc.relname, clrw.relname) AS ownertable, + CASE WHEN cl.relname IS NOT NULL AND att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') + ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, + fs.srvname, fdw.fdwname, evt.evtname, col.collname, ftsc.cfgname, ftsd.dictname, ftsp.prsname, + ftst.tmplname, ext.extname, syn.synname, pl.polname) + END AS refname, + COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname, colns.nspname, ftscns.nspname, + ftsdns.nspname, ftspns.nspname, ftstns.nspname, synns.nspname) AS nspname, + CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, + CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited +FROM pg_depend dep +LEFT JOIN pg_class cl ON dep.objid=cl.oid +LEFT JOIN pg_attribute att ON dep.objid=att.attrelid AND dep.objsubid=att.attnum +LEFT JOIN pg_namespace nsc ON cl.relnamespace=nsc.oid +LEFT JOIN pg_proc pr ON dep.objid=pr.oid +LEFT JOIN pg_namespace nsp ON pr.pronamespace=nsp.oid +LEFT JOIN pg_trigger tg ON dep.objid=tg.oid +LEFT JOIN pg_type ty ON dep.objid=ty.oid +LEFT JOIN pg_namespace nst ON ty.typnamespace=nst.oid +LEFT JOIN pg_constraint co ON dep.objid=co.oid +LEFT JOIN pg_class coc ON co.conrelid=coc.oid +LEFT JOIN pg_namespace nso ON co.connamespace=nso.oid +LEFT JOIN pg_rewrite rw ON dep.objid=rw.oid +LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class +LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid +LEFT JOIN pg_language la ON dep.objid=la.oid +LEFT JOIN pg_namespace ns ON dep.objid=ns.oid +LEFT JOIN pg_attrdef ad ON ad.oid=dep.objid +LEFT JOIN pg_foreign_server fs ON fs.oid=dep.objid +LEFT JOIN pg_foreign_data_wrapper fdw ON fdw.oid=dep.objid +LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype +LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.objid) +LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.objid) +LEFT JOIN pg_event_trigger evt ON evt.oid=dep.objid +LEFT JOIN pg_collation col ON col.oid=dep.objid +LEFT JOIN pg_namespace colns ON col.collnamespace=colns.oid +LEFT JOIN pg_ts_config ftsc ON ftsc.oid=dep.objid +LEFT JOIN pg_namespace ftscns ON ftsc.cfgnamespace=ftscns.oid +LEFT JOIN pg_ts_dict ftsd ON ftsd.oid=dep.objid +LEFT JOIN pg_namespace ftsdns ON ftsd.dictnamespace=ftsdns.oid +LEFT JOIN pg_ts_parser ftsp ON ftsp.oid=dep.objid +LEFT JOIN pg_namespace ftspns ON ftsp.prsnamespace=ftspns.oid +LEFT JOIN pg_ts_template ftst ON ftst.oid=dep.objid +LEFT JOIN pg_namespace ftstns ON ftst.tmplnamespace=ftstns.oid +LEFT JOIN pg_extension ext ON ext.oid=dep.objid +LEFT JOIN pg_synonym syn ON syn.oid=dep.objid +LEFT JOIN pg_namespace synns ON syn.synnamespace=synns.oid +LEFT JOIN pg_policy pl ON pl.oid=dep.objid +{{where_clause}} AND +classid IN ( SELECT oid FROM pg_class WHERE relname IN + ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', + 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper', + 'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension', + 'pg_synonym', 'pg_policy')) +ORDER BY classid, cl.relkind diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/12_plus/dependencies.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/12_plus/dependencies.sql new file mode 100644 index 000000000..1798a4bf4 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/12_plus/dependencies.sql @@ -0,0 +1,79 @@ +SELECT DISTINCT dep.deptype, dep.refclassid, cl.relkind, ad.adbin, pg_get_expr(ad.adbin, ad.adrelid) as adsrc, + CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END + WHEN tg.oid IS NOT NULL THEN CASE WHEN tg.tgpackageoid != 0 THEN 'Tc'::text ELSE 'Tr'::text END + WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END + WHEN ns.oid IS NOT NULL THEN CASE WHEN ns.nspparent != 0 AND ns.nspcompoundtrigger = false THEN 'Pa'::text ELSE 'n'::text END + WHEN pr.oid IS NOT NULL AND (prtyp.typname = 'trigger' OR prtyp.typname = 'event_trigger') THEN 'Pt'::text + WHEN pr.oid IS NOT NULL THEN CASE WHEN pr.prokind = 'p' THEN 'Pp'::text ELSE 'Pf'::text END + WHEN la.oid IS NOT NULL THEN 'l'::text + WHEN rw.oid IS NOT NULL THEN 'Rl'::text + WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END + WHEN ad.oid IS NOT NULL THEN 'A'::text + WHEN fs.oid IS NOT NULL THEN 'Fs'::text + WHEN fdw.oid IS NOT NULL THEN 'Fw'::text + WHEN evt.oid IS NOT NULL THEN 'Et'::text + WHEN col.oid IS NOT NULL THEN 'Co'::text + WHEN ftsc.oid IS NOT NULL THEN 'Fc'::text + WHEN ftsp.oid IS NOT NULL THEN 'Fp'::text + WHEN ftsd.oid IS NOT NULL THEN 'Fd'::text + WHEN ftst.oid IS NOT NULL THEN 'Ft'::text + WHEN ext.oid IS NOT NULL THEN 'Ex'::text + WHEN syn.oid IS NOT NULL THEN 'Sy'::text + WHEN pl.oid IS NOT NULL THEN 'Rs'::text + ELSE '' + END AS type, + COALESCE(coc.relname, clrw.relname) AS ownertable, + CASE WHEN cl.relname IS NOT NULL OR att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') + ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, + fs.srvname, fdw.fdwname, evt.evtname, col.collname, ftsc.cfgname, ftsd.dictname, ftsp.prsname, + ftst.tmplname, ext.extname, syn.synname, pl.polname) + END AS refname, + COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname, colns.nspname, ftscns.nspname, + ftsdns.nspname, ftspns.nspname, ftstns.nspname, synns.nspname) AS nspname, + CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, + CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited +FROM pg_depend dep +LEFT JOIN pg_class cl ON dep.refobjid=cl.oid +LEFT JOIN pg_attribute att ON dep.refobjid=att.attrelid AND dep.refobjsubid=att.attnum +LEFT JOIN pg_namespace nsc ON cl.relnamespace=nsc.oid +LEFT JOIN pg_proc pr ON dep.refobjid=pr.oid +LEFT JOIN pg_namespace nsp ON pr.pronamespace=nsp.oid +LEFT JOIN pg_trigger tg ON dep.refobjid=tg.oid +LEFT JOIN pg_type ty ON dep.refobjid=ty.oid +LEFT JOIN pg_namespace nst ON ty.typnamespace=nst.oid +LEFT JOIN pg_constraint co ON dep.refobjid=co.oid +LEFT JOIN pg_class coc ON co.conrelid=coc.oid +LEFT JOIN pg_namespace nso ON co.connamespace=nso.oid +LEFT JOIN pg_rewrite rw ON dep.refobjid=rw.oid +LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class +LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid +LEFT JOIN pg_language la ON dep.refobjid=la.oid +LEFT JOIN pg_namespace ns ON dep.refobjid=ns.oid +LEFT JOIN pg_attrdef ad ON ad.adrelid=att.attrelid AND ad.adnum=att.attnum +LEFT JOIN pg_foreign_server fs ON fs.oid=dep.refobjid +LEFT JOIN pg_foreign_data_wrapper fdw ON fdw.oid=dep.refobjid +LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype +LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.refobjid) +LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.refobjid) +LEFT JOIN pg_event_trigger evt ON evt.oid=dep.refobjid +LEFT JOIN pg_collation col ON col.oid=dep.refobjid +LEFT JOIN pg_namespace colns ON col.collnamespace=colns.oid +LEFT JOIN pg_ts_config ftsc ON ftsc.oid=dep.refobjid +LEFT JOIN pg_namespace ftscns ON ftsc.cfgnamespace=ftscns.oid +LEFT JOIN pg_ts_dict ftsd ON ftsd.oid=dep.refobjid +LEFT JOIN pg_namespace ftsdns ON ftsd.dictnamespace=ftsdns.oid +LEFT JOIN pg_ts_parser ftsp ON ftsp.oid=dep.refobjid +LEFT JOIN pg_namespace ftspns ON ftsp.prsnamespace=ftspns.oid +LEFT JOIN pg_ts_template ftst ON ftst.oid=dep.refobjid +LEFT JOIN pg_namespace ftstns ON ftst.tmplnamespace=ftstns.oid +LEFT JOIN pg_extension ext ON ext.oid=dep.refobjid +LEFT JOIN pg_synonym syn ON syn.oid=dep.refobjid +LEFT JOIN pg_namespace synns ON syn.synnamespace=synns.oid +LEFT JOIN pg_policy pl ON pl.oid=dep.refobjid +{{where_clause}} AND +refclassid IN ( SELECT oid FROM pg_class WHERE relname IN + ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', + 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper', + 'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension', + 'pg_synonym', 'pg_policy')) +ORDER BY refclassid, cl.relkind diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/12_plus/dependents.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/12_plus/dependents.sql new file mode 100644 index 000000000..c6781827f --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/12_plus/dependents.sql @@ -0,0 +1,79 @@ +SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, pg_get_expr(ad.adbin, ad.adrelid) as adsrc, + CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.objsubid::text, '') ELSE cl.relkind END + WHEN tg.oid IS NOT NULL THEN CASE WHEN tg.tgpackageoid != 0 THEN 'Tc'::text ELSE 'Tr'::text END + WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END + WHEN ns.oid IS NOT NULL THEN CASE WHEN ns.nspparent != 0 AND ns.nspcompoundtrigger = false THEN 'Pa'::text ELSE 'n'::text END + WHEN pr.oid IS NOT NULL AND (prtyp.typname = 'trigger' OR prtyp.typname = 'event_trigger') THEN 'Pt'::text + WHEN pr.oid IS NOT NULL THEN CASE WHEN pr.prokind = 'p' THEN 'Pp'::text ELSE 'Pf'::text END + WHEN la.oid IS NOT NULL THEN 'l'::text + WHEN rw.oid IS NOT NULL THEN 'Rl'::text + WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END + WHEN ad.oid IS NOT NULL THEN 'A'::text + WHEN fs.oid IS NOT NULL THEN 'Fs'::text + WHEN fdw.oid IS NOT NULL THEN 'Fw'::text + WHEN evt.oid IS NOT NULL THEN 'Et'::text + WHEN col.oid IS NOT NULL THEN 'Co'::text + WHEN ftsc.oid IS NOT NULL THEN 'Fc'::text + WHEN ftsp.oid IS NOT NULL THEN 'Fp'::text + WHEN ftsd.oid IS NOT NULL THEN 'Fd'::text + WHEN ftst.oid IS NOT NULL THEN 'Ft'::text + WHEN ext.oid IS NOT NULL THEN 'Ex'::text + WHEN syn.oid IS NOT NULL THEN 'Sy'::text + WHEN pl.oid IS NOT NULL THEN 'Rs'::text + ELSE '' + END AS type, + COALESCE(coc.relname, clrw.relname) AS ownertable, + CASE WHEN cl.relname IS NOT NULL AND att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') + ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, + fs.srvname, fdw.fdwname, evt.evtname, col.collname, ftsc.cfgname, ftsd.dictname, ftsp.prsname, + ftst.tmplname, ext.extname, syn.synname, pl.polname) + END AS refname, + COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname, colns.nspname, ftscns.nspname, + ftsdns.nspname, ftspns.nspname, ftstns.nspname, synns.nspname) AS nspname, + CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, + CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited +FROM pg_depend dep +LEFT JOIN pg_class cl ON dep.objid=cl.oid +LEFT JOIN pg_attribute att ON dep.objid=att.attrelid AND dep.objsubid=att.attnum +LEFT JOIN pg_namespace nsc ON cl.relnamespace=nsc.oid +LEFT JOIN pg_proc pr ON dep.objid=pr.oid +LEFT JOIN pg_namespace nsp ON pr.pronamespace=nsp.oid +LEFT JOIN pg_trigger tg ON dep.objid=tg.oid +LEFT JOIN pg_type ty ON dep.objid=ty.oid +LEFT JOIN pg_namespace nst ON ty.typnamespace=nst.oid +LEFT JOIN pg_constraint co ON dep.objid=co.oid +LEFT JOIN pg_class coc ON co.conrelid=coc.oid +LEFT JOIN pg_namespace nso ON co.connamespace=nso.oid +LEFT JOIN pg_rewrite rw ON dep.objid=rw.oid +LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class +LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid +LEFT JOIN pg_language la ON dep.objid=la.oid +LEFT JOIN pg_namespace ns ON dep.objid=ns.oid +LEFT JOIN pg_attrdef ad ON ad.oid=dep.objid +LEFT JOIN pg_foreign_server fs ON fs.oid=dep.objid +LEFT JOIN pg_foreign_data_wrapper fdw ON fdw.oid=dep.objid +LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype +LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.objid) +LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.objid) +LEFT JOIN pg_event_trigger evt ON evt.oid=dep.objid +LEFT JOIN pg_collation col ON col.oid=dep.objid +LEFT JOIN pg_namespace colns ON col.collnamespace=colns.oid +LEFT JOIN pg_ts_config ftsc ON ftsc.oid=dep.objid +LEFT JOIN pg_namespace ftscns ON ftsc.cfgnamespace=ftscns.oid +LEFT JOIN pg_ts_dict ftsd ON ftsd.oid=dep.objid +LEFT JOIN pg_namespace ftsdns ON ftsd.dictnamespace=ftsdns.oid +LEFT JOIN pg_ts_parser ftsp ON ftsp.oid=dep.objid +LEFT JOIN pg_namespace ftspns ON ftsp.prsnamespace=ftspns.oid +LEFT JOIN pg_ts_template ftst ON ftst.oid=dep.objid +LEFT JOIN pg_namespace ftstns ON ftst.tmplnamespace=ftstns.oid +LEFT JOIN pg_extension ext ON ext.oid=dep.objid +LEFT JOIN pg_synonym syn ON syn.oid=dep.objid +LEFT JOIN pg_namespace synns ON syn.synnamespace=synns.oid +LEFT JOIN pg_policy pl ON pl.oid=dep.objid +{{where_clause}} AND +classid IN ( SELECT oid FROM pg_class WHERE relname IN + ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', + 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper', + 'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension', + 'pg_synonym', 'pg_policy')) +ORDER BY classid, cl.relkind diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.1_plus/dependencies.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.1_plus/dependencies.sql new file mode 100644 index 000000000..fd0b5622c --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.1_plus/dependencies.sql @@ -0,0 +1,77 @@ +SELECT DISTINCT dep.deptype, dep.refclassid, cl.relkind, ad.adbin, ad.adsrc, + CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END + WHEN tg.oid IS NOT NULL THEN 'Tr'::text + WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END + WHEN ns.oid IS NOT NULL THEN CASE WHEN ns.nspparent != 0 THEN 'Pa'::text ELSE 'n'::text END + WHEN pr.oid IS NOT NULL AND (prtyp.typname = 'trigger' OR prtyp.typname = 'event_trigger') THEN 'Pt'::text + WHEN pr.oid IS NOT NULL THEN 'Pf'::text + WHEN la.oid IS NOT NULL THEN 'l'::text + WHEN rw.oid IS NOT NULL THEN 'Rl'::text + WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END + WHEN ad.oid IS NOT NULL THEN 'A'::text + WHEN fs.oid IS NOT NULL THEN 'Fs'::text + WHEN fdw.oid IS NOT NULL THEN 'Fw'::text + WHEN evt.oid IS NOT NULL THEN 'Et'::text + WHEN col.oid IS NOT NULL THEN 'Co'::text + WHEN ftsc.oid IS NOT NULL THEN 'Fc'::text + WHEN ftsp.oid IS NOT NULL THEN 'Fp'::text + WHEN ftsd.oid IS NOT NULL THEN 'Fd'::text + WHEN ftst.oid IS NOT NULL THEN 'Ft'::text + WHEN ext.oid IS NOT NULL THEN 'Ex'::text + WHEN syn.oid IS NOT NULL THEN 'Sy'::text + ELSE '' + END AS type, + COALESCE(coc.relname, clrw.relname) AS ownertable, + CASE WHEN cl.relname IS NOT NULL OR att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') + ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, + fs.srvname, fdw.fdwname, evt.evtname, col.collname, ftsc.cfgname, ftsd.dictname, ftsp.prsname, + ftst.tmplname, ext.extname, syn.synname) + END AS refname, + COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname, colns.nspname, ftscns.nspname, + ftsdns.nspname, ftspns.nspname, ftstns.nspname, synns.nspname) AS nspname, + CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, + CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited +FROM pg_depend dep +LEFT JOIN pg_class cl ON dep.refobjid=cl.oid +LEFT JOIN pg_attribute att ON dep.refobjid=att.attrelid AND dep.refobjsubid=att.attnum +LEFT JOIN pg_namespace nsc ON cl.relnamespace=nsc.oid +LEFT JOIN pg_proc pr ON dep.refobjid=pr.oid +LEFT JOIN pg_namespace nsp ON pr.pronamespace=nsp.oid +LEFT JOIN pg_trigger tg ON dep.refobjid=tg.oid +LEFT JOIN pg_type ty ON dep.refobjid=ty.oid +LEFT JOIN pg_namespace nst ON ty.typnamespace=nst.oid +LEFT JOIN pg_constraint co ON dep.refobjid=co.oid +LEFT JOIN pg_class coc ON co.conrelid=coc.oid +LEFT JOIN pg_namespace nso ON co.connamespace=nso.oid +LEFT JOIN pg_rewrite rw ON dep.refobjid=rw.oid +LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class +LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid +LEFT JOIN pg_language la ON dep.refobjid=la.oid +LEFT JOIN pg_namespace ns ON dep.refobjid=ns.oid +LEFT JOIN pg_attrdef ad ON ad.adrelid=att.attrelid AND ad.adnum=att.attnum +LEFT JOIN pg_foreign_server fs ON fs.oid=dep.refobjid +LEFT JOIN pg_foreign_data_wrapper fdw ON fdw.oid=dep.refobjid +LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype +LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.refobjid) +LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.refobjid) +LEFT JOIN pg_event_trigger evt ON evt.oid=dep.refobjid +LEFT JOIN pg_collation col ON col.oid=dep.refobjid +LEFT JOIN pg_namespace colns ON col.collnamespace=colns.oid +LEFT JOIN pg_ts_config ftsc ON ftsc.oid=dep.refobjid +LEFT JOIN pg_namespace ftscns ON ftsc.cfgnamespace=ftscns.oid +LEFT JOIN pg_ts_dict ftsd ON ftsd.oid=dep.refobjid +LEFT JOIN pg_namespace ftsdns ON ftsd.dictnamespace=ftsdns.oid +LEFT JOIN pg_ts_parser ftsp ON ftsp.oid=dep.refobjid +LEFT JOIN pg_namespace ftspns ON ftsp.prsnamespace=ftspns.oid +LEFT JOIN pg_ts_template ftst ON ftst.oid=dep.refobjid +LEFT JOIN pg_namespace ftstns ON ftst.tmplnamespace=ftstns.oid +LEFT JOIN pg_extension ext ON ext.oid=dep.refobjid +LEFT JOIN pg_synonym syn ON syn.oid=dep.refobjid +LEFT JOIN pg_namespace synns ON syn.synnamespace=synns.oid +{{where_clause}} AND +refclassid IN ( SELECT oid FROM pg_class WHERE relname IN + ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', + 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper', + 'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension', + 'pg_synonym')) +ORDER BY refclassid, cl.relkind diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.1_plus/dependents.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.1_plus/dependents.sql new file mode 100644 index 000000000..97f299e0f --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.1_plus/dependents.sql @@ -0,0 +1,77 @@ +SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc, + CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.objsubid::text, '') ELSE cl.relkind END + WHEN tg.oid IS NOT NULL THEN 'Tr'::text + WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END + WHEN ns.oid IS NOT NULL THEN CASE WHEN ns.nspparent != 0 THEN 'Pa'::text ELSE 'n'::text END + WHEN pr.oid IS NOT NULL AND (prtyp.typname = 'trigger' OR prtyp.typname = 'event_trigger') THEN 'Pt'::text + WHEN pr.oid IS NOT NULL THEN 'Pf'::text + WHEN la.oid IS NOT NULL THEN 'l'::text + WHEN rw.oid IS NOT NULL THEN 'Rl'::text + WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END + WHEN ad.oid IS NOT NULL THEN 'A'::text + WHEN fs.oid IS NOT NULL THEN 'Fs'::text + WHEN fdw.oid IS NOT NULL THEN 'Fw'::text + WHEN evt.oid IS NOT NULL THEN 'Et'::text + WHEN col.oid IS NOT NULL THEN 'Co'::text + WHEN ftsc.oid IS NOT NULL THEN 'Fc'::text + WHEN ftsp.oid IS NOT NULL THEN 'Fp'::text + WHEN ftsd.oid IS NOT NULL THEN 'Fd'::text + WHEN ftst.oid IS NOT NULL THEN 'Ft'::text + WHEN ext.oid IS NOT NULL THEN 'Ex'::text + WHEN syn.oid IS NOT NULL THEN 'Sy'::text + ELSE '' + END AS type, + COALESCE(coc.relname, clrw.relname) AS ownertable, + CASE WHEN cl.relname IS NOT NULL AND att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') + ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, + fs.srvname, fdw.fdwname, evt.evtname, col.collname, ftsc.cfgname, ftsd.dictname, ftsp.prsname, + ftst.tmplname, ext.extname, syn.synname) + END AS refname, + COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname, colns.nspname, ftscns.nspname, + ftsdns.nspname, ftspns.nspname, ftstns.nspname, synns.nspname) AS nspname, + CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, + CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited +FROM pg_depend dep +LEFT JOIN pg_class cl ON dep.objid=cl.oid +LEFT JOIN pg_attribute att ON dep.objid=att.attrelid AND dep.objsubid=att.attnum +LEFT JOIN pg_namespace nsc ON cl.relnamespace=nsc.oid +LEFT JOIN pg_proc pr ON dep.objid=pr.oid +LEFT JOIN pg_namespace nsp ON pr.pronamespace=nsp.oid +LEFT JOIN pg_trigger tg ON dep.objid=tg.oid +LEFT JOIN pg_type ty ON dep.objid=ty.oid +LEFT JOIN pg_namespace nst ON ty.typnamespace=nst.oid +LEFT JOIN pg_constraint co ON dep.objid=co.oid +LEFT JOIN pg_class coc ON co.conrelid=coc.oid +LEFT JOIN pg_namespace nso ON co.connamespace=nso.oid +LEFT JOIN pg_rewrite rw ON dep.objid=rw.oid +LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class +LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid +LEFT JOIN pg_language la ON dep.objid=la.oid +LEFT JOIN pg_namespace ns ON dep.objid=ns.oid +LEFT JOIN pg_attrdef ad ON ad.oid=dep.objid +LEFT JOIN pg_foreign_server fs ON fs.oid=dep.objid +LEFT JOIN pg_foreign_data_wrapper fdw ON fdw.oid=dep.objid +LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype +LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.objid) +LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.objid) +LEFT JOIN pg_event_trigger evt ON evt.oid=dep.objid +LEFT JOIN pg_collation col ON col.oid=dep.objid +LEFT JOIN pg_namespace colns ON col.collnamespace=colns.oid +LEFT JOIN pg_ts_config ftsc ON ftsc.oid=dep.objid +LEFT JOIN pg_namespace ftscns ON ftsc.cfgnamespace=ftscns.oid +LEFT JOIN pg_ts_dict ftsd ON ftsd.oid=dep.objid +LEFT JOIN pg_namespace ftsdns ON ftsd.dictnamespace=ftsdns.oid +LEFT JOIN pg_ts_parser ftsp ON ftsp.oid=dep.objid +LEFT JOIN pg_namespace ftspns ON ftsp.prsnamespace=ftspns.oid +LEFT JOIN pg_ts_template ftst ON ftst.oid=dep.objid +LEFT JOIN pg_namespace ftstns ON ftst.tmplnamespace=ftstns.oid +LEFT JOIN pg_extension ext ON ext.oid=dep.objid +LEFT JOIN pg_synonym syn ON syn.oid=dep.objid +LEFT JOIN pg_namespace synns ON syn.synnamespace=synns.oid +{{where_clause}} AND +classid IN ( SELECT oid FROM pg_class WHERE relname IN + ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', + 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper', + 'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension', + 'pg_synonym')) +ORDER BY classid, cl.relkind diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.1_plus/role_dependencies.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.1_plus/role_dependencies.sql new file mode 100644 index 000000000..25fc3f850 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.1_plus/role_dependencies.sql @@ -0,0 +1,4 @@ +SELECT rolname AS refname, refclassid, deptype +FROM pg_shdepend dep +LEFT JOIN pg_roles r ON refclassid=1260 AND refobjid=r.oid +{{where_clause}} ORDER BY 1 diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.5_plus/dependencies.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.5_plus/dependencies.sql new file mode 100644 index 000000000..cd0fc7703 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.5_plus/dependencies.sql @@ -0,0 +1,79 @@ +SELECT DISTINCT dep.deptype, dep.refclassid, cl.relkind, ad.adbin, ad.adsrc, + CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.refobjsubid::text, '') ELSE cl.relkind END + WHEN tg.oid IS NOT NULL THEN 'Tr'::text + WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END + WHEN ns.oid IS NOT NULL THEN CASE WHEN ns.nspparent != 0 THEN 'Pa'::text ELSE 'n'::text END + WHEN pr.oid IS NOT NULL AND (prtyp.typname = 'trigger' OR prtyp.typname = 'event_trigger') THEN 'Pt'::text + WHEN pr.oid IS NOT NULL THEN 'Pf'::text + WHEN la.oid IS NOT NULL THEN 'l'::text + WHEN rw.oid IS NOT NULL THEN 'Rl'::text + WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END + WHEN ad.oid IS NOT NULL THEN 'A'::text + WHEN fs.oid IS NOT NULL THEN 'Fs'::text + WHEN fdw.oid IS NOT NULL THEN 'Fw'::text + WHEN evt.oid IS NOT NULL THEN 'Et'::text + WHEN col.oid IS NOT NULL THEN 'Co'::text + WHEN ftsc.oid IS NOT NULL THEN 'Fc'::text + WHEN ftsp.oid IS NOT NULL THEN 'Fp'::text + WHEN ftsd.oid IS NOT NULL THEN 'Fd'::text + WHEN ftst.oid IS NOT NULL THEN 'Ft'::text + WHEN ext.oid IS NOT NULL THEN 'Ex'::text + WHEN syn.oid IS NOT NULL THEN 'Sy'::text + WHEN pl.oid IS NOT NULL THEN 'Rs'::text + ELSE '' + END AS type, + COALESCE(coc.relname, clrw.relname) AS ownertable, + CASE WHEN cl.relname IS NOT NULL OR att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') + ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, + fs.srvname, fdw.fdwname, evt.evtname, col.collname, ftsc.cfgname, ftsd.dictname, ftsp.prsname, + ftst.tmplname, ext.extname, syn.synname, pl.polname) + END AS refname, + COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname, colns.nspname, ftscns.nspname, + ftsdns.nspname, ftspns.nspname, ftstns.nspname, synns.nspname) AS nspname, + CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, + CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited +FROM pg_depend dep +LEFT JOIN pg_class cl ON dep.refobjid=cl.oid +LEFT JOIN pg_attribute att ON dep.refobjid=att.attrelid AND dep.refobjsubid=att.attnum +LEFT JOIN pg_namespace nsc ON cl.relnamespace=nsc.oid +LEFT JOIN pg_proc pr ON dep.refobjid=pr.oid +LEFT JOIN pg_namespace nsp ON pr.pronamespace=nsp.oid +LEFT JOIN pg_trigger tg ON dep.refobjid=tg.oid +LEFT JOIN pg_type ty ON dep.refobjid=ty.oid +LEFT JOIN pg_namespace nst ON ty.typnamespace=nst.oid +LEFT JOIN pg_constraint co ON dep.refobjid=co.oid +LEFT JOIN pg_class coc ON co.conrelid=coc.oid +LEFT JOIN pg_namespace nso ON co.connamespace=nso.oid +LEFT JOIN pg_rewrite rw ON dep.refobjid=rw.oid +LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class +LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid +LEFT JOIN pg_language la ON dep.refobjid=la.oid +LEFT JOIN pg_namespace ns ON dep.refobjid=ns.oid +LEFT JOIN pg_attrdef ad ON ad.adrelid=att.attrelid AND ad.adnum=att.attnum +LEFT JOIN pg_foreign_server fs ON fs.oid=dep.refobjid +LEFT JOIN pg_foreign_data_wrapper fdw ON fdw.oid=dep.refobjid +LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype +LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.refobjid) +LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.refobjid) +LEFT JOIN pg_event_trigger evt ON evt.oid=dep.refobjid +LEFT JOIN pg_collation col ON col.oid=dep.refobjid +LEFT JOIN pg_namespace colns ON col.collnamespace=colns.oid +LEFT JOIN pg_ts_config ftsc ON ftsc.oid=dep.refobjid +LEFT JOIN pg_namespace ftscns ON ftsc.cfgnamespace=ftscns.oid +LEFT JOIN pg_ts_dict ftsd ON ftsd.oid=dep.refobjid +LEFT JOIN pg_namespace ftsdns ON ftsd.dictnamespace=ftsdns.oid +LEFT JOIN pg_ts_parser ftsp ON ftsp.oid=dep.refobjid +LEFT JOIN pg_namespace ftspns ON ftsp.prsnamespace=ftspns.oid +LEFT JOIN pg_ts_template ftst ON ftst.oid=dep.refobjid +LEFT JOIN pg_namespace ftstns ON ftst.tmplnamespace=ftstns.oid +LEFT JOIN pg_extension ext ON ext.oid=dep.refobjid +LEFT JOIN pg_synonym syn ON syn.oid=dep.refobjid +LEFT JOIN pg_namespace synns ON syn.synnamespace=synns.oid +LEFT JOIN pg_policy pl ON pl.oid=dep.refobjid +{{where_clause}} AND +refclassid IN ( SELECT oid FROM pg_class WHERE relname IN + ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', + 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper', + 'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension', + 'pg_synonym', 'pg_policy')) +ORDER BY refclassid, cl.relkind diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.5_plus/dependents.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.5_plus/dependents.sql new file mode 100644 index 000000000..0ebf57100 --- /dev/null +++ b/web/pgadmin/browser/server_groups/servers/templates/depends/ppas/9.5_plus/dependents.sql @@ -0,0 +1,79 @@ +SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc, + CASE WHEN cl.relkind IS NOT NULL THEN CASE WHEN cl.relkind = 'r' THEN cl.relkind || COALESCE(dep.objsubid::text, '') ELSE cl.relkind END + WHEN tg.oid IS NOT NULL THEN 'Tr'::text + WHEN ty.oid IS NOT NULL THEN CASE WHEN ty.typtype = 'd' THEN 'd'::text ELSE 'Ty'::text END + WHEN ns.oid IS NOT NULL THEN CASE WHEN ns.nspparent != 0 THEN 'Pa'::text ELSE 'n'::text END + WHEN pr.oid IS NOT NULL AND (prtyp.typname = 'trigger' OR prtyp.typname = 'event_trigger') THEN 'Pt'::text + WHEN pr.oid IS NOT NULL THEN 'Pf'::text + WHEN la.oid IS NOT NULL THEN 'l'::text + WHEN rw.oid IS NOT NULL THEN 'Rl'::text + WHEN co.oid IS NOT NULL THEN CASE WHEN co.contypid > 0 THEN 'Cd' ELSE 'C'::text || contype END + WHEN ad.oid IS NOT NULL THEN 'A'::text + WHEN fs.oid IS NOT NULL THEN 'Fs'::text + WHEN fdw.oid IS NOT NULL THEN 'Fw'::text + WHEN evt.oid IS NOT NULL THEN 'Et'::text + WHEN col.oid IS NOT NULL THEN 'Co'::text + WHEN ftsc.oid IS NOT NULL THEN 'Fc'::text + WHEN ftsp.oid IS NOT NULL THEN 'Fp'::text + WHEN ftsd.oid IS NOT NULL THEN 'Fd'::text + WHEN ftst.oid IS NOT NULL THEN 'Ft'::text + WHEN ext.oid IS NOT NULL THEN 'Ex'::text + WHEN syn.oid IS NOT NULL THEN 'Sy'::text + WHEN pl.oid IS NOT NULL THEN 'Rs'::text + ELSE '' + END AS type, + COALESCE(coc.relname, clrw.relname) AS ownertable, + CASE WHEN cl.relname IS NOT NULL AND att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') + ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, + fs.srvname, fdw.fdwname, evt.evtname, col.collname, ftsc.cfgname, ftsd.dictname, ftsp.prsname, + ftst.tmplname, ext.extname, syn.synname, pl.polname) + END AS refname, + COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname, colns.nspname, ftscns.nspname, + ftsdns.nspname, ftspns.nspname, ftstns.nspname, synns.nspname) AS nspname, + CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, + CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited +FROM pg_depend dep +LEFT JOIN pg_class cl ON dep.objid=cl.oid +LEFT JOIN pg_attribute att ON dep.objid=att.attrelid AND dep.objsubid=att.attnum +LEFT JOIN pg_namespace nsc ON cl.relnamespace=nsc.oid +LEFT JOIN pg_proc pr ON dep.objid=pr.oid +LEFT JOIN pg_namespace nsp ON pr.pronamespace=nsp.oid +LEFT JOIN pg_trigger tg ON dep.objid=tg.oid +LEFT JOIN pg_type ty ON dep.objid=ty.oid +LEFT JOIN pg_namespace nst ON ty.typnamespace=nst.oid +LEFT JOIN pg_constraint co ON dep.objid=co.oid +LEFT JOIN pg_class coc ON co.conrelid=coc.oid +LEFT JOIN pg_namespace nso ON co.connamespace=nso.oid +LEFT JOIN pg_rewrite rw ON dep.objid=rw.oid +LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class +LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid +LEFT JOIN pg_language la ON dep.objid=la.oid +LEFT JOIN pg_namespace ns ON dep.objid=ns.oid +LEFT JOIN pg_attrdef ad ON ad.oid=dep.objid +LEFT JOIN pg_foreign_server fs ON fs.oid=dep.objid +LEFT JOIN pg_foreign_data_wrapper fdw ON fdw.oid=dep.objid +LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype +LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.objid) +LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.objid) +LEFT JOIN pg_event_trigger evt ON evt.oid=dep.objid +LEFT JOIN pg_collation col ON col.oid=dep.objid +LEFT JOIN pg_namespace colns ON col.collnamespace=colns.oid +LEFT JOIN pg_ts_config ftsc ON ftsc.oid=dep.objid +LEFT JOIN pg_namespace ftscns ON ftsc.cfgnamespace=ftscns.oid +LEFT JOIN pg_ts_dict ftsd ON ftsd.oid=dep.objid +LEFT JOIN pg_namespace ftsdns ON ftsd.dictnamespace=ftsdns.oid +LEFT JOIN pg_ts_parser ftsp ON ftsp.oid=dep.objid +LEFT JOIN pg_namespace ftspns ON ftsp.prsnamespace=ftspns.oid +LEFT JOIN pg_ts_template ftst ON ftst.oid=dep.objid +LEFT JOIN pg_namespace ftstns ON ftst.tmplnamespace=ftstns.oid +LEFT JOIN pg_extension ext ON ext.oid=dep.objid +LEFT JOIN pg_synonym syn ON syn.oid=dep.objid +LEFT JOIN pg_namespace synns ON syn.synnamespace=synns.oid +LEFT JOIN pg_policy pl ON pl.oid=dep.objid +{{where_clause}} AND +classid IN ( SELECT oid FROM pg_class WHERE relname IN + ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', + 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper', + 'pg_collation', 'pg_ts_config', 'pg_ts_dict', 'pg_ts_parser', 'pg_ts_template', 'pg_extension', + 'pg_synonym', 'pg_policy')) +ORDER BY classid, cl.relkind diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/sql/12_plus/dependents.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/sql/12_plus/dependents.sql deleted file mode 100644 index 2640cd215..000000000 --- a/web/pgadmin/browser/server_groups/servers/templates/depends/sql/12_plus/dependents.sql +++ /dev/null @@ -1,50 +0,0 @@ -SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, pg_get_expr(ad.adbin, ad.adrelid) as adsrc, - CASE WHEN cl.relkind IS NOT NULL THEN cl.relkind || COALESCE(dep.objsubid::text, '') - WHEN tg.oid IS NOT NULL THEN 'T'::text - WHEN ty.oid IS NOT NULL THEN 'y'::text - WHEN ns.oid IS NOT NULL THEN 'n'::text - WHEN pr.oid IS NOT NULL AND prtyp.typname = 'trigger' THEN 't'::text - WHEN pr.oid IS NOT NULL THEN 'P'::text - WHEN la.oid IS NOT NULL THEN 'l'::text - WHEN rw.oid IS NOT NULL THEN 'R'::text - WHEN co.oid IS NOT NULL THEN 'C'::text || contype - WHEN ad.oid IS NOT NULL THEN 'A'::text - WHEN fs.oid IS NOT NULL THEN 'F'::text - WHEN fdw.oid IS NOT NULL THEN 'f'::text - ELSE '' - END AS type, - COALESCE(coc.relname, clrw.relname) AS ownertable, - CASE WHEN cl.relname IS NOT NULL AND att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') - ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, fs.srvname, fdw.fdwname) - END AS refname, - COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname) AS nspname, - CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, - CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited -FROM pg_depend dep -LEFT JOIN pg_class cl ON dep.objid=cl.oid -LEFT JOIN pg_attribute att ON dep.objid=att.attrelid AND dep.objsubid=att.attnum -LEFT JOIN pg_namespace nsc ON cl.relnamespace=nsc.oid -LEFT JOIN pg_proc pr ON dep.objid=pr.oid -LEFT JOIN pg_namespace nsp ON pr.pronamespace=nsp.oid -LEFT JOIN pg_trigger tg ON dep.objid=tg.oid -LEFT JOIN pg_type ty ON dep.objid=ty.oid -LEFT JOIN pg_namespace nst ON ty.typnamespace=nst.oid -LEFT JOIN pg_constraint co ON dep.objid=co.oid -LEFT JOIN pg_class coc ON co.conrelid=coc.oid -LEFT JOIN pg_namespace nso ON co.connamespace=nso.oid -LEFT JOIN pg_rewrite rw ON dep.objid=rw.oid -LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class -LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid -LEFT JOIN pg_language la ON dep.objid=la.oid -LEFT JOIN pg_namespace ns ON dep.objid=ns.oid -LEFT JOIN pg_attrdef ad ON ad.oid=dep.objid -LEFT JOIN pg_foreign_server fs ON fs.oid=dep.objid -LEFT JOIN pg_foreign_data_wrapper fdw ON fdw.oid=dep.objid -LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype -LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.objid) -LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.objid) -{{where_clause}} AND -classid IN ( SELECT oid FROM pg_class WHERE relname IN - ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', - 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper')) -ORDER BY classid, cl.relkind diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/sql/9.1_plus/dependents.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/sql/9.1_plus/dependents.sql deleted file mode 100644 index a687c0ee8..000000000 --- a/web/pgadmin/browser/server_groups/servers/templates/depends/sql/9.1_plus/dependents.sql +++ /dev/null @@ -1,50 +0,0 @@ -SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc, - CASE WHEN cl.relkind IS NOT NULL THEN cl.relkind || COALESCE(dep.objsubid::text, '') - WHEN tg.oid IS NOT NULL THEN 'T'::text - WHEN ty.oid IS NOT NULL THEN 'y'::text - WHEN ns.oid IS NOT NULL THEN 'n'::text - WHEN pr.oid IS NOT NULL AND prtyp.typname = 'trigger' THEN 't'::text - WHEN pr.oid IS NOT NULL THEN 'P'::text - WHEN la.oid IS NOT NULL THEN 'l'::text - WHEN rw.oid IS NOT NULL THEN 'R'::text - WHEN co.oid IS NOT NULL THEN 'C'::text || contype - WHEN ad.oid IS NOT NULL THEN 'A'::text - WHEN fs.oid IS NOT NULL THEN 'F'::text - WHEN fdw.oid IS NOT NULL THEN 'f'::text - ELSE '' - END AS type, - COALESCE(coc.relname, clrw.relname) AS ownertable, - CASE WHEN cl.relname IS NOT NULL AND att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') - ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname, fs.srvname, fdw.fdwname) - END AS refname, - COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname) AS nspname, - CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, - CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited -FROM pg_depend dep -LEFT JOIN pg_class cl ON dep.objid=cl.oid -LEFT JOIN pg_attribute att ON dep.objid=att.attrelid AND dep.objsubid=att.attnum -LEFT JOIN pg_namespace nsc ON cl.relnamespace=nsc.oid -LEFT JOIN pg_proc pr ON dep.objid=pr.oid -LEFT JOIN pg_namespace nsp ON pr.pronamespace=nsp.oid -LEFT JOIN pg_trigger tg ON dep.objid=tg.oid -LEFT JOIN pg_type ty ON dep.objid=ty.oid -LEFT JOIN pg_namespace nst ON ty.typnamespace=nst.oid -LEFT JOIN pg_constraint co ON dep.objid=co.oid -LEFT JOIN pg_class coc ON co.conrelid=coc.oid -LEFT JOIN pg_namespace nso ON co.connamespace=nso.oid -LEFT JOIN pg_rewrite rw ON dep.objid=rw.oid -LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class -LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid -LEFT JOIN pg_language la ON dep.objid=la.oid -LEFT JOIN pg_namespace ns ON dep.objid=ns.oid -LEFT JOIN pg_attrdef ad ON ad.oid=dep.objid -LEFT JOIN pg_foreign_server fs ON fs.oid=dep.objid -LEFT JOIN pg_foreign_data_wrapper fdw ON fdw.oid=dep.objid -LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype -LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.objid) -LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.objid) -{{where_clause}} AND -classid IN ( SELECT oid FROM pg_class WHERE relname IN - ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', - 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper')) -ORDER BY classid, cl.relkind diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/sql/default/dependencies.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/sql/default/dependencies.sql deleted file mode 100644 index 8a816ca6d..000000000 --- a/web/pgadmin/browser/server_groups/servers/templates/depends/sql/default/dependencies.sql +++ /dev/null @@ -1,48 +0,0 @@ -SET LOCAL join_collapse_limit=8; -SELECT DISTINCT dep.deptype, dep.refclassid, cl.relkind, ad.adbin, ad.adsrc, - CASE WHEN cl.relkind IS NOT NULL THEN cl.relkind || COALESCE(dep.refobjsubid::character varying, '') - WHEN tg.oid IS NOT NULL THEN 'T'::text - WHEN ty.oid IS NOT NULL AND ty.typbasetype = 0 THEN 'y'::text - WHEN ty.oid IS NOT NULL AND ty.typbasetype != 0 THEN 'd'::text - WHEN ns.oid IS NOT NULL THEN 'n'::text - WHEN pr.oid IS NOT NULL AND prtyp.typname = 'trigger' THEN 't'::text - WHEN pr.oid IS NOT NULL THEN 'P'::text - WHEN la.oid IS NOT NULL THEN 'l'::text - WHEN rw.oid IS NOT NULL THEN 'R'::text - WHEN co.oid IS NOT NULL THEN 'C'::text || contype - WHEN ad.oid IS NOT NULL THEN 'A'::text - ELSE '' - END AS type, - COALESCE(coc.relname, clrw.relname) AS ownertable, - CASE WHEN cl.relname IS NOT NULL OR att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') - ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname) - END AS refname, - COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname) AS nspname, - CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, - CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited -FROM pg_depend dep -LEFT JOIN pg_class cl ON dep.refobjid=cl.oid -LEFT JOIN pg_attribute att ON dep.refobjid=att.attrelid AND dep.refobjsubid=att.attnum -LEFT JOIN pg_namespace nsc ON cl.relnamespace=nsc.oid -LEFT JOIN pg_proc pr ON dep.refobjid=pr.oid -LEFT JOIN pg_namespace nsp ON pr.pronamespace=nsp.oid -LEFT JOIN pg_trigger tg ON dep.refobjid=tg.oid -LEFT JOIN pg_type ty ON dep.refobjid=ty.oid -LEFT JOIN pg_namespace nst ON ty.typnamespace=nst.oid -LEFT JOIN pg_constraint co ON dep.refobjid=co.oid -LEFT JOIN pg_class coc ON co.conrelid=coc.oid -LEFT JOIN pg_namespace nso ON co.connamespace=nso.oid -LEFT JOIN pg_rewrite rw ON dep.refobjid=rw.oid -LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class -LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid -LEFT JOIN pg_language la ON dep.refobjid=la.oid -LEFT JOIN pg_namespace ns ON dep.refobjid=ns.oid -LEFT JOIN pg_attrdef ad ON ad.adrelid=att.attrelid AND ad.adnum=att.attnum -LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype -LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.refobjid) -LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.refobjid) -{{where_clause}} AND -refclassid IN ( SELECT oid FROM pg_class WHERE relname IN - ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', - 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper')) -ORDER BY refclassid, cl.relkind diff --git a/web/pgadmin/browser/server_groups/servers/templates/depends/sql/default/dependents.sql b/web/pgadmin/browser/server_groups/servers/templates/depends/sql/default/dependents.sql deleted file mode 100644 index f8a1bee3c..000000000 --- a/web/pgadmin/browser/server_groups/servers/templates/depends/sql/default/dependents.sql +++ /dev/null @@ -1,47 +0,0 @@ -SET LOCAL join_collapse_limit=8; -SELECT DISTINCT dep.deptype, dep.classid, cl.relkind, ad.adbin, ad.adsrc, - CASE WHEN cl.relkind IS NOT NULL THEN cl.relkind || COALESCE(dep.objsubid::text, '') - WHEN tg.oid IS NOT NULL THEN 'T'::text - WHEN ty.oid IS NOT NULL THEN 'y'::text - WHEN ns.oid IS NOT NULL THEN 'n'::text - WHEN pr.oid IS NOT NULL AND prtyp.typname = 'trigger' THEN 't'::text - WHEN pr.oid IS NOT NULL THEN 'P'::text - WHEN la.oid IS NOT NULL THEN 'l'::text - WHEN rw.oid IS NOT NULL THEN 'R'::text - WHEN co.oid IS NOT NULL THEN 'C'::text || contype - WHEN ad.oid IS NOT NULL THEN 'A'::text - ELSE '' - END AS type, - COALESCE(coc.relname, clrw.relname) AS ownertable, - CASE WHEN cl.relname IS NOT NULL AND att.attname IS NOT NULL THEN cl.relname || COALESCE('.' || att.attname, '') - ELSE COALESCE(cl.relname, co.conname, pr.proname, tg.tgname, ty.typname, la.lanname, rw.rulename, ns.nspname) - END AS refname, - COALESCE(nsc.nspname, nso.nspname, nsp.nspname, nst.nspname, nsrw.nspname) AS nspname, - CASE WHEN inhits.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherits, - CASE WHEN inhed.inhparent IS NOT NULL THEN '1' ELSE '0' END AS is_inherited -FROM pg_depend dep -LEFT JOIN pg_class cl ON dep.objid=cl.oid -LEFT JOIN pg_attribute att ON dep.objid=att.attrelid AND dep.objsubid=att.attnum -LEFT JOIN pg_namespace nsc ON cl.relnamespace=nsc.oid -LEFT JOIN pg_proc pr ON dep.objid=pr.oid -LEFT JOIN pg_namespace nsp ON pr.pronamespace=nsp.oid -LEFT JOIN pg_trigger tg ON dep.objid=tg.oid -LEFT JOIN pg_type ty ON dep.objid=ty.oid -LEFT JOIN pg_namespace nst ON ty.typnamespace=nst.oid -LEFT JOIN pg_constraint co ON dep.objid=co.oid -LEFT JOIN pg_class coc ON co.conrelid=coc.oid -LEFT JOIN pg_namespace nso ON co.connamespace=nso.oid -LEFT JOIN pg_rewrite rw ON dep.objid=rw.oid -LEFT JOIN pg_class clrw ON clrw.oid=rw.ev_class -LEFT JOIN pg_namespace nsrw ON clrw.relnamespace=nsrw.oid -LEFT JOIN pg_language la ON dep.objid=la.oid -LEFT JOIN pg_namespace ns ON dep.objid=ns.oid -LEFT JOIN pg_attrdef ad ON ad.oid=dep.objid -LEFT JOIN pg_type prtyp ON prtyp.oid = pr.prorettype -LEFT JOIN pg_inherits inhits ON (inhits.inhrelid=dep.objid) -LEFT JOIN pg_inherits inhed ON (inhed.inhparent=dep.objid) -{{where_clause}} AND -classid IN ( SELECT oid FROM pg_class WHERE relname IN - ('pg_class', 'pg_constraint', 'pg_conversion', 'pg_language', 'pg_proc', 'pg_rewrite', 'pg_namespace', - 'pg_trigger', 'pg_type', 'pg_attrdef', 'pg_event_trigger', 'pg_foreign_server', 'pg_foreign_data_wrapper')) -ORDER BY classid, cl.relkind; diff --git a/web/pgadmin/browser/server_groups/servers/tests/test_dependencies_sql.py b/web/pgadmin/browser/server_groups/servers/tests/test_dependencies_sql.py index 0e48ab3d4..03460c4ef 100644 --- a/web/pgadmin/browser/server_groups/servers/tests/test_dependencies_sql.py +++ b/web/pgadmin/browser/server_groups/servers/tests/test_dependencies_sql.py @@ -32,7 +32,7 @@ class TestDependenciesSql(SQLTemplateTestBase): def generate_sql(self, version): file_path = os.path.join(os.path.dirname(__file__), "..", "templates", - "depends", "sql") + "depends", self.server['type']) template_file = self.get_template_file(version, file_path, "dependencies.sql") template = file_as_template(template_file) diff --git a/web/pgadmin/browser/server_groups/servers/tests/test_dependents_sql.py b/web/pgadmin/browser/server_groups/servers/tests/test_dependents_sql.py index 1bb0e0052..f001d79be 100644 --- a/web/pgadmin/browser/server_groups/servers/tests/test_dependents_sql.py +++ b/web/pgadmin/browser/server_groups/servers/tests/test_dependents_sql.py @@ -32,7 +32,7 @@ class TestDependentsSql(SQLTemplateTestBase): def generate_sql(self, version): file_path = os.path.join(os.path.dirname(__file__), "..", "templates", - "depends", "sql") + "depends", self.server['type']) template_file = self.get_template_file(version, file_path, "dependents.sql") template = file_as_template(template_file) diff --git a/web/pgadmin/browser/server_groups/servers/tests/test_role_dependencies_sql.py b/web/pgadmin/browser/server_groups/servers/tests/test_role_dependencies_sql.py index 4c5dacb95..ce92b744b 100644 --- a/web/pgadmin/browser/server_groups/servers/tests/test_role_dependencies_sql.py +++ b/web/pgadmin/browser/server_groups/servers/tests/test_role_dependencies_sql.py @@ -8,12 +8,13 @@ ########################################################################## import os -from pgadmin.utils.route import BaseTestGenerator from regression.python_test_utils import test_utils from regression.python_test_utils.template_helper import file_as_template +from regression.python_test_utils.sql_template_test_base import \ + SQLTemplateTestBase -class TestRoleDependenciesSql(BaseTestGenerator): +class TestRoleDependenciesSql(SQLTemplateTestBase): scenarios = [ # Fetching default URL for schema node. ('Test Role Dependencies SQL file', dict()) @@ -50,7 +51,7 @@ class TestRoleDependenciesSql(BaseTestGenerator): "WHERE pg_class.relname='test_new_role_table'") self.table_id = cursor.fetchone()[0] - sql = self.generate_sql('default') + sql = self.generate_sql(connection.server_version) cursor.execute(sql) fetch_result = cursor.fetchall() @@ -63,7 +64,9 @@ class TestRoleDependenciesSql(BaseTestGenerator): connection.commit() def generate_sql(self, version): - template_file = self.get_template_file(version, + file_path = os.path.join(os.path.dirname(__file__), "..", "templates", + "depends", self.server['type']) + template_file = self.get_template_file(version, file_path, "role_dependencies.sql") template = file_as_template(template_file) sql = template.render( @@ -79,8 +82,3 @@ class TestRoleDependenciesSql(BaseTestGenerator): first_row[description.name] = fetch_result[0][index] self.assertEqual('o', first_row["deptype"]) - - @staticmethod - def get_template_file(version, filename): - return os.path.join(os.path.dirname(__file__), "..", "templates", - "depends", "sql", version, filename) diff --git a/web/pgadmin/browser/utils.py b/web/pgadmin/browser/utils.py index 208f13275..b1ca2ebf2 100644 --- a/web/pgadmin/browser/utils.py +++ b/web/pgadmin/browser/utils.py @@ -446,7 +446,8 @@ class PGChildNodeView(NodeView): """ # Set the sql_path - sql_path = 'depends/sql/#{0}#'.format(conn.manager.version) + sql_path = 'depends/{0}/#{1}#'.format( + conn.manager.server_type, conn.manager.version) if where is None: where_clause = "WHERE dep.objid={0}::oid".format(object_id) @@ -500,7 +501,8 @@ class PGChildNodeView(NodeView): Returns: Dictionary of dependents for the selected node. """ # Set the sql_path - sql_path = 'depends/sql/#{0}#'.format(conn.manager.version) + sql_path = 'depends/{0}/#{1}#'.format( + conn.manager.server_type, conn.manager.version) if where is None: where_clause = "WHERE dep.refobjid={0}::oid".format(object_id) @@ -525,29 +527,38 @@ class PGChildNodeView(NodeView): Returns: Dictionary of dependency for the selected node. """ - # Dictionary for the object types - types = { - # None specified special handling for this type + standard_types = { 'r': None, 'i': 'index', 'S': 'sequence', 'v': 'view', - 'x': 'external_table', - 'p': 'partition', - 'P': 'function', - 'n': 'schema', - 'y': 'type', - 'd': 'domain', - 't': 'trigger_function', - 'T': 'trigger', - 'l': 'language', - 'f': 'foreign_data_wrapper', - 'F': 'foreign_server', - 'R': None, - 'C': None, + 'p': 'partition_table', + 'f': 'foreign_table', + 'm': 'materialized_view', + 't': 'toast_table', + 'I': 'partition_index' + } + + # Dictionary for the object types + custom_types = { + 'x': 'external_table', 'n': 'schema', 'd': 'domain', + 'l': 'language', 'Cc': 'check', 'Cd': 'domain_constraints', + 'Cf': 'foreign_key', 'Cp': 'primary_key', 'Co': 'collation', + 'Cu': 'unique_constraint', 'Cx': 'exclusion_constraint', + 'Fw': 'foreign_data_wrapper', 'Fs': 'foreign_server', + 'Fc': 'fts_configuration', 'Fp': 'fts_parser', + 'Fd': 'fts_dictionary', 'Ft': 'fts_template', + 'Ex': 'extension', 'Et': 'event_trigger', 'Pa': 'package', + 'Pf': 'function', 'Pt': 'trigger_function', 'Pp': 'procedure', + 'Rl': 'rule', 'Rs': 'row_security_policy', 'Sy': 'synonym', + 'Ty': 'type', 'Tr': 'trigger', 'Tc': 'compound_trigger', + # None specified special handling for this type 'A': None } + # Merging above two dictionaries + types = {**standard_types, **custom_types} + # Dictionary for the restrictions dep_types = { # None specified special handling for this type @@ -579,61 +590,50 @@ class PGChildNodeView(NodeView): # Fetch the type name from the dictionary # if type is not present in the types dictionary then # we will continue and not going to add it. - if len(type_str) and type_str[0] in types: - + if len(type_str) and type_str in types and \ + types[type_str] is not None: + type_name = types[type_str] + if type_str == 'Rl': + ref_name = \ + _ref_name + ' ON ' + ref_name + row['ownertable'] + _ref_name = None + elif type_str == 'Cf': + ref_name += row['ownertable'] + '.' + elif type_str == 'm': + icon = 'icon-mview' + elif len(type_str) and type_str[0] in types and \ + types[type_str[0]] is None: # if type is present in the types dictionary, but it's # value is None then it requires special handling. - if types[type_str[0]] is None: - if type_str[0] == 'r': - if int(type_str[1]) > 0: - type_name = 'column' - else: - type_name = 'table' - if 'is_inherits' in row \ - and row['is_inherits'] == '1': - if 'is_inherited' in row \ - and row['is_inherited'] == '1': - icon = 'icon-table-multi-inherit' - # For tables under partitioned tables, - # is_inherits will be true and dependency - # will be auto as it inherits from parent - # partitioned table - elif ('is_inherited' in row and - row['is_inherited'] == '0')\ - and dep_str == 'a': - type_name = 'partition' - else: - icon = 'icon-table-inherits' - elif 'is_inherited' in row \ - and row['is_inherited'] == '1': - icon = 'icon-table-inherited' - - elif type_str[0] == 'R': - type_name = 'rule' - ref_name = \ - _ref_name + ' ON ' + ref_name + row['ownertable'] - _ref_name = None - elif type_str[0] == 'C': - if type_str[1] == 'c': - type_name = 'check' - elif type_str[1] == 'f': - type_name = 'foreign_key' - ref_name += row['ownertable'] + '.' - elif type_str[1] == 'p': - type_name = 'primary_key' - elif type_str[1] == 'u': - type_name = 'unique_constraint' - elif type_str[1] == 'x': - type_name = 'exclusion_constraint' - elif type_str[0] == 'A': - # Include only functions - if row['adbin'].startswith('{FUNCEXPR'): - type_name = 'function' - ref_name = row['adsrc'] - else: - continue - else: - type_name = types[type_str[0]] + if type_str[0] == 'r': + if int(type_str[1]) > 0: + type_name = 'column' + else: + type_name = 'table' + if 'is_inherits' in row and row['is_inherits'] == '1': + if 'is_inherited' in row and \ + row['is_inherited'] == '1': + icon = 'icon-table-multi-inherit' + # For tables under partitioned tables, + # is_inherits will be true and dependency + # will be auto as it inherits from parent + # partitioned table + elif ('is_inherited' in row and + row['is_inherited'] == '0') and \ + dep_str == 'a': + type_name = 'partition' + else: + icon = 'icon-table-inherits' + elif 'is_inherited' in row and \ + row['is_inherited'] == '1': + icon = 'icon-table-inherited' + elif type_str[0] == 'A': + # Include only functions + if row['adbin'].startswith('{FUNCEXPR'): + type_name = 'function' + ref_name = row['adsrc'] + else: + continue else: continue @@ -644,7 +644,6 @@ class PGChildNodeView(NodeView): if show_system_objects is None: show_system_objects = self.blueprint.show_system_objects if dep_str[0] in dep_types: - # if dep_type is present in the dep_types dictionary, but it's # value is None then it requires special handling. if dep_types[dep_str[0]] is None: diff --git a/web/pgadmin/misc/dependencies/static/js/dependencies.js b/web/pgadmin/misc/dependencies/static/js/dependencies.js index 4e931a795..0cffb375b 100644 --- a/web/pgadmin/misc/dependencies/static/js/dependencies.js +++ b/web/pgadmin/misc/dependencies/static/js/dependencies.js @@ -99,7 +99,7 @@ define('misc.dependencies', [ }, { name: 'field', - label: '', // label kept blank, it will change dynamically + label: ' ', // label kept blank, it will change dynamically cell: 'string', editable: false, }, diff --git a/web/pgadmin/misc/dependents/static/js/dependents.js b/web/pgadmin/misc/dependents/static/js/dependents.js index 470aa6930..382cdf741 100644 --- a/web/pgadmin/misc/dependents/static/js/dependents.js +++ b/web/pgadmin/misc/dependents/static/js/dependents.js @@ -100,7 +100,7 @@ define('misc.dependents', [ }, { name: 'field', - label: '', // label kept blank, it will change dynamically + label: ' ', // label kept blank, it will change dynamically cell: 'string', editable: false, },