On 2025/06/17 7:44, Corey Huinker wrote:
    The proposed patch [0] adds RELKIND_FOREIGN_TABLE to this list.  That
    appears to be the only missing relation kind that ANALYZE handles.

    [0] 
https://postgr.es/m/attachment/177608/v1-0001-pg_dump-Allow-pg_dump-to-dump-the-statistics-for-.patch
 
<https://postgr.es/m/attachment/177608/v1-0001-pg_dump-Allow-pg_dump-to-dump-the-statistics-for-.patch>


Thanks for pointing it out, a little distracted today.

+1 for the patch.

Thanks for reviewing the patch! I found a few more descriptions that
needed updates, so I've revised the patch accordingly. The updated
version is attached. Barring any objections, I plan to commit it.

          </para>
          <para>
           The data section contains actual table data, large-object
-          contents, statistics for tables and materialized views and
-          sequence values.
+          contents, sequence values, and statistics for tables,
+          materialized views, and foriegn tables.
           Post-data items include definitions of indexes, triggers, rules,
           statistics for indexes, and constraints other than validated check
           constraints.

Although not directly related to foreign table statistics, I considered
clarifying that the "data" section only includes statistics *if*
--statistics is specified. The current wording might suggest that
statistics are included by default, which isn't accurate. However,
since the default behavior is still under discussion at [1],
I've left that part unchanged for now.

Regards,

[1] 
https://www.postgresql.org/message-id/CADkLM=fxsix4gq7f6__z+ofgpp0qwwytgp-gnevqymhc29b...@mail.gmail.com

--
Fujii Masao
NTT DATA Japan Corporation
From eeb8d3bdb3e2860a5d1c40a92e802b303be51248 Mon Sep 17 00:00:00 2001
From: Fujii Masao <fu...@postgresql.org>
Date: Tue, 17 Jun 2025 10:37:53 +0900
Subject: [PATCH v2] pg_dump: Allow pg_dump to dump the statistics for foreign
 tables.

Commit 1fd1bd87101 introduced support for dumping statistics with
pg_dump and pg_dumpall, covering tables, materialized views, and indexes.
However, it overlooked foreign tables, even though functions like
pg_restore_relation_stats() support them.

This commit fixes that oversight by allowing pg_dump and pg_dumpall
to include statistics for foreign tables.

Author: Fujii Masao <masao.fu...@gmail.com>
Reviewed-by: Corey Huinker <corey.huin...@gmail.com>
Reviewed-by: Nathan Bossart <nathandboss...@gmail.com>
Discussion: 
https://postgr.es/m/3772e4e4-ef39-4deb-bb76-aa8165f33...@oss.nttdata.com
---
 doc/src/sgml/ref/pg_dump.sgml    | 7 ++++---
 doc/src/sgml/ref/pg_dumpall.sgml | 3 ++-
 src/bin/pg_dump/pg_dump.c        | 4 +++-
 3 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/doc/src/sgml/ref/pg_dump.sgml b/doc/src/sgml/ref/pg_dump.sgml
index d7595a7e546..1e06bd33bdc 100644
--- a/doc/src/sgml/ref/pg_dump.sgml
+++ b/doc/src/sgml/ref/pg_dump.sgml
@@ -1277,8 +1277,8 @@ PostgreSQL documentation
          </para>
          <para>
           The data section contains actual table data, large-object
-          contents, statistics for tables and materialized views and
-          sequence values.
+          contents, sequence values, and statistics for tables,
+          materialized views, and foriegn tables.
           Post-data items include definitions of indexes, triggers, rules,
           statistics for indexes, and constraints other than validated check
           constraints.
@@ -1359,7 +1359,8 @@ PostgreSQL documentation
       <listitem>
        <para>
         Dump only the statistics, not the schema (data definitions) or data.
-        Statistics for tables, materialized views, and indexes are dumped.
+        Statistics for tables, materialized views, foreign tables,
+        and indexes are dumped.
        </para>
       </listitem>
      </varlistentry>
diff --git a/doc/src/sgml/ref/pg_dumpall.sgml b/doc/src/sgml/ref/pg_dumpall.sgml
index 723a466cfaa..43f384ed16a 100644
--- a/doc/src/sgml/ref/pg_dumpall.sgml
+++ b/doc/src/sgml/ref/pg_dumpall.sgml
@@ -690,7 +690,8 @@ exclude database <replaceable 
class="parameter">PATTERN</replaceable>
       <listitem>
        <para>
         Dump only the statistics, not the schema (data definitions) or data.
-        Statistics for tables, materialized views, and indexes are dumped.
+        Statistics for tables, materialized views, foreign tables,
+        and indexes are dumped.
        </para>
       </listitem>
      </varlistentry>
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 7bc0724cd30..a8f0309e8fc 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -6890,7 +6890,8 @@ getRelationStatistics(Archive *fout, DumpableObject *rel, 
int32 relpages,
                (relkind == RELKIND_PARTITIONED_TABLE) ||
                (relkind == RELKIND_INDEX) ||
                (relkind == RELKIND_PARTITIONED_INDEX) ||
-               (relkind == RELKIND_MATVIEW))
+               (relkind == RELKIND_MATVIEW ||
+                relkind == RELKIND_FOREIGN_TABLE))
        {
                RelStatsInfo *info = pg_malloc0(sizeof(RelStatsInfo));
                DumpableObject *dobj = &info->dobj;
@@ -6929,6 +6930,7 @@ getRelationStatistics(Archive *fout, DumpableObject *rel, 
int32 relpages,
                        case RELKIND_RELATION:
                        case RELKIND_PARTITIONED_TABLE:
                        case RELKIND_MATVIEW:
+                       case RELKIND_FOREIGN_TABLE:
                                info->section = SECTION_DATA;
                                break;
                        case RELKIND_INDEX:
-- 
2.49.0

Reply via email to