CREATE VIEW pg_seclabels AS
SELECT
- l.objoid, l.classoid, l.objsubid,
- CASE WHEN rel.relkind IN ('r', 'p') THEN 'table'::text
- WHEN rel.relkind = 'v' THEN 'view'::text
- WHEN rel.relkind = 'm' THEN 'materialized view'::text
- WHEN rel.relkind = 'S' THEN 'sequence'::text
- WHEN rel.relkind = 'f' THEN 'foreign table'::text END AS objtype,
- rel.relnamespace AS objnamespace,
- CASE WHEN pg_table_is_visible(rel.oid)
- THEN quote_ident(rel.relname)
- ELSE quote_ident(nsp.nspname) || '.' || quote_ident(rel.relname)
- END AS objname,
- l.provider, l.label
+ l.objoid, l.classoid, l.objsubid,
+ CASE WHEN rel.relkind IN ('r', 'p') THEN 'table'::text
+ WHEN rel.relkind = 'v' THEN 'view'::text
+ WHEN rel.relkind = 'm' THEN 'materialized view'::text
+ WHEN rel.relkind = 'S' THEN 'sequence'::text
+ WHEN rel.relkind = 'f' THEN 'foreign table'::text END AS objtype,
+ rel.relnamespace AS objnamespace,
+ CASE WHEN pg_table_is_visible(rel.oid)
+ THEN quote_ident(rel.relname)
+ ELSE quote_ident(nsp.nspname) || '.' || quote_ident(rel.relname)
+ END AS objname,
+ l.provider, l.label
FROM
- pg_seclabel l
- JOIN pg_class rel ON l.classoid = rel.tableoid AND l.objoid = rel.oid
- JOIN pg_namespace nsp ON rel.relnamespace = nsp.oid
+ pg_seclabel l
+ JOIN pg_class rel ON l.classoid = rel.tableoid AND l.objoid = rel.oid
+ JOIN pg_namespace nsp ON rel.relnamespace = nsp.oid
WHERE
- l.objsubid = 0
+ l.objsubid = 0
UNION ALL
SELECT
- l.objoid, l.classoid, l.objsubid,
- 'column'::text AS objtype,
- rel.relnamespace AS objnamespace,
- CASE WHEN pg_table_is_visible(rel.oid)
- THEN quote_ident(rel.relname)
- ELSE quote_ident(nsp.nspname) || '.' || quote_ident(rel.relname)
- END || '.' || att.attname AS objname,
- l.provider, l.label
+ l.objoid, l.classoid, l.objsubid,
+ 'column'::text AS objtype,
+ rel.relnamespace AS objnamespace,
+ CASE WHEN pg_table_is_visible(rel.oid)
+ THEN quote_ident(rel.relname)
+ ELSE quote_ident(nsp.nspname) || '.' || quote_ident(rel.relname)
+ END || '.' || att.attname AS objname,
+ l.provider, l.label
FROM
- pg_seclabel l
- JOIN pg_class rel ON l.classoid = rel.tableoid AND l.objoid = rel.oid
- JOIN pg_attribute att
- ON rel.oid = att.attrelid AND l.objsubid = att.attnum
- JOIN pg_namespace nsp ON rel.relnamespace = nsp.oid
+ pg_seclabel l
+ JOIN pg_class rel ON l.classoid = rel.tableoid AND l.objoid = rel.oid
+ JOIN pg_attribute att
+ ON rel.oid = att.attrelid AND l.objsubid = att.attnum
+ JOIN pg_namespace nsp ON rel.relnamespace = nsp.oid
WHERE
- l.objsubid != 0
+ l.objsubid != 0
UNION ALL
SELECT
- l.objoid, l.classoid, l.objsubid,
- CASE pro.prokind
+ l.objoid, l.classoid, l.objsubid,
+ CASE pro.prokind
WHEN 'a' THEN 'aggregate'::text
WHEN 'f' THEN 'function'::text
WHEN 'p' THEN 'procedure'::text
WHEN 'w' THEN 'window'::text END AS objtype,
- pro.pronamespace AS objnamespace,
- CASE WHEN pg_function_is_visible(pro.oid)
- THEN quote_ident(pro.proname)
- ELSE quote_ident(nsp.nspname) || '.' || quote_ident(pro.proname)
- END || '(' || pg_catalog.pg_get_function_arguments(pro.oid) || ')' AS objname,
- l.provider, l.label
+ pro.pronamespace AS objnamespace,
+ CASE WHEN pg_function_is_visible(pro.oid)
+ THEN quote_ident(pro.proname)
+ ELSE quote_ident(nsp.nspname) || '.' || quote_ident(pro.proname)
+ END || '(' || pg_catalog.pg_get_function_arguments(pro.oid) || ')' AS objname,
+ l.provider, l.label
FROM
- pg_seclabel l
- JOIN pg_proc pro ON l.classoid = pro.tableoid AND l.objoid = pro.oid
- JOIN pg_namespace nsp ON pro.pronamespace = nsp.oid
+ pg_seclabel l
+ JOIN pg_proc pro ON l.classoid = pro.tableoid AND l.objoid = pro.oid
+ JOIN pg_namespace nsp ON pro.pronamespace = nsp.oid
WHERE
- l.objsubid = 0
+ l.objsubid = 0
UNION ALL
SELECT
- l.objoid, l.classoid, l.objsubid,
- CASE WHEN typ.typtype = 'd' THEN 'domain'::text
- ELSE 'type'::text END AS objtype,
- typ.typnamespace AS objnamespace,
- CASE WHEN pg_type_is_visible(typ.oid)
- THEN quote_ident(typ.typname)
- ELSE quote_ident(nsp.nspname) || '.' || quote_ident(typ.typname)
- END AS objname,
- l.provider, l.label
+ l.objoid, l.classoid, l.objsubid,
+ CASE WHEN typ.typtype = 'd' THEN 'domain'::text
+ ELSE 'type'::text END AS objtype,
+ typ.typnamespace AS objnamespace,
+ CASE WHEN pg_type_is_visible(typ.oid)
+ THEN quote_ident(typ.typname)
+ ELSE quote_ident(nsp.nspname) || '.' || quote_ident(typ.typname)
+ END AS objname,
+ l.provider, l.label
FROM
- pg_seclabel l
- JOIN pg_type typ ON l.classoid = typ.tableoid AND l.objoid = typ.oid
- JOIN pg_namespace nsp ON typ.typnamespace = nsp.oid
+ pg_seclabel l
+ JOIN pg_type typ ON l.classoid = typ.tableoid AND l.objoid = typ.oid
+ JOIN pg_namespace nsp ON typ.typnamespace = nsp.oid
WHERE
- l.objsubid = 0
+ l.objsubid = 0
UNION ALL
SELECT
- l.objoid, l.classoid, l.objsubid,
- 'large object'::text AS objtype,
- NULL::oid AS objnamespace,
- l.objoid::text AS objname,
- l.provider, l.label
+ l.objoid, l.classoid, l.objsubid,
+ 'large object'::text AS objtype,
+ NULL::oid AS objnamespace,
+ l.objoid::text AS objname,
+ l.provider, l.label
FROM
- pg_seclabel l
- JOIN pg_largeobject_metadata lom ON l.objoid = lom.oid
+ pg_seclabel l
+ JOIN pg_largeobject_metadata lom ON l.objoid = lom.oid
WHERE
- l.classoid = 'pg_catalog.pg_largeobject'::regclass AND l.objsubid = 0
+ l.classoid = 'pg_catalog.pg_largeobject'::regclass AND l.objsubid = 0
UNION ALL
SELECT
- l.objoid, l.classoid, l.objsubid,
- 'language'::text AS objtype,
- NULL::oid AS objnamespace,
- quote_ident(lan.lanname) AS objname,
- l.provider, l.label
+ l.objoid, l.classoid, l.objsubid,
+ 'language'::text AS objtype,
+ NULL::oid AS objnamespace,
+ quote_ident(lan.lanname) AS objname,
+ l.provider, l.label
FROM
- pg_seclabel l
- JOIN pg_language lan ON l.classoid = lan.tableoid AND l.objoid = lan.oid
+ pg_seclabel l
+ JOIN pg_language lan ON l.classoid = lan.tableoid AND l.objoid = lan.oid
WHERE
- l.objsubid = 0
+ l.objsubid = 0
UNION ALL
SELECT
- l.objoid, l.classoid, l.objsubid,
- 'schema'::text AS objtype,
- nsp.oid AS objnamespace,
- quote_ident(nsp.nspname) AS objname,
- l.provider, l.label
+ l.objoid, l.classoid, l.objsubid,
+ 'schema'::text AS objtype,
+ nsp.oid AS objnamespace,
+ quote_ident(nsp.nspname) AS objname,
+ l.provider, l.label
FROM
- pg_seclabel l
- JOIN pg_namespace nsp ON l.classoid = nsp.tableoid AND l.objoid = nsp.oid
+ pg_seclabel l
+ JOIN pg_namespace nsp ON l.classoid = nsp.tableoid AND l.objoid = nsp.oid
WHERE
- l.objsubid = 0
+ l.objsubid = 0
UNION ALL
SELECT
- l.objoid, l.classoid, l.objsubid,
- 'event trigger'::text AS objtype,
- NULL::oid AS objnamespace,
- quote_ident(evt.evtname) AS objname,
- l.provider, l.label
+ l.objoid, l.classoid, l.objsubid,
+ 'event trigger'::text AS objtype,
+ NULL::oid AS objnamespace,
+ quote_ident(evt.evtname) AS objname,
+ l.provider, l.label
FROM
- pg_seclabel l
- JOIN pg_event_trigger evt ON l.classoid = evt.tableoid
- AND l.objoid = evt.oid
+ pg_seclabel l
+ JOIN pg_event_trigger evt ON l.classoid = evt.tableoid
+ AND l.objoid = evt.oid
WHERE
- l.objsubid = 0
+ l.objsubid = 0
UNION ALL
SELECT
- l.objoid, l.classoid, l.objsubid,
- 'publication'::text AS objtype,
- NULL::oid AS objnamespace,
- quote_ident(p.pubname) AS objname,
- l.provider, l.label
+ l.objoid, l.classoid, l.objsubid,
+ 'publication'::text AS objtype,
+ NULL::oid AS objnamespace,
+ quote_ident(p.pubname) AS objname,
+ l.provider, l.label
FROM
- pg_seclabel l
- JOIN pg_publication p ON l.classoid = p.tableoid AND l.objoid = p.oid
+ pg_seclabel l
+ JOIN pg_publication p ON l.classoid = p.tableoid AND l.objoid = p.oid
WHERE
- l.objsubid = 0
+ l.objsubid = 0
UNION ALL
SELECT
- l.objoid, l.classoid, 0::int4 AS objsubid,
- 'subscription'::text AS objtype,
- NULL::oid AS objnamespace,
- quote_ident(s.subname) AS objname,
- l.provider, l.label
+ l.objoid, l.classoid, 0::int4 AS objsubid,
+ 'subscription'::text AS objtype,
+ NULL::oid AS objnamespace,
+ quote_ident(s.subname) AS objname,
+ l.provider, l.label
FROM
- pg_shseclabel l
- JOIN pg_subscription s ON l.classoid = s.tableoid AND l.objoid = s.oid
+ pg_shseclabel l
+ JOIN pg_subscription s ON l.classoid = s.tableoid AND l.objoid = s.oid
UNION ALL
SELECT
- l.objoid, l.classoid, 0::int4 AS objsubid,
- 'database'::text AS objtype,
- NULL::oid AS objnamespace,
- quote_ident(dat.datname) AS objname,
- l.provider, l.label
+ l.objoid, l.classoid, 0::int4 AS objsubid,
+ 'database'::text AS objtype,
+ NULL::oid AS objnamespace,
+ quote_ident(dat.datname) AS objname,
+ l.provider, l.label
FROM
- pg_shseclabel l
- JOIN pg_database dat ON l.classoid = dat.tableoid AND l.objoid = dat.oid
+ pg_shseclabel l
+ JOIN pg_database dat ON l.classoid = dat.tableoid AND l.objoid = dat.oid
UNION ALL
SELECT
- l.objoid, l.classoid, 0::int4 AS objsubid,
- 'tablespace'::text AS objtype,
- NULL::oid AS objnamespace,
- quote_ident(spc.spcname) AS objname,
- l.provider, l.label
+ l.objoid, l.classoid, 0::int4 AS objsubid,
+ 'tablespace'::text AS objtype,
+ NULL::oid AS objnamespace,
+ quote_ident(spc.spcname) AS objname,
+ l.provider, l.label
FROM
- pg_shseclabel l
- JOIN pg_tablespace spc ON l.classoid = spc.tableoid AND l.objoid = spc.oid
+ pg_shseclabel l
+ JOIN pg_tablespace spc ON l.classoid = spc.tableoid AND l.objoid = spc.oid
UNION ALL
SELECT
- l.objoid, l.classoid, 0::int4 AS objsubid,
- 'role'::text AS objtype,
- NULL::oid AS objnamespace,
- quote_ident(rol.rolname) AS objname,
- l.provider, l.label
+ l.objoid, l.classoid, 0::int4 AS objsubid,
+ 'role'::text AS objtype,
+ NULL::oid AS objnamespace,
+ quote_ident(rol.rolname) AS objname,
+ l.provider, l.label
FROM
- pg_shseclabel l
- JOIN pg_authid rol ON l.classoid = rol.tableoid AND l.objoid = rol.oid;
+ pg_shseclabel l
+ JOIN pg_authid rol ON l.classoid = rol.tableoid AND l.objoid = rol.oid;
CREATE VIEW pg_settings AS
SELECT * FROM pg_show_all_settings() AS A;
pg_stat_get_bgwriter_stat_reset_time() AS stats_reset;
CREATE VIEW pg_stat_progress_vacuum AS
- SELECT
- S.pid AS pid, S.datid AS datid, D.datname AS datname,
- S.relid AS relid,
- CASE S.param1 WHEN 0 THEN 'initializing'
- WHEN 1 THEN 'scanning heap'
- WHEN 2 THEN 'vacuuming indexes'
- WHEN 3 THEN 'vacuuming heap'
- WHEN 4 THEN 'cleaning up indexes'
- WHEN 5 THEN 'truncating heap'
- WHEN 6 THEN 'performing final cleanup'
- END AS phase,
- S.param2 AS heap_blks_total, S.param3 AS heap_blks_scanned,
- S.param4 AS heap_blks_vacuumed, S.param5 AS index_vacuum_count,
- S.param6 AS max_dead_tuples, S.param7 AS num_dead_tuples
+ SELECT
+ S.pid AS pid, S.datid AS datid, D.datname AS datname,
+ S.relid AS relid,
+ CASE S.param1 WHEN 0 THEN 'initializing'
+ WHEN 1 THEN 'scanning heap'
+ WHEN 2 THEN 'vacuuming indexes'
+ WHEN 3 THEN 'vacuuming heap'
+ WHEN 4 THEN 'cleaning up indexes'
+ WHEN 5 THEN 'truncating heap'
+ WHEN 6 THEN 'performing final cleanup'
+ END AS phase,
+ S.param2 AS heap_blks_total, S.param3 AS heap_blks_scanned,
+ S.param4 AS heap_blks_vacuumed, S.param5 AS index_vacuum_count,
+ S.param6 AS max_dead_tuples, S.param7 AS num_dead_tuples
FROM pg_stat_get_progress_info('VACUUM') AS S
- LEFT JOIN pg_database D ON S.datid = D.oid;
+ LEFT JOIN pg_database D ON S.datid = D.oid;
CREATE VIEW pg_stat_progress_cluster AS
SELECT
LEFT JOIN pg_database D ON S.datid = D.oid;
CREATE VIEW pg_stat_progress_create_index AS
- SELECT
- S.pid AS pid, S.datid AS datid, D.datname AS datname,
- S.relid AS relid,
- CAST(S.param7 AS oid) AS index_relid,
- CASE S.param10 WHEN 0 THEN 'initializing'
- WHEN 1 THEN 'waiting for writers before build'
- WHEN 2 THEN 'building index' ||
- COALESCE((': ' || pg_indexam_progress_phasename(S.param9::oid, S.param11)),
- '')
- WHEN 3 THEN 'waiting for writers before validation'
- WHEN 4 THEN 'index validation: scanning index'
- WHEN 5 THEN 'index validation: sorting tuples'
- WHEN 6 THEN 'index validation: scanning table'
- WHEN 7 THEN 'waiting for old snapshots'
- WHEN 8 THEN 'waiting for readers before marking dead'
- WHEN 9 THEN 'waiting for readers before dropping'
- END as phase,
- S.param4 AS lockers_total,
- S.param5 AS lockers_done,
- S.param6 AS current_locker_pid,
- S.param16 AS blocks_total,
- S.param17 AS blocks_done,
- S.param12 AS tuples_total,
- S.param13 AS tuples_done,
- S.param14 AS partitions_total,
- S.param15 AS partitions_done
- FROM pg_stat_get_progress_info('CREATE INDEX') AS S
- LEFT JOIN pg_database D ON S.datid = D.oid;
+ SELECT
+ S.pid AS pid, S.datid AS datid, D.datname AS datname,
+ S.relid AS relid,
+ CAST(S.param7 AS oid) AS index_relid,
+ CASE S.param10 WHEN 0 THEN 'initializing'
+ WHEN 1 THEN 'waiting for writers before build'
+ WHEN 2 THEN 'building index' ||
+ COALESCE((': ' || pg_indexam_progress_phasename(S.param9::oid, S.param11)),
+ '')
+ WHEN 3 THEN 'waiting for writers before validation'
+ WHEN 4 THEN 'index validation: scanning index'
+ WHEN 5 THEN 'index validation: sorting tuples'
+ WHEN 6 THEN 'index validation: scanning table'
+ WHEN 7 THEN 'waiting for old snapshots'
+ WHEN 8 THEN 'waiting for readers before marking dead'
+ WHEN 9 THEN 'waiting for readers before dropping'
+ END as phase,
+ S.param4 AS lockers_total,
+ S.param5 AS lockers_done,
+ S.param6 AS current_locker_pid,
+ S.param16 AS blocks_total,
+ S.param17 AS blocks_done,
+ S.param12 AS tuples_total,
+ S.param13 AS tuples_done,
+ S.param14 AS partitions_total,
+ S.param15 AS partitions_done
+ FROM pg_stat_get_progress_info('CREATE INDEX') AS S
+ LEFT JOIN pg_database D ON S.datid = D.oid;
CREATE VIEW pg_user_mappings AS
SELECT