mirror of
https://github.com/postgres/postgres.git
synced 2026-03-22 10:30:21 -04:00
Add more columns to pg_stats, pg_stats_ext, and pg_stats_ext_exprs.
This commit adds table OID and attribute number columns to pg_stats, and it adds table OID and statistics object OID columns to pg_stats_ext and pg_stats_ext_exprs. A proposed follow-up commit would use pg_stats.tableid to simplify a query in pg_dump. The others have no immediate purpose but may be useful later. Bumps catversion. Author: Corey Huinker <corey.huinker@gmail.com> Reviewed-by: Sami Imseih <samimseih@gmail.com> Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Reviewed-by: Michael Paquier <michael@paquier.xyz> Discussion: https://postgr.es/m/CADkLM%3DcoCVy92QkVUUTLdo5eO2bMDtwMrzRn_8miAhX%2BuPaqXg%40mail.gmail.com
This commit is contained in:
parent
c9babbc881
commit
3b88e50d6c
5 changed files with 75 additions and 3 deletions
|
|
@ -4414,6 +4414,16 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx
|
|||
</para></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry role="catalog_table_entry"><para role="column_definition">
|
||||
<structfield>tableid</structfield> <type>oid</type>
|
||||
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
||||
</para>
|
||||
<para>
|
||||
OID of table
|
||||
</para></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry role="catalog_table_entry"><para role="column_definition">
|
||||
<structfield>attname</structfield> <type>name</type>
|
||||
|
|
@ -4424,6 +4434,16 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx
|
|||
</para></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry role="catalog_table_entry"><para role="column_definition">
|
||||
<structfield>attnum</structfield> <type>int2</type>
|
||||
(references <link linkend="catalog-pg-attribute"><structname>pg_attribute</structname></link>.<structfield>attnum</structfield>)
|
||||
</para>
|
||||
<para>
|
||||
Number of column described by this row
|
||||
</para></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry role="catalog_table_entry"><para role="column_definition">
|
||||
<structfield>inherited</structfield> <type>bool</type>
|
||||
|
|
@ -4666,6 +4686,16 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx
|
|||
</para></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry role="catalog_table_entry"><para role="column_definition">
|
||||
<structfield>tableid</structfield> <type>oid</type>
|
||||
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
||||
</para>
|
||||
<para>
|
||||
OID of table
|
||||
</para></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry role="catalog_table_entry"><para role="column_definition">
|
||||
<structfield>statistics_schemaname</structfield> <type>name</type>
|
||||
|
|
@ -4686,6 +4716,16 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx
|
|||
</para></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry role="catalog_table_entry"><para role="column_definition">
|
||||
<structfield>statistics_id</structfield> <type>oid</type>
|
||||
(references <link linkend="catalog-pg-statistic-ext"><structname>pg_statistic_ext</structname></link>.<structfield>oid</structfield>)
|
||||
</para>
|
||||
<para>
|
||||
OID of extended statistics object
|
||||
</para></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry role="catalog_table_entry"><para role="column_definition">
|
||||
<structfield>statistics_owner</structfield> <type>name</type>
|
||||
|
|
@ -4877,6 +4917,16 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx
|
|||
</para></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry role="catalog_table_entry"><para role="column_definition">
|
||||
<structfield>tableid</structfield> <type>oid</type>
|
||||
(references <link linkend="catalog-pg-class"><structname>pg_class</structname></link>.<structfield>oid</structfield>)
|
||||
</para>
|
||||
<para>
|
||||
OID of table the statistics object is defined on
|
||||
</para></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry role="catalog_table_entry"><para role="column_definition">
|
||||
<structfield>statistics_schemaname</structfield> <type>name</type>
|
||||
|
|
@ -4897,6 +4947,16 @@ SELECT * FROM pg_locks pl LEFT JOIN pg_prepared_xacts ppx
|
|||
</para></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry role="catalog_table_entry"><para role="column_definition">
|
||||
<structfield>statistics_id</structfield> <type>oid</type>
|
||||
(references <link linkend="catalog-pg-statistic-ext"><structname>pg_statistic_ext</structname></link>.<structfield>oid</structfield>)
|
||||
</para>
|
||||
<para>
|
||||
OID of extended statistics object
|
||||
</para></entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry role="catalog_table_entry"><para role="column_definition">
|
||||
<structfield>statistics_owner</structfield> <type>name</type>
|
||||
|
|
|
|||
|
|
@ -191,7 +191,9 @@ CREATE VIEW pg_stats WITH (security_barrier) AS
|
|||
SELECT
|
||||
nspname AS schemaname,
|
||||
relname AS tablename,
|
||||
attrelid AS tableid,
|
||||
attname AS attname,
|
||||
attnum,
|
||||
stainherit AS inherited,
|
||||
stanullfrac AS null_frac,
|
||||
stawidth AS avg_width,
|
||||
|
|
@ -278,8 +280,10 @@ REVOKE ALL ON pg_statistic FROM public;
|
|||
CREATE VIEW pg_stats_ext WITH (security_barrier) AS
|
||||
SELECT cn.nspname AS schemaname,
|
||||
c.relname AS tablename,
|
||||
s.stxrelid AS tableid,
|
||||
sn.nspname AS statistics_schemaname,
|
||||
s.stxname AS statistics_name,
|
||||
s.oid AS statistics_id,
|
||||
pg_get_userbyid(s.stxowner) AS statistics_owner,
|
||||
( SELECT array_agg(a.attname ORDER BY a.attnum)
|
||||
FROM unnest(s.stxkeys) k
|
||||
|
|
@ -312,8 +316,10 @@ CREATE VIEW pg_stats_ext WITH (security_barrier) AS
|
|||
CREATE VIEW pg_stats_ext_exprs WITH (security_barrier) AS
|
||||
SELECT cn.nspname AS schemaname,
|
||||
c.relname AS tablename,
|
||||
s.stxrelid AS tableid,
|
||||
sn.nspname AS statistics_schemaname,
|
||||
s.stxname AS statistics_name,
|
||||
s.oid AS statistics_id,
|
||||
pg_get_userbyid(s.stxowner) AS statistics_owner,
|
||||
stat.expr,
|
||||
sd.stxdinherit AS inherited,
|
||||
|
|
|
|||
|
|
@ -57,6 +57,6 @@
|
|||
*/
|
||||
|
||||
/* yyyymmddN */
|
||||
#define CATALOG_VERSION_NO 202603162
|
||||
#define CATALOG_VERSION_NO 202603171
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -2546,7 +2546,9 @@ pg_statio_user_tables| SELECT relid,
|
|||
WHERE ((schemaname <> ALL (ARRAY['pg_catalog'::name, 'information_schema'::name])) AND (schemaname !~ '^pg_toast'::text));
|
||||
pg_stats| SELECT n.nspname AS schemaname,
|
||||
c.relname AS tablename,
|
||||
a.attrelid AS tableid,
|
||||
a.attname,
|
||||
a.attnum,
|
||||
s.stainherit AS inherited,
|
||||
s.stanullfrac AS null_frac,
|
||||
s.stawidth AS avg_width,
|
||||
|
|
@ -2638,8 +2640,10 @@ pg_stats| SELECT n.nspname AS schemaname,
|
|||
WHERE ((NOT a.attisdropped) AND has_column_privilege(c.oid, a.attnum, 'select'::text) AND ((c.relrowsecurity = false) OR (NOT row_security_active(c.oid))));
|
||||
pg_stats_ext| SELECT cn.nspname AS schemaname,
|
||||
c.relname AS tablename,
|
||||
s.stxrelid AS tableid,
|
||||
sn.nspname AS statistics_schemaname,
|
||||
s.stxname AS statistics_name,
|
||||
s.oid AS statistics_id,
|
||||
pg_get_userbyid(s.stxowner) AS statistics_owner,
|
||||
( SELECT array_agg(a.attname ORDER BY a.attnum) AS array_agg
|
||||
FROM (unnest(s.stxkeys) k(k)
|
||||
|
|
@ -2666,8 +2670,10 @@ pg_stats_ext| SELECT cn.nspname AS schemaname,
|
|||
WHERE (pg_has_role(c.relowner, 'USAGE'::text) AND ((c.relrowsecurity = false) OR (NOT row_security_active(c.oid))));
|
||||
pg_stats_ext_exprs| SELECT cn.nspname AS schemaname,
|
||||
c.relname AS tablename,
|
||||
s.stxrelid AS tableid,
|
||||
sn.nspname AS statistics_schemaname,
|
||||
s.stxname AS statistics_name,
|
||||
s.oid AS statistics_id,
|
||||
pg_get_userbyid(s.stxowner) AS statistics_owner,
|
||||
stat.expr,
|
||||
sd.stxdinherit AS inherited,
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ SELECT COUNT(*) FROM pg_attribute
|
|||
attnum > 0;
|
||||
count
|
||||
-------
|
||||
15
|
||||
17
|
||||
(1 row)
|
||||
|
||||
-- Create a view that is used purely for the type based on pg_stats_ext.
|
||||
|
|
@ -119,7 +119,7 @@ SELECT COUNT(*) FROM pg_attribute
|
|||
attnum > 0;
|
||||
count
|
||||
-------
|
||||
20
|
||||
22
|
||||
(1 row)
|
||||
|
||||
-- Create a view that is used purely for the type based on pg_stats_ext_exprs.
|
||||
|
|
|
|||
Loading…
Reference in a new issue