| From: | Etsuro Fujita <efujita(at)postgresql(dot)org> |
|---|---|
| To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
| Subject: | pgsql: postgres_fdw: Remove SPI from postgresImportForeignStatistics. |
| Date: | 2026-07-10 04:22:04 |
| Message-ID: | E1wi2kV-000OaW-26@gemulon.postgresql.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-committers |
postgres_fdw: Remove SPI from postgresImportForeignStatistics.
Previously, this function imported remote statistics by executing SQL
functions like pg_restore_relation_stats and pg_restore_attribute_stats
via SPI (in read-write mode). As the SQL functions take a schema name
and a relation name as two separate arguments, rather than a single OID
argument, if the containing schema was concurrently renamed, the
callback function would throw an error like this:
ERROR: schema "foo" does not exist
To fix, 1) provide new interface functions to import remote statistics
that are directly callable from FDWs and take a single OID, and 2)
modify the callback function to use the interface functions instead when
importing remote statistics.
For #1, this commit does a bit of refactoring to
relation_statistics_update and attribute_statistics_update, which are
the workhorse functions for pg_restore_relation_stats and
pg_restore_attribute_stats respectively: since they also take a schema
name and a relation name, separate the guts of them into new functions
so that they take a single OID and are callable not only from the
workhorse functions but from the interface functions introduced by #1.
Oversight in commit 28972b6fc.
Reported-by: Robert Haas <robertmhaas(at)gmail(dot)com>
Suggested-by: Robert Haas <robertmhaas(at)gmail(dot)com>
Author: Corey Huinker <corey(dot)huinker(at)gmail(dot)com>
Co-authored-by: Etsuro Fujita <etsuro(dot)fujita(at)gmail(dot)com>
Discussion: https://postgr.es/m/CA%2BTgmoYqMtWb4zLUkT98oFnEkJ%3DWz0Pw-ggDJrp9wnSXPzUaeQ%40mail.gmail.com
Backpatch-through: 19
Branch
------
REL_19_STABLE
Details
-------
https://git.postgresql.org/pg/commitdiff/3334b0d9f25a897b8298c849d08909bdc532874a
Modified Files
--------------
contrib/postgres_fdw/expected/postgres_fdw.out | 37 +++
contrib/postgres_fdw/postgres_fdw.c | 443 ++++++++++---------------
contrib/postgres_fdw/sql/postgres_fdw.sql | 28 ++
doc/src/sgml/fdwhandler.sgml | 5 +-
src/backend/statistics/attribute_stats.c | 174 ++++++++--
src/backend/statistics/relation_stats.c | 86 ++++-
src/include/statistics/statistics.h | 25 ++
7 files changed, 484 insertions(+), 314 deletions(-)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Peter Eisentraut | 2026-07-10 08:20:52 | pgsql: Forbid FOR PORTION OF on views with INSTEAD OF triggers |
| Previous Message | Fujii Masao | 2026-07-09 23:38:54 | pgsql: Improve log_statement_max_length truncation reporting |