pg_restore handles extended statistics inconsistently with statistics data
Chao Li <li.evan.chao@gmail.com>
From: Chao Li <li.evan.chao@gmail.com>
To: PostgreSQL-development <pgsql-hackers@lists.postgresql.org>
Cc: Michael Paquier <michael.paquier@gmail.com>,
Corey Huinker <corey.huinker@gmail.com>
Date: 2026-06-11T03:31:26Z
Lists: pgsql-hackers
Attachments
- exclude_ext_stats.diff (application/octet-stream) patch
- test_pgdump_stats.sh (application/octet-stream)
Hi, While testing “[c32fb29e9] Include extended statistics data in pg_dump”, I noticed that pg_dump and pg_restore behave asymmetrically for --statistics-only when a schema is specified. This command dumps relation stats, attribute stats, and extended stats from the schema: ``` pg_dump --statistics-only -n s1 -f /tmp/plain-s1-stats.sql stats_src ``` However, this command will only restore extended stats for the schema: ``` pg_restore --statistics-only -n s1 -f /tmp/archive-s1-stats.sql /tmp/stats.dump ``` I tried the same test against 1ea44d7ddfb, the immediate predecessor of c32fb29e9. pg_dump dumped relation stats and attribute stats, while pg_restore restored nothing. So the asymmetric behavior for stats already existed. c32fb29e9 then added extended stats to both pg_dump and pg_restore, but the new EXTENDED STATISTICS DATA entries are handled differently from STATISTICS DATA during selective pg_restore, making the inconsistency visible. The asymmetric behavior was not introduced by c32fb29e9, so I think we probably should not change that for v19. If it's confirmed that this needs to be fixed and nobody else plans to work on it, I would be happy to add it to my TODO list for v20. For v19, I wonder if we should also exclude extended stats from selective pg_restore in the same way as other stats, so that EXTENDED STATISTICS DATA is treated consistently with STATISTICS DATA. That only requires a one-line change, see the attached exclude_ext_stats.diff. Actually, I suspect c32fb29e9 simply missed that change. Also, attached test_pgdump_stats.sh is the script I ran to verify the problem. Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/
Commits
-
pg_restore: Use dependency-based matching for STATISTICS DATA
- 477efef089c3 18 (unreleased) landed
- ae39bd23c662 19 (unreleased) landed
-
Fix inconsistencies with pg_restore --statistics[-only]
- 42ffdedcf743 18 (unreleased) landed
- 0dd93de69e80 19 (unreleased) landed