diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql index 566100d6df..b1302cfa5d 100644 --- a/src/backend/catalog/system_views.sql +++ b/src/backend/catalog/system_views.sql @@ -253,6 +253,26 @@ CREATE VIEW pg_stats WITH (security_barrier) AS REVOKE ALL on pg_statistic FROM public; +CREATE VIEW pg_stats_ext WITH (security_barrier) AS + SELECT + nspname AS schemaname, + relname AS tablename, + (SELECT array_agg(attname) FROM unnest(stxkeys) k + JOIN pg_attribute a ON (a.attnum = k) + WHERE attrelid = stxrelid) AS attnames, + stxkind, + stxndistinct, + stxdependencies, + (CASE WHEN EXISTS (SELECT 1 FROM unnest(stxkeys) k + JOIN pg_attribute a ON (a.attnum = k) + WHERE attrelid = stxrelid AND NOT has_column_privilege(c.oid, a.attnum, 'select')) THEN NULL + ELSE stxmcv END) stxmcv + FROM pg_statistic_ext s JOIN pg_class c ON (c.oid = s.stxrelid) + LEFT JOIN pg_namespace n ON (n.oid = c.relnamespace) + WHERE (c.relrowsecurity = false OR NOT row_security_active(c.oid)); + +REVOKE ALL on pg_statistic_ext FROM public; + CREATE VIEW pg_publication_tables AS SELECT P.pubname AS pubname,