aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/access/common/tupdesc.c4
-rw-r--r--src/backend/catalog/genbki.sh6
-rw-r--r--src/backend/catalog/heap.c4
-rw-r--r--src/backend/commands/analyze.c17
-rw-r--r--src/backend/commands/tablecmds.c16
-rw-r--r--src/backend/parser/gram.y8
-rw-r--r--src/backend/utils/misc/guc.c7
-rw-r--r--src/backend/utils/misc/postgresql.conf.sample1
-rw-r--r--src/bin/pg_dump/pg_dump.c35
-rw-r--r--src/bin/pg_dump/pg_dump.h3
-rw-r--r--src/bin/psql/tab-complete.c3
-rw-r--r--src/include/catalog/pg_attribute.h33
-rw-r--r--src/include/commands/vacuum.h5
-rw-r--r--src/include/pg_config.h.in7
14 files changed, 98 insertions, 51 deletions
diff --git a/src/backend/access/common/tupdesc.c b/src/backend/access/common/tupdesc.c
index 24f33fac4be..1eb62dea91a 100644
--- a/src/backend/access/common/tupdesc.c
+++ b/src/backend/access/common/tupdesc.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/common/tupdesc.c,v 1.81 2002/07/20 05:16:56 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/common/tupdesc.c,v 1.82 2002/07/31 17:19:51 tgl Exp $
*
* NOTES
* some of the executor utility code such as "ExecTypeFromTL" should be
@@ -375,7 +375,7 @@ TupleDescInitEntry(TupleDesc desc,
else
MemSet(NameStr(att->attname), 0, NAMEDATALEN);
- att->attstattarget = 0;
+ att->attstattarget = -1;
att->attcacheoff = -1;
att->atttypmod = typmod;
diff --git a/src/backend/catalog/genbki.sh b/src/backend/catalog/genbki.sh
index 94db1c65189..2fbb84494ca 100644
--- a/src/backend/catalog/genbki.sh
+++ b/src/backend/catalog/genbki.sh
@@ -10,7 +10,7 @@
#
#
# IDENTIFICATION
-# $Header: /cvsroot/pgsql/src/backend/catalog/Attic/genbki.sh,v 1.27 2002/04/27 21:24:33 tgl Exp $
+# $Header: /cvsroot/pgsql/src/backend/catalog/Attic/genbki.sh,v 1.28 2002/07/31 17:19:51 tgl Exp $
#
# NOTES
# non-essential whitespace is removed from the generated file.
@@ -126,12 +126,11 @@ for dir in $INCLUDE_DIRS; do
fi
done
-# Get INDEX_MAX_KEYS and DEFAULT_ATTSTATTARGET from pg_config.h
+# Get INDEX_MAX_KEYS from pg_config.h
# (who needs consistency?)
for dir in $INCLUDE_DIRS; do
if [ -f "$dir/pg_config.h" ]; then
INDEXMAXKEYS=`grep '^#define[ ]*INDEX_MAX_KEYS' $dir/pg_config.h | $AWK '{ print $3 }'`
- DEFAULTATTSTATTARGET=`grep '^#define[ ]*DEFAULT_ATTSTATTARGET' $dir/pg_config.h | $AWK '{ print $3 }'`
break
fi
done
@@ -194,7 +193,6 @@ sed -e "s/;[ ]*$//g" \
-e "s/PGUID/1/g" \
-e "s/NAMEDATALEN/$NAMEDATALEN/g" \
-e "s/PGNSP/$PG_CATALOG_NAMESPACE/g" \
- -e "s/DEFAULT_ATTSTATTARGET/$DEFAULTATTSTATTARGET/g" \
-e "s/INDEX_MAX_KEYS\*2/$INDEXMAXKEYS2/g" \
-e "s/INDEX_MAX_KEYS\*4/$INDEXMAXKEYS4/g" \
-e "s/INDEX_MAX_KEYS/$INDEXMAXKEYS/g" \
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index 07373663aeb..6045c17bb6a 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.213 2002/07/24 19:11:07 petere Exp $
+ * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.214 2002/07/31 17:19:51 tgl Exp $
*
*
* INTERFACE ROUTINES
@@ -441,7 +441,7 @@ AddNewAttributeTuples(Oid new_rel_oid,
/* Fill in the correct relation OID */
(*dpp)->attrelid = new_rel_oid;
/* Make sure these are OK, too */
- (*dpp)->attstattarget = DEFAULT_ATTSTATTARGET;
+ (*dpp)->attstattarget = -1;
(*dpp)->attcacheoff = -1;
tup = heap_addheader(Natts_pg_attribute,
diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c
index 6caa968b5d2..55069aa6feb 100644
--- a/src/backend/commands/analyze.c
+++ b/src/backend/commands/analyze.c
@@ -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;
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 6b943723bb8..cfcf5d5ddfd 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/tablecmds.c,v 1.24 2002/07/20 05:16:57 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/tablecmds.c,v 1.25 2002/07/31 17:19:51 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1668,7 +1668,7 @@ AlterTableAddColumn(Oid myrelid,
attribute->attrelid = myrelid;
namestrcpy(&(attribute->attname), colDef->colname);
attribute->atttypid = HeapTupleGetOid(typeTuple);
- attribute->attstattarget = DEFAULT_ATTSTATTARGET;
+ attribute->attstattarget = -1;
attribute->attlen = tform->typlen;
attribute->attcacheoff = -1;
attribute->atttypmod = colDef->typename->typmod;
@@ -2184,12 +2184,18 @@ AlterTableAlterColumnFlags(Oid myrelid,
newtarget = intVal(flagValue);
/*
- * Limit target to sane range (should we raise an error instead?)
+ * Limit target to a sane range
*/
- if (newtarget < 0)
- newtarget = 0;
+ if (newtarget < -1)
+ {
+ elog(ERROR, "ALTER TABLE: statistics target %d is too low",
+ newtarget);
+ }
else if (newtarget > 1000)
+ {
+ elog(WARNING, "ALTER TABLE: lowering statistics target to 1000");
newtarget = 1000;
+ }
}
else if (*flagType == 'M')
{
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 685919a3ff5..73c2875d1b7 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -11,7 +11,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.351 2002/07/30 16:55:44 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.352 2002/07/31 17:19:51 tgl Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
@@ -1134,14 +1134,14 @@ AlterTableStmt:
n->name = $6;
$$ = (Node *)n;
}
- /* ALTER TABLE <relation> ALTER [COLUMN] <colname> SET STATISTICS <Iconst> */
- | ALTER TABLE relation_expr ALTER opt_column ColId SET STATISTICS Iconst
+ /* ALTER TABLE <relation> ALTER [COLUMN] <colname> SET STATISTICS <IntegerOnly> */
+ | ALTER TABLE relation_expr ALTER opt_column ColId SET STATISTICS IntegerOnly
{
AlterTableStmt *n = makeNode(AlterTableStmt);
n->subtype = 'S';
n->relation = $3;
n->name = $6;
- n->def = (Node *) makeInteger($9);
+ n->def = (Node *) $9;
$$ = (Node *)n;
}
/* ALTER TABLE <relation> ALTER [COLUMN] <colname> SET STORAGE <storagemode> */
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 4a03c95277b..dd22003bac7 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -5,7 +5,7 @@
* command, configuration file, and command line options.
* See src/backend/utils/misc/README for more information.
*
- * $Header: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v 1.76 2002/07/30 16:20:03 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/misc/guc.c,v 1.77 2002/07/31 17:19:52 tgl Exp $
*
* Copyright 2000 by PostgreSQL Global Development Group
* Written by Peter Eisentraut <peter_e@gmx.net>.
@@ -26,6 +26,7 @@
#include "catalog/pg_type.h"
#include "commands/async.h"
#include "commands/variable.h"
+#include "commands/vacuum.h"
#include "executor/executor.h"
#include "fmgr.h"
#include "libpq/auth.h"
@@ -492,6 +493,10 @@ static struct config_int
ConfigureNamesInt[] =
{
{
+ { "default_statistics_target", PGC_USERSET }, &default_statistics_target,
+ 10, 1, 1000, NULL, NULL
+ },
+ {
{ "geqo_threshold", PGC_USERSET }, &geqo_rels,
DEFAULT_GEQO_RELS, 2, INT_MAX, NULL, NULL
},
diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample
index 1830ab166c0..be097186cac 100644
--- a/src/backend/utils/misc/postgresql.conf.sample
+++ b/src/backend/utils/misc/postgresql.conf.sample
@@ -95,6 +95,7 @@
#cpu_index_tuple_cost = 0.001
#cpu_operator_cost = 0.0025
+#default_statistics_target = 10 # range 1-1000
#
# GEQO Optimizer Parameters
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 76623f61835..7ca027e0105 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -22,7 +22,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.277 2002/07/30 21:56:04 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.278 2002/07/31 17:19:52 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -2344,6 +2344,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
int i_attname;
int i_atttypname;
int i_atttypmod;
+ int i_attstattarget;
int i_attnotnull;
int i_atthasdef;
PGresult *res;
@@ -2384,7 +2385,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
if (g_fout->remoteVersion >= 70300)
{
- appendPQExpBuffer(q, "SELECT attnum, attname, atttypmod, "
+ appendPQExpBuffer(q, "SELECT attnum, attname, atttypmod, attstattarget, "
"attnotnull, atthasdef, "
"pg_catalog.format_type(atttypid,atttypmod) as atttypname "
"from pg_catalog.pg_attribute a "
@@ -2395,7 +2396,12 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
}
else if (g_fout->remoteVersion >= 70100)
{
- appendPQExpBuffer(q, "SELECT attnum, attname, atttypmod, "
+ /*
+ * attstattarget doesn't exist in 7.1. It does exist in 7.2,
+ * but we don't dump it because we can't tell whether it's been
+ * explicitly set or was just a default.
+ */
+ appendPQExpBuffer(q, "SELECT attnum, attname, atttypmod, -1 as attstattarget, "
"attnotnull, atthasdef, "
"format_type(atttypid,atttypmod) as atttypname "
"from pg_attribute a "
@@ -2407,7 +2413,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
else
{
/* format_type not available before 7.1 */
- appendPQExpBuffer(q, "SELECT attnum, attname, atttypmod, "
+ appendPQExpBuffer(q, "SELECT attnum, attname, atttypmod, -1 as attstattarget, "
"attnotnull, atthasdef, "
"(select typname from pg_type where oid = atttypid) as atttypname "
"from pg_attribute a "
@@ -2430,6 +2436,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
i_attname = PQfnumber(res, "attname");
i_atttypname = PQfnumber(res, "atttypname");
i_atttypmod = PQfnumber(res, "atttypmod");
+ i_attstattarget = PQfnumber(res, "attstattarget");
i_attnotnull = PQfnumber(res, "attnotnull");
i_atthasdef = PQfnumber(res, "atthasdef");
@@ -2437,6 +2444,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
tblinfo[i].attnames = (char **) malloc(ntups * sizeof(char *));
tblinfo[i].atttypnames = (char **) malloc(ntups * sizeof(char *));
tblinfo[i].atttypmod = (int *) malloc(ntups * sizeof(int));
+ tblinfo[i].attstattarget = (int *) malloc(ntups * sizeof(int));
tblinfo[i].notnull = (bool *) malloc(ntups * sizeof(bool));
tblinfo[i].adef_expr = (char **) malloc(ntups * sizeof(char *));
tblinfo[i].inhAttrs = (bool *) malloc(ntups * sizeof(bool));
@@ -2449,6 +2457,7 @@ getTableAttrs(TableInfo *tblinfo, int numTables)
tblinfo[i].attnames[j] = strdup(PQgetvalue(res, j, i_attname));
tblinfo[i].atttypnames[j] = strdup(PQgetvalue(res, j, i_atttypname));
tblinfo[i].atttypmod[j] = atoi(PQgetvalue(res, j, i_atttypmod));
+ tblinfo[i].attstattarget[j] = atoi(PQgetvalue(res, j, i_attstattarget));
tblinfo[i].notnull[j] = (PQgetvalue(res, j, i_attnotnull)[0] == 't');
tblinfo[i].adef_expr[j] = NULL; /* fix below */
if (PQgetvalue(res, j, i_atthasdef)[0] == 't')
@@ -5144,6 +5153,24 @@ dumpOneTable(Archive *fout, TableInfo *tbinfo, TableInfo *g_tblinfo)
appendPQExpBuffer(q, " WITHOUT OIDS");
appendPQExpBuffer(q, ";\n");
+
+ /*
+ * Dump per-column statistics information. We only issue an ALTER TABLE
+ * statement if the attstattarget entry for this column is non-negative
+ * (i.e. it's not the default value)
+ */
+ for (j = 0; j < tbinfo->numatts; j++)
+ {
+ if (tbinfo->attstattarget[j] >= 0)
+ {
+ appendPQExpBuffer(q, "ALTER TABLE %s ",
+ fmtId(tbinfo->relname, force_quotes));
+ appendPQExpBuffer(q, "ALTER COLUMN %s ",
+ fmtId(tbinfo->attnames[j], force_quotes));
+ appendPQExpBuffer(q, "SET STATISTICS %d;\n",
+ tbinfo->attstattarget[j]);
+ }
+ }
}
ArchiveEntry(fout, objoid, tbinfo->relname,
diff --git a/src/bin/pg_dump/pg_dump.h b/src/bin/pg_dump/pg_dump.h
index b3b943dde08..6a6322c9ca2 100644
--- a/src/bin/pg_dump/pg_dump.h
+++ b/src/bin/pg_dump/pg_dump.h
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: pg_dump.h,v 1.92 2002/07/30 21:56:04 tgl Exp $
+ * $Id: pg_dump.h,v 1.93 2002/07/31 17:19:53 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -122,6 +122,7 @@ typedef struct _tableInfo
char **attnames; /* the attribute names */
char **atttypnames; /* attribute type names */
int *atttypmod; /* type-specific type modifiers */
+ int *attstattarget; /* attribute statistics targets */
/*
* Note: we need to store per-attribute notnull and default stuff for
* all interesting tables so that we can tell which constraints were
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
index 8e37306f380..f60ccae324a 100644
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@ -3,7 +3,7 @@
*
* Copyright 2000 by PostgreSQL Global Development Group
*
- * $Header: /cvsroot/pgsql/src/bin/psql/tab-complete.c,v 1.52 2002/07/30 16:35:05 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/tab-complete.c,v 1.53 2002/07/31 17:19:53 tgl Exp $
*/
/*----------------------------------------------------------------------
@@ -246,6 +246,7 @@ psql_completion(char *text, int start, int end)
"password_encryption",
"transform_null_equals",
+ "default_statistics_target",
"geqo_threshold",
"geqo_pool_size",
"geqo_effort",
diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h
index 462df4cc17e..15945192a00 100644
--- a/src/include/catalog/pg_attribute.h
+++ b/src/include/catalog/pg_attribute.h
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: pg_attribute.h,v 1.94 2002/07/24 19:11:12 petere Exp $
+ * $Id: pg_attribute.h,v 1.95 2002/07/31 17:19:54 tgl Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
@@ -58,7 +58,8 @@ CATALOG(pg_attribute) BOOTSTRAP BKI_WITHOUT_OIDS
* attstattarget is the target number of statistics datapoints to
* collect during VACUUM ANALYZE of this column. A zero here
* indicates that we do not wish to collect any stats about this
- * column.
+ * column. A "-1" here indicates that no value has been explicitly
+ * set for this column, so ANALYZE should use the default setting.
*/
int4 attstattarget;
@@ -210,7 +211,7 @@ typedef FormData_pg_attribute *Form_pg_attribute;
* ----------------
*/
#define Schema_pg_type \
-{ 1247, {"typname"}, 19, DEFAULT_ATTSTATTARGET, NAMEDATALEN, 1, 0, -1, -1, false, 'p', false, 'i', false, false }, \
+{ 1247, {"typname"}, 19, -1, NAMEDATALEN, 1, 0, -1, -1, false, 'p', false, 'i', false, false }, \
{ 1247, {"typnamespace"}, 26, 0, 4, 2, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1247, {"typowner"}, 23, 0, 4, 3, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1247, {"typlen"}, 21, 0, 2, 4, 0, -1, -1, true, 'p', false, 's', false, false }, \
@@ -232,7 +233,7 @@ typedef FormData_pg_attribute *Form_pg_attribute;
{ 1247, {"typdefault"}, 25, 0, -1, 20, 0, -1, -1, false, 'x', false, 'i', false, false }
-DATA(insert ( 1247 typname 19 DEFAULT_ATTSTATTARGET NAMEDATALEN 1 0 -1 -1 f p f i f f));
+DATA(insert ( 1247 typname 19 -1 NAMEDATALEN 1 0 -1 -1 f p f i f f));
DATA(insert ( 1247 typnamespace 26 0 4 2 0 -1 -1 t p f i f f));
DATA(insert ( 1247 typowner 23 0 4 3 0 -1 -1 t p f i f f));
DATA(insert ( 1247 typlen 21 0 2 4 0 -1 -1 t p f s f f));
@@ -289,7 +290,7 @@ DATA(insert ( 1262 tableoid 26 0 4 -7 0 -1 -1 t p f i f f));
* ----------------
*/
#define Schema_pg_proc \
-{ 1255, {"proname"}, 19, DEFAULT_ATTSTATTARGET, NAMEDATALEN, 1, 0, -1, -1, false, 'p', false, 'i', false, false }, \
+{ 1255, {"proname"}, 19, -1, NAMEDATALEN, 1, 0, -1, -1, false, 'p', false, 'i', false, false }, \
{ 1255, {"pronamespace"}, 26, 0, 4, 2, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1255, {"proowner"}, 23, 0, 4, 3, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1255, {"prolang"}, 26, 0, 4, 4, 0, -1, -1, true, 'p', false, 'i', false, false }, \
@@ -305,7 +306,7 @@ DATA(insert ( 1262 tableoid 26 0 4 -7 0 -1 -1 t p f i f f));
{ 1255, {"probin"}, 17, 0, -1, 14, 0, -1, -1, false, 'x', false, 'i', false, false }, \
{ 1255, {"proacl"}, 1034, 0, -1, 15, 0, -1, -1, false, 'x', false, 'i', false, false }
-DATA(insert ( 1255 proname 19 DEFAULT_ATTSTATTARGET NAMEDATALEN 1 0 -1 -1 f p f i f f));
+DATA(insert ( 1255 proname 19 -1 NAMEDATALEN 1 0 -1 -1 f p f i f f));
DATA(insert ( 1255 pronamespace 26 0 4 2 0 -1 -1 t p f i f f));
DATA(insert ( 1255 proowner 23 0 4 3 0 -1 -1 t p f i f f));
DATA(insert ( 1255 prolang 26 0 4 4 0 -1 -1 t p f i f f));
@@ -332,8 +333,8 @@ DATA(insert ( 1255 tableoid 26 0 4 -7 0 -1 -1 t p f i f f));
* pg_shadow
* ----------------
*/
-DATA(insert ( 1260 usename 19 DEFAULT_ATTSTATTARGET NAMEDATALEN 1 0 -1 -1 f p f i f f));
-DATA(insert ( 1260 usesysid 23 DEFAULT_ATTSTATTARGET 4 2 0 -1 -1 t p f i f f));
+DATA(insert ( 1260 usename 19 -1 NAMEDATALEN 1 0 -1 -1 f p f i f f));
+DATA(insert ( 1260 usesysid 23 -1 4 2 0 -1 -1 t p f i f f));
DATA(insert ( 1260 usecreatedb 16 0 1 3 0 -1 -1 t p f c f f));
DATA(insert ( 1260 usesuper 16 0 1 4 0 -1 -1 t p f c f f));
DATA(insert ( 1260 usecatupd 16 0 1 5 0 -1 -1 t p f c f f));
@@ -352,8 +353,8 @@ DATA(insert ( 1260 tableoid 26 0 4 -7 0 -1 -1 t p f i f f));
* pg_group
* ----------------
*/
-DATA(insert ( 1261 groname 19 DEFAULT_ATTSTATTARGET NAMEDATALEN 1 0 -1 -1 f p f i f f));
-DATA(insert ( 1261 grosysid 23 DEFAULT_ATTSTATTARGET 4 2 0 -1 -1 t p f i f f));
+DATA(insert ( 1261 groname 19 -1 NAMEDATALEN 1 0 -1 -1 f p f i f f));
+DATA(insert ( 1261 grosysid 23 -1 4 2 0 -1 -1 t p f i f f));
DATA(insert ( 1261 grolist 1007 0 -1 3 0 -1 -1 f x f i f f));
DATA(insert ( 1261 ctid 27 0 6 -1 0 -1 -1 f p f i f f));
/* no OIDs in pg_group */
@@ -368,8 +369,8 @@ DATA(insert ( 1261 tableoid 26 0 4 -7 0 -1 -1 t p f i f f));
* ----------------
*/
#define Schema_pg_attribute \
-{ 1249, {"attrelid"}, 26, DEFAULT_ATTSTATTARGET, 4, 1, 0, -1, -1, true, 'p', false, 'i', false, false }, \
-{ 1249, {"attname"}, 19, DEFAULT_ATTSTATTARGET, NAMEDATALEN, 2, 0, -1, -1, false, 'p', false, 'i', false, false }, \
+{ 1249, {"attrelid"}, 26, -1, 4, 1, 0, -1, -1, true, 'p', false, 'i', false, false }, \
+{ 1249, {"attname"}, 19, -1, NAMEDATALEN, 2, 0, -1, -1, false, 'p', false, 'i', false, false }, \
{ 1249, {"atttypid"}, 26, 0, 4, 3, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1249, {"attstattarget"}, 23, 0, 4, 4, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1249, {"attlen"}, 21, 0, 2, 5, 0, -1, -1, true, 'p', false, 's', false, false }, \
@@ -384,8 +385,8 @@ DATA(insert ( 1261 tableoid 26 0 4 -7 0 -1 -1 t p f i f f));
{ 1249, {"attnotnull"}, 16, 0, 1, 14, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1249, {"atthasdef"}, 16, 0, 1, 15, 0, -1, -1, true, 'p', false, 'c', false, false }
-DATA(insert ( 1249 attrelid 26 DEFAULT_ATTSTATTARGET 4 1 0 -1 -1 t p f i f f));
-DATA(insert ( 1249 attname 19 DEFAULT_ATTSTATTARGET NAMEDATALEN 2 0 -1 -1 f p f i f f));
+DATA(insert ( 1249 attrelid 26 -1 4 1 0 -1 -1 t p f i f f));
+DATA(insert ( 1249 attname 19 -1 NAMEDATALEN 2 0 -1 -1 f p f i f f));
DATA(insert ( 1249 atttypid 26 0 4 3 0 -1 -1 t p f i f f));
DATA(insert ( 1249 attstattarget 23 0 4 4 0 -1 -1 t p f i f f));
DATA(insert ( 1249 attlen 21 0 2 5 0 -1 -1 t p f s f f));
@@ -412,7 +413,7 @@ DATA(insert ( 1249 tableoid 26 0 4 -7 0 -1 -1 t p f i f f));
* ----------------
*/
#define Schema_pg_class \
-{ 1259, {"relname"}, 19, DEFAULT_ATTSTATTARGET, NAMEDATALEN, 1, 0, -1, -1, false, 'p', false, 'i', false, false }, \
+{ 1259, {"relname"}, 19, -1, NAMEDATALEN, 1, 0, -1, -1, false, 'p', false, 'i', false, false }, \
{ 1259, {"relnamespace"}, 26, 0, 4, 2, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1259, {"reltype"}, 26, 0, 4, 3, 0, -1, -1, true, 'p', false, 'i', false, false }, \
{ 1259, {"relowner"}, 23, 0, 4, 4, 0, -1, -1, true, 'p', false, 'i', false, false }, \
@@ -437,7 +438,7 @@ DATA(insert ( 1249 tableoid 26 0 4 -7 0 -1 -1 t p f i f f));
{ 1259, {"relhassubclass"},16, 0, 1, 23, 0, -1, -1, true, 'p', false, 'c', false, false }, \
{ 1259, {"relacl"}, 1034, 0, -1, 24, 0, -1, -1, false, 'x', false, 'i', false, false }
-DATA(insert ( 1259 relname 19 DEFAULT_ATTSTATTARGET NAMEDATALEN 1 0 -1 -1 f p f i f f));
+DATA(insert ( 1259 relname 19 -1 NAMEDATALEN 1 0 -1 -1 f p f i f f));
DATA(insert ( 1259 relnamespace 26 0 4 2 0 -1 -1 t p f i f f));
DATA(insert ( 1259 reltype 26 0 4 3 0 -1 -1 t p f i f f));
DATA(insert ( 1259 relowner 23 0 4 4 0 -1 -1 t p f i f f));
diff --git a/src/include/commands/vacuum.h b/src/include/commands/vacuum.h
index 42986f4ed4d..9d6565659b8 100644
--- a/src/include/commands/vacuum.h
+++ b/src/include/commands/vacuum.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: vacuum.h,v 1.44 2002/06/20 20:29:49 momjian Exp $
+ * $Id: vacuum.h,v 1.45 2002/07/31 17:19:54 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -34,6 +34,9 @@ typedef struct VacRUsage
struct rusage ru;
} VacRUsage;
+/* Default statistics target (GUC parameter) */
+extern int default_statistics_target;
+
/* in commands/vacuum.c */
extern void vacuum(VacuumStmt *vacstmt);
diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in
index 7a616440cf4..01d5465ad84 100644
--- a/src/include/pg_config.h.in
+++ b/src/include/pg_config.h.in
@@ -8,7 +8,7 @@
* or in pg_config.h afterwards. Of course, if you edit pg_config.h, then your
* changes will be overwritten the next time you run configure.
*
- * $Id: pg_config.h.in,v 1.25 2002/07/20 05:16:59 momjian Exp $
+ * $Id: pg_config.h.in,v 1.26 2002/07/31 17:19:54 tgl Exp $
*/
#ifndef PG_CONFIG_H
@@ -166,11 +166,6 @@
#define FUNC_MAX_ARGS INDEX_MAX_KEYS
/*
- * System default value for pg_attribute.attstattarget
- */
-#define DEFAULT_ATTSTATTARGET 10
-
-/*
* Define this to make libpgtcl's "pg_result -assign" command process C-style
* backslash sequences in returned tuple data and convert Postgres array
* attributes into Tcl lists. CAUTION: this conversion is *wrong* unless