diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2025-02-26 16:36:11 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2025-02-26 16:36:20 -0500 |
commit | 40e27d04b4f643cfb78af8db42a1f2e700ec9876 (patch) | |
tree | 80c8df6b40ca3eaec64fcebfff9eb4c3cd2fd824 /doc/src | |
parent | f734c9fc3a91959c2473a1e33fd9b60116902175 (diff) | |
download | postgresql-40e27d04b4f643cfb78af8db42a1f2e700ec9876.tar.gz postgresql-40e27d04b4f643cfb78af8db42a1f2e700ec9876.zip |
Use attnum to identify index columns in pg_restore_attribute_stats().
Previously we used attname for both table and index columns, but
that is problematic for indexes because their attnames are assigned
by internal rules that don't guarantee to preserve the names across
dump and reload. (This is what's causing the remaining buildfarm
failures in cross-version-upgrade tests.) Fortunately we can use
attnum instead, since there's no such thing as adding or dropping
columns in an existing index. We met this same problem previously
with ALTER INDEX ... SET STATISTICS, and solved it the same way,
cf commit 5b6d13eec.
In pg_restore_attribute_stats() itself, we accept either attnum or
attname, but the policy used by pg_dump is to always use attname
for tables and attnum for indexes.
Author: Tom Lane <tgl@sss.pgh.pa.us>
Author: Corey Huinker <corey.huinker@gmail.com>
Discussion: https://postgr.es/m/1457469.1740419458@sss.pgh.pa.us
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/func.sgml | 47 |
1 files changed, 24 insertions, 23 deletions
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index 12206e0cfc6..0e6c5349652 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -30209,8 +30209,8 @@ postgres=# SELECT '0/0'::pg_lsn + pd.segment_number * ps.setting::int + :offset </programlisting> </para> <para> - For example, to set the <structname>relpages</structname> and - <structname>reltuples</structname> of the table + For example, to set the <structfield>relpages</structfield> and + <structfield>reltuples</structfield> values for the table <structname>mytable</structname>: <programlisting> SELECT pg_restore_relation_stats( @@ -30222,8 +30222,8 @@ postgres=# SELECT '0/0'::pg_lsn + pd.segment_number * ps.setting::int + :offset <para> The argument <literal>relation</literal> with a value of type <type>regclass</type> is required, and specifies the table. Other - arguments are the names of statistics corresponding to certain - columns in <link + arguments are the names and values of statistics corresponding to + certain columns in <link linkend="catalog-pg-class"><structname>pg_class</structname></link>. The currently-supported relation statistics are <literal>relpages</literal> with a value of type @@ -30232,16 +30232,16 @@ postgres=# SELECT '0/0'::pg_lsn + pd.segment_number * ps.setting::int + :offset value of type <type>integer</type>. </para> <para> - Additionally, this function supports argument name + Additionally, this function accepts argument name <literal>version</literal> of type <type>integer</type>, which - specifies the version from which the statistics originated, improving - interpretation of statistics from older versions of - <productname>PostgreSQL</productname>. + specifies the server version from which the statistics originated. + This is anticipated to be helpful in porting statistics from older + versions of <productname>PostgreSQL</productname>. </para> <para> Minor errors are reported as a <literal>WARNING</literal> and ignored, and remaining statistics will still be restored. If all - specified statistics are successfully restored, return + specified statistics are successfully restored, returns <literal>true</literal>, otherwise <literal>false</literal>. </para> <para> @@ -30281,7 +30281,7 @@ postgres=# SELECT '0/0'::pg_lsn + pd.segment_number * ps.setting::int + :offset <returnvalue>boolean</returnvalue> </para> <para> - Create or update column-level statistics. Ordinarily, these + Creates or updates column-level statistics. Ordinarily, these statistics are collected automatically or updated as a part of <xref linkend="sql-vacuum"/> or <xref linkend="sql-analyze"/>, so it's not necessary to call this function. However, it is useful after a @@ -30300,9 +30300,9 @@ postgres=# SELECT '0/0'::pg_lsn + pd.segment_number * ps.setting::int + :offset </programlisting> </para> <para> - For example, to set the <structname>avg_width</structname> and - <structname>null_frac</structname> for the attribute - <structname>col1</structname> of the table + For example, to set the <structfield>avg_width</structfield> and + <structfield>null_frac</structfield> values for the attribute + <structfield>col1</structfield> of the table <structname>mytable</structname>: <programlisting> SELECT pg_restore_attribute_stats( @@ -30315,25 +30315,26 @@ postgres=# SELECT '0/0'::pg_lsn + pd.segment_number * ps.setting::int + :offset </para> <para> The required arguments are <literal>relation</literal> with a value - of type <type>regclass</type>, which specifies the table; - <literal>attname</literal> with a value of type <type>name</type>, + of type <type>regclass</type>, which specifies the table; either + <literal>attname</literal> with a value of type <type>name</type> or + <literal>attnum</literal> with a value of type <type>smallint</type>, which specifies the column; and <literal>inherited</literal>, which - specifies whether the statistics includes values from child tables. - Other arguments are the names of statistics corresponding to columns - in <link + specifies whether the statistics include values from child tables. + Other arguments are the names and values of statistics corresponding + to columns in <link linkend="view-pg-stats"><structname>pg_stats</structname></link>. </para> <para> - Additionally, this function supports argument name + Additionally, this function accepts argument name <literal>version</literal> of type <type>integer</type>, which - specifies the version from which the statistics originated, improving - interpretation of statistics from older versions of - <productname>PostgreSQL</productname>. + specifies the server version from which the statistics originated. + This is anticipated to be helpful in porting statistics from older + versions of <productname>PostgreSQL</productname>. </para> <para> Minor errors are reported as a <literal>WARNING</literal> and ignored, and remaining statistics will still be restored. If all - specified statistics are successfully restored, return + specified statistics are successfully restored, returns <literal>true</literal>, otherwise <literal>false</literal>. </para> <para> |