On Fri, 2024-03-15 at 15:30 -0700, Jeff Davis wrote: > Still looking, but one quick comment is that the third argument of > dumpRelationStats() should be const, which eliminates a warning.
A few other comments: * pg_set_relation_stats() needs to do an ACL check so you can't set the stats on someone else's table. I suggest honoring the new MAINTAIN privilege as well. * If possible, reading from pg_stats (instead of pg_statistic) would be ideal because pg_stats already does the right checks at read time, so a non-superuser can export stats, too. * If reading from pg_stats, should you change the signature of pg_set_relation_stats() to have argument names matching the columns of pg_stats (e.g. most_common_vals instead of stakind/stavalues)? In other words, make this a slightly higher level: conceptually exporting/importing pg_stats rather than pg_statistic. This may also make the SQL export queries simpler. Also, I'm wondering about error handling. Is some kind of error thrown by pg_set_relation_stats() going to abort an entire restore? That might be easy to prevent with pg_restore, because it can just omit the stats, but harder if it's in a SQL file. Regards, Jeff Davis