mirror of
https://github.com/postgres/postgres.git
synced 2025-07-02 09:02:37 +03:00
Instead of having a configure-time DEFAULT_ATTSTATTARGET, store -1 in
attstattarget to indicate 'use the default'. The default is now a GUC variable default_statistics_target, and so may be changed on the fly. Along the way we gain the ability to have pg_dump dump the per-column statistics target when it's not the default. Patch by Neil Conway, with some kibitzing from Tom Lane.
This commit is contained in:
@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/commands/analyze.c,v 1.38 2002/06/20 20:29:26 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/commands/analyze.c,v 1.39 2002/07/31 17:19:51 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -107,6 +107,11 @@ typedef struct
|
||||
#define swapInt(a,b) do {int _tmp; _tmp=a; a=b; b=_tmp;} while(0)
|
||||
#define swapDatum(a,b) do {Datum _tmp; _tmp=a; a=b; b=_tmp;} while(0)
|
||||
|
||||
|
||||
/* Default statistics target (GUC parameter) */
|
||||
int default_statistics_target = 10;
|
||||
|
||||
|
||||
static int elevel = -1;
|
||||
|
||||
static MemoryContext anl_context = NULL;
|
||||
@ -384,7 +389,7 @@ examine_attribute(Relation onerel, int attnum)
|
||||
VacAttrStats *stats;
|
||||
|
||||
/* Don't analyze column if user has specified not to */
|
||||
if (attr->attstattarget <= 0)
|
||||
if (attr->attstattarget == 0)
|
||||
return NULL;
|
||||
|
||||
/* If column has no "=" operator, we can't do much of anything */
|
||||
@ -425,6 +430,10 @@ examine_attribute(Relation onerel, int attnum)
|
||||
stats->eqopr = eqopr;
|
||||
stats->eqfunc = eqfunc;
|
||||
|
||||
/* If the attstattarget column is negative, use the default value */
|
||||
if (stats->attr->attstattarget < 0)
|
||||
stats->attr->attstattarget = default_statistics_target;
|
||||
|
||||
/* Is there a "<" operator with suitable semantics? */
|
||||
func_operator = compatible_oper(makeList1(makeString("<")),
|
||||
attr->atttypid,
|
||||
@ -466,14 +475,14 @@ examine_attribute(Relation onerel, int attnum)
|
||||
* know it at this point.
|
||||
*--------------------
|
||||
*/
|
||||
stats->minrows = 300 * attr->attstattarget;
|
||||
stats->minrows = 300 * stats->attr->attstattarget;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Can't do much but the minimal stuff */
|
||||
stats->algcode = ALG_MINIMAL;
|
||||
/* Might as well use the same minrows as above */
|
||||
stats->minrows = 300 * attr->attstattarget;
|
||||
stats->minrows = 300 * stats->attr->attstattarget;
|
||||
}
|
||||
|
||||
return stats;
|
||||
|
Reference in New Issue
Block a user