mirror of
https://github.com/postgres/postgres.git
synced 2025-10-16 17:07:43 +03:00
Revert analyze support for partitioned tables
This reverts the following commits:1b5617eb84
Describe (auto-)analyze behavior for partitioned tables0e69f705cc
Set pg_class.reltuples for partitioned tables41badeaba8
Document ANALYZE storage parameters for partitioned tables0827e8af70
autovacuum: handle analyze for partitioned tables There are efficiency issues in this code when handling databases with large numbers of partitions, and it doesn't look like there isn't any trivial way to handle those. There are some other issues as well. It's now too late in the cycle for nontrivial fixes, so we'll have to let Postgres 14 users continue to manually deal with ANALYZE their partitioned tables, and hopefully we can fix the issues for Postgres 15. I kept [most of]be280cdad2
("Don't reset relhasindex for partitioned tables on ANALYZE") because while we added it due to0827e8af70
, it is a good bugfix in its own right, since it affects manual analyze as well as autovacuum-induced analyze, and there's no reason to revert it. I retained the addition of relkind 'p' to tables included by pg_stat_user_tables, because reverting that would require a catversion bump. Also, in pg14 only, I keep a struct member that was added to PgStat_TabStatEntry to avoid breaking compatibility with existing stat files. Backpatch to 14. Discussion: https://postgr.es/m/20210722205458.f2bug3z6qzxzpx2s@alap3.anarazel.de
This commit is contained in:
@@ -108,7 +108,7 @@ static relopt_bool boolRelOpts[] =
|
||||
{
|
||||
"autovacuum_enabled",
|
||||
"Enables autovacuum in this relation",
|
||||
RELOPT_KIND_HEAP | RELOPT_KIND_TOAST | RELOPT_KIND_PARTITIONED,
|
||||
RELOPT_KIND_HEAP | RELOPT_KIND_TOAST,
|
||||
ShareUpdateExclusiveLock
|
||||
},
|
||||
true
|
||||
@@ -237,7 +237,7 @@ static relopt_int intRelOpts[] =
|
||||
{
|
||||
"autovacuum_analyze_threshold",
|
||||
"Minimum number of tuple inserts, updates or deletes prior to analyze",
|
||||
RELOPT_KIND_HEAP | RELOPT_KIND_PARTITIONED,
|
||||
RELOPT_KIND_HEAP,
|
||||
ShareUpdateExclusiveLock
|
||||
},
|
||||
-1, 0, INT_MAX
|
||||
@@ -411,7 +411,7 @@ static relopt_real realRelOpts[] =
|
||||
{
|
||||
"autovacuum_analyze_scale_factor",
|
||||
"Number of tuple inserts, updates or deletes prior to analyze as a fraction of reltuples",
|
||||
RELOPT_KIND_HEAP | RELOPT_KIND_PARTITIONED,
|
||||
RELOPT_KIND_HEAP,
|
||||
ShareUpdateExclusiveLock
|
||||
},
|
||||
-1, 0.0, 100.0
|
||||
@@ -1979,11 +1979,12 @@ bytea *
|
||||
partitioned_table_reloptions(Datum reloptions, bool validate)
|
||||
{
|
||||
/*
|
||||
* autovacuum_enabled, autovacuum_analyze_threshold and
|
||||
* autovacuum_analyze_scale_factor are supported for partitioned tables.
|
||||
* There are no options for partitioned tables yet, but this is able to do
|
||||
* some validation.
|
||||
*/
|
||||
|
||||
return default_reloptions(reloptions, validate, RELOPT_KIND_PARTITIONED);
|
||||
return (bytea *) build_reloptions(reloptions, validate,
|
||||
RELOPT_KIND_PARTITIONED,
|
||||
0, NULL, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user