Re: Statistics Import and Export - Mailing list pgsql-hackers

From Corey Huinker
Subject Re: Statistics Import and Export
Date
Msg-id CADkLM=fcAneLoFrd41zdxm_1mMZz+wTp5gLJ=Av5JtBi5cBnDQ@mail.gmail.com
Whole thread Raw
In response to Re: Statistics Import and Export  (Jeff Davis <pgsql@j-davis.com>)
Responses Re: Statistics Import and Export
List pgsql-hackers

Comments on 0003:

* If we commit 0003, is it a useful feature by itself or does it
require that we commit some or all of 0004-0014? Which of these need to
be in v18?

Useful by itself.

0004 seems needed to me, unless we're fine with ~50% bloat in pg_class on a new-upgraded system, or we think inplace update are on their way out.

0005 is basically theoretical, it is only needed if we change the default relpages on partitioned tables.

0006-0011 are the vacuumdb things being debated now. I've reached out to some of the people I spoke to at PgConf.eu to get them to chime in.

0012 is now moot as a similar patch was committed Friday.

0013 is a cleanup/optimization.

0014 is the --no-data flag, which has no meaning without 0004, but 0004 in no way requires it.
 

* Why does binary upgrade cause statistics to be dumped? Can you just
make pg_upgrade specify the appropriate set of flags?

That decision goes back a ways, I tried to dig in the archives last night but I was getting a Server Error on postgresql.org.

Today I'm coming up with https://www.postgresql.org/message-id/267624.1711756062%40sss.pgh.pa.us which is actually more about whether stats import should be the default (consensus: yesyesyes), and the binary_upgrade test may have been because binary_upgrade shuts off data section stuff, but table stats are in the data section. Happy to review the decision.
 
* It looks like appendNamedArgument() is never called with
positional=true?

That is currently the case. Currently all params are called with name/value pairs, but in the past we had leading positionals followed by the stat-y parameters in name-value pairs. I'll be refactoring it to remove the positonal=T/F argument, which leaves just a list of name-type pairs, and thus probably reduces the urge to make it an array of structs.
 
* It's pretty awkward to use an array of arrays of strings when an
array of structs might make more sense.

That pattern was introduced here: https://www.postgresql.org/message-id/4afa70edab849ff16238d1100b6652404e9a4d9d.camel%40j-davis.com :)

I'll be rebasing (that's done) and refactoring 0003 to get rid of the positional column, and moving 0014 next to 0003 because they touch the same files.

pgsql-hackers by date:

Previous
From: Tomas Vondra
Date:
Subject: Re: Changing the state of data checksums in a running cluster
Next
From: Alec Larson
Date:
Subject: Proposal: Support for "NOT NULL" Constraints on Composite Type Fields (Checked at Rest)