Re: Add expressions to pg_restore_extended_stats() - Mailing list pgsql-hackers

From Corey Huinker
Subject Re: Add expressions to pg_restore_extended_stats()
Date
Msg-id CADkLM=f-S2ySFBQWsBVc9k3fPAteRCOYOKdhEsZ5NE0_8SSqew@mail.gmail.com
Whole thread Raw
In response to Re: Add expressions to pg_restore_extended_stats()  (Michael Paquier <michael@paquier.xyz>)
Responses Re: Add expressions to pg_restore_extended_stats()
List pgsql-hackers


On Wed, Mar 4, 2026 at 5:29 PM Michael Paquier <michael@paquier.xyz> wrote:
On Wed, Mar 04, 2026 at 05:05:55PM -0500, Corey Huinker wrote:
> 5. Generate the column list of the view (or set difference queries) with a
> \gexec query that filters out the oids.
>
> All of these things are sliiightly hacky, but if we settle on one pattern
> that will allow us to use the pattern in multiple places and thus reduce
> surprise to the reader.

I am not sure which one would be the best fit, TBH.  To me, it depends
mostly on clarity and how easier it becomes to maintain these tests.
Perhaps I would have a slight preference on the views with quals based
on the object names.  As long as we don't maintain the same
complicated queries more than once, I'm basically fine with any
solution.  Using json for this purpose feels a bit too much artistic.
--
Michael

Here's a proof of concept for just the pg_statistic checks. The basic structure is:

1. Create a VIEW that has only the columns we want to set-difference, in the datatype we want to difference them. The view will never hold data, we just want it for the datatype (t).
2. Create a FUNCTION that fetched the stats for a given object (in this case a table or index), keeping only the columns found in (t).
3. Another FUNCTION that takes two object names as parameters, does the A-B,B-A set difference operators on them, and returns that as a set of (relname,(t)).
4. The A-B,B-A tests then become just one call to that set_difference function.

If this seems more elegant than what we have now, I'll write up a formal patch for the three set-difference types (attstats, extended, extended exprs).
Attachment

pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Re: Why clearing the VM doesn't require registering vm buffer in wal record
Next
From: Matthias van de Meent
Date:
Subject: Re: Why clearing the VM doesn't require registering vm buffer in wal record