mirror of
https://github.com/postgres/postgres.git
synced 2025-06-26 12:21:12 +03:00
Add macro for maximum statistics target
The number of places where 10000 was hardcoded had grown a bit beyond the comfort level. Introduce a macro MAX_STATISTICS_TARGET instead. Reviewed-by: Tomas Vondra <tomas.vondra@enterprisedb.com> Discussion: https://www.postgresql.org/message-id/flat/d6069765-5971-04d3-c10d-e4f7b2e9c459%40eisentraut.org
This commit is contained in:
@ -619,9 +619,9 @@ AlterStatistics(AlterStatsStmt *stmt)
|
|||||||
errmsg("statistics target %d is too low",
|
errmsg("statistics target %d is too low",
|
||||||
newtarget)));
|
newtarget)));
|
||||||
}
|
}
|
||||||
else if (newtarget > 10000)
|
else if (newtarget > MAX_STATISTICS_TARGET)
|
||||||
{
|
{
|
||||||
newtarget = 10000;
|
newtarget = MAX_STATISTICS_TARGET;
|
||||||
ereport(WARNING,
|
ereport(WARNING,
|
||||||
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
|
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
|
||||||
errmsg("lowering statistics target to %d",
|
errmsg("lowering statistics target to %d",
|
||||||
|
@ -61,6 +61,7 @@
|
|||||||
#include "commands/trigger.h"
|
#include "commands/trigger.h"
|
||||||
#include "commands/typecmds.h"
|
#include "commands/typecmds.h"
|
||||||
#include "commands/user.h"
|
#include "commands/user.h"
|
||||||
|
#include "commands/vacuum.h"
|
||||||
#include "executor/executor.h"
|
#include "executor/executor.h"
|
||||||
#include "foreign/fdwapi.h"
|
#include "foreign/fdwapi.h"
|
||||||
#include "foreign/foreign.h"
|
#include "foreign/foreign.h"
|
||||||
@ -8180,9 +8181,9 @@ ATExecSetStatistics(Relation rel, const char *colName, int16 colNum, Node *newVa
|
|||||||
errmsg("statistics target %d is too low",
|
errmsg("statistics target %d is too low",
|
||||||
newtarget)));
|
newtarget)));
|
||||||
}
|
}
|
||||||
else if (newtarget > 10000)
|
else if (newtarget > MAX_STATISTICS_TARGET)
|
||||||
{
|
{
|
||||||
newtarget = 10000;
|
newtarget = MAX_STATISTICS_TARGET;
|
||||||
ereport(WARNING,
|
ereport(WARNING,
|
||||||
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
|
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
|
||||||
errmsg("lowering statistics target to %d",
|
errmsg("lowering statistics target to %d",
|
||||||
|
@ -379,7 +379,7 @@ statext_compute_stattarget(int stattarget, int nattrs, VacAttrStats **stats)
|
|||||||
stattarget = default_statistics_target;
|
stattarget = default_statistics_target;
|
||||||
|
|
||||||
/* As this point we should have a valid statistics target. */
|
/* As this point we should have a valid statistics target. */
|
||||||
Assert((stattarget >= 0) && (stattarget <= 10000));
|
Assert((stattarget >= 0) && (stattarget <= MAX_STATISTICS_TARGET));
|
||||||
|
|
||||||
return stattarget;
|
return stattarget;
|
||||||
}
|
}
|
||||||
|
@ -2035,7 +2035,7 @@ struct config_int ConfigureNamesInt[] =
|
|||||||
"column-specific target set via ALTER TABLE SET STATISTICS.")
|
"column-specific target set via ALTER TABLE SET STATISTICS.")
|
||||||
},
|
},
|
||||||
&default_statistics_target,
|
&default_statistics_target,
|
||||||
100, 1, 10000,
|
100, 1, MAX_STATISTICS_TARGET,
|
||||||
NULL, NULL, NULL
|
NULL, NULL, NULL
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -165,7 +165,7 @@ CATALOG(pg_attribute,1249,AttributeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(75,
|
|||||||
* that no value has been explicitly set for this column, so ANALYZE
|
* that no value has been explicitly set for this column, so ANALYZE
|
||||||
* should use the default setting.
|
* should use the default setting.
|
||||||
*
|
*
|
||||||
* int16 is sufficient because the max value is currently 10000.
|
* int16 is sufficient for the current max value (MAX_STATISTICS_TARGET).
|
||||||
*/
|
*/
|
||||||
int16 attstattarget BKI_DEFAULT(-1);
|
int16 attstattarget BKI_DEFAULT(-1);
|
||||||
|
|
||||||
|
@ -305,6 +305,13 @@ extern PGDLLIMPORT int vacuum_multixact_freeze_table_age;
|
|||||||
extern PGDLLIMPORT int vacuum_failsafe_age;
|
extern PGDLLIMPORT int vacuum_failsafe_age;
|
||||||
extern PGDLLIMPORT int vacuum_multixact_failsafe_age;
|
extern PGDLLIMPORT int vacuum_multixact_failsafe_age;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Maximum value for default_statistics_target and per-column statistics
|
||||||
|
* targets. This is fairly arbitrary, mainly to prevent users from creating
|
||||||
|
* unreasonably large statistics that the system cannot handle well.
|
||||||
|
*/
|
||||||
|
#define MAX_STATISTICS_TARGET 10000
|
||||||
|
|
||||||
/* Variables for cost-based parallel vacuum */
|
/* Variables for cost-based parallel vacuum */
|
||||||
extern PGDLLIMPORT pg_atomic_uint32 *VacuumSharedCostBalance;
|
extern PGDLLIMPORT pg_atomic_uint32 *VacuumSharedCostBalance;
|
||||||
extern PGDLLIMPORT pg_atomic_uint32 *VacuumActiveNWorkers;
|
extern PGDLLIMPORT pg_atomic_uint32 *VacuumActiveNWorkers;
|
||||||
|
@ -66,8 +66,8 @@ typedef struct MVDependencies
|
|||||||
#define STATS_MCV_MAGIC 0xE1A651C2 /* marks serialized bytea */
|
#define STATS_MCV_MAGIC 0xE1A651C2 /* marks serialized bytea */
|
||||||
#define STATS_MCV_TYPE_BASIC 1 /* basic MCV list type */
|
#define STATS_MCV_TYPE_BASIC 1 /* basic MCV list type */
|
||||||
|
|
||||||
/* max items in MCV list (should be equal to max default_statistics_target) */
|
/* max items in MCV list */
|
||||||
#define STATS_MCVLIST_MAX_ITEMS 10000
|
#define STATS_MCVLIST_MAX_ITEMS MAX_STATISTICS_TARGET
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Multivariate MCV (most-common value) lists
|
* Multivariate MCV (most-common value) lists
|
||||||
|
Reference in New Issue
Block a user