Index: doc/src/sgml/ref/alter_table.sgml =================================================================== RCS file: /var/lib/cvs/pgsql/doc/src/sgml/ref/alter_table.sgml,v retrieving revision 1.46 diff -c -r1.46 alter_table.sgml *** doc/src/sgml/ref/alter_table.sgml 12 Jul 2002 18:43:12 -0000 1.46 --- doc/src/sgml/ref/alter_table.sgml 20 Jul 2002 04:34:25 -0000 *************** *** 215,222 **** SET STATISTICS ! This form ! sets the per-column statistics-gathering target for subsequent operations. --- 215,221 ---- SET STATISTICS ! This form sets the per-column statistics-gathering target for subsequent operations. Index: doc/src/sgml/ref/analyze.sgml =================================================================== RCS file: /var/lib/cvs/pgsql/doc/src/sgml/ref/analyze.sgml,v retrieving revision 1.8 diff -c -r1.8 analyze.sgml *** doc/src/sgml/ref/analyze.sgml 23 Apr 2002 02:07:15 -0000 1.8 --- doc/src/sgml/ref/analyze.sgml 20 Jul 2002 04:34:25 -0000 *************** *** 165,176 **** list and the maximum number of bins in the histogram. The default target value is 10, but this can be adjusted up or down to trade off accuracy of planner estimates against the time taken for ! ANALYZE and the ! amount of space occupied in pg_statistic. In particular, setting the statistics target to zero disables collection of statistics for that column. It may be useful to do that for columns that are never used as part of the WHERE, GROUP BY, or ORDER BY clauses of queries, since the planner will have no use for statistics on such columns. --- 165,178 ---- list and the maximum number of bins in the histogram. The default target value is 10, but this can be adjusted up or down to trade off accuracy of planner estimates against the time taken for ! ANALYZE and the amount of space occupied ! in pg_statistic. In particular, setting the statistics target to zero disables collection of statistics for that column. It may be useful to do that for columns that are never used as part of the WHERE, GROUP BY, or ORDER BY clauses of queries, since the planner will have no use for statistics on such columns. + Setting the statistics target larger than 1000 will result in the target + being lowered to 1000. Index: src/backend/access/common/tupdesc.c =================================================================== RCS file: /var/lib/cvs/pgsql/src/backend/access/common/tupdesc.c,v retrieving revision 1.80 diff -c -r1.80 tupdesc.c *** src/backend/access/common/tupdesc.c 20 Jun 2002 20:29:24 -0000 1.80 --- src/backend/access/common/tupdesc.c 20 Jul 2002 04:34:25 -0000 *************** *** 369,375 **** else MemSet(NameStr(att->attname), 0, NAMEDATALEN); ! att->attstattarget = 0; att->attcacheoff = -1; att->atttypmod = typmod; --- 369,375 ---- else MemSet(NameStr(att->attname), 0, NAMEDATALEN); ! att->attstattarget = -1; att->attcacheoff = -1; att->atttypmod = typmod; Index: src/backend/catalog/genbki.sh =================================================================== RCS file: /var/lib/cvs/pgsql/src/backend/catalog/genbki.sh,v retrieving revision 1.27 diff -c -r1.27 genbki.sh *** src/backend/catalog/genbki.sh 27 Apr 2002 21:24:33 -0000 1.27 --- src/backend/catalog/genbki.sh 20 Jul 2002 04:34:25 -0000 *************** *** 126,137 **** fi done ! # Get INDEX_MAX_KEYS and DEFAULT_ATTSTATTARGET 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 --- 126,136 ---- fi done ! # 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 }'` break fi done *************** *** 194,200 **** -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" \ --- 193,198 ---- Index: src/backend/catalog/heap.c =================================================================== RCS file: /var/lib/cvs/pgsql/src/backend/catalog/heap.c,v retrieving revision 1.210 diff -c -r1.210 heap.c *** src/backend/catalog/heap.c 18 Jul 2002 16:47:22 -0000 1.210 --- src/backend/catalog/heap.c 20 Jul 2002 04:34:25 -0000 *************** *** 441,447 **** /* Fill in the correct relation OID */ (*dpp)->attrelid = new_rel_oid; /* Make sure these are OK, too */ ! (*dpp)->attstattarget = DEFAULT_ATTSTATTARGET; (*dpp)->attcacheoff = -1; tup = heap_addheader(Natts_pg_attribute, --- 441,447 ---- /* Fill in the correct relation OID */ (*dpp)->attrelid = new_rel_oid; /* Make sure these are OK, too */ ! (*dpp)->attstattarget = -1; (*dpp)->attcacheoff = -1; tup = heap_addheader(Natts_pg_attribute, Index: src/backend/commands/analyze.c =================================================================== RCS file: /var/lib/cvs/pgsql/src/backend/commands/analyze.c,v retrieving revision 1.38 diff -c -r1.38 analyze.c *** src/backend/commands/analyze.c 20 Jun 2002 20:29:26 -0000 1.38 --- src/backend/commands/analyze.c 20 Jul 2002 04:34:25 -0000 *************** *** 384,390 **** VacAttrStats *stats; /* Don't analyze column if user has specified not to */ ! if (attr->attstattarget <= 0) return NULL; /* If column has no "=" operator, we can't do much of anything */ --- 384,390 ---- VacAttrStats *stats; /* Don't analyze column if user has specified not to */ ! if (attr->attstattarget == 0) return NULL; /* If column has no "=" operator, we can't do much of anything */ *************** *** 425,430 **** --- 425,434 ---- stats->eqopr = eqopr; stats->eqfunc = eqfunc; + /* If the attstattarget column is set to "-1", use the default value */ + if (stats->attr->attstattarget == -1) + stats->attr->attstattarget = DEFAULT_ATTSTATTARGET; + /* Is there a "<" operator with suitable semantics? */ func_operator = compatible_oper(makeList1(makeString("<")), attr->atttypid, *************** *** 466,479 **** * know it at this point. *-------------------- */ ! stats->minrows = 300 * 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; } return stats; --- 470,483 ---- * know it at this point. *-------------------- */ ! 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 * stats->attr->attstattarget; } return stats; Index: src/backend/commands/tablecmds.c =================================================================== RCS file: /var/lib/cvs/pgsql/src/backend/commands/tablecmds.c,v retrieving revision 1.23 diff -c -r1.23 tablecmds.c *** src/backend/commands/tablecmds.c 16 Jul 2002 22:12:19 -0000 1.23 --- src/backend/commands/tablecmds.c 20 Jul 2002 04:34:25 -0000 *************** *** 1666,1672 **** attribute->attrelid = myrelid; namestrcpy(&(attribute->attname), colDef->colname); attribute->atttypid = typeTuple->t_data->t_oid; ! attribute->attstattarget = DEFAULT_ATTSTATTARGET; attribute->attlen = tform->typlen; attribute->attcacheoff = -1; attribute->atttypmod = colDef->typename->typmod; --- 1666,1672 ---- attribute->attrelid = myrelid; namestrcpy(&(attribute->attname), colDef->colname); attribute->atttypid = typeTuple->t_data->t_oid; ! attribute->attstattarget = -1; attribute->attlen = tform->typlen; attribute->attcacheoff = -1; attribute->atttypmod = colDef->typename->typmod; *************** *** 2180,2191 **** newtarget = intVal(flagValue); /* ! * Limit target to sane range (should we raise an error instead?) */ ! if (newtarget < 0) ! newtarget = 0; else if (newtarget > 1000) newtarget = 1000; } else if (*flagType == 'M') { --- 2180,2197 ---- newtarget = intVal(flagValue); /* ! * Limit target to a sane range */ ! 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') { Index: src/backend/parser/gram.y =================================================================== RCS file: /var/lib/cvs/pgsql/src/backend/parser/gram.y,v retrieving revision 2.347 diff -c -r2.347 gram.y *** src/backend/parser/gram.y 18 Jul 2002 23:11:27 -0000 2.347 --- src/backend/parser/gram.y 20 Jul 2002 04:34:25 -0000 *************** *** 310,315 **** --- 310,317 ---- %type constraints_set_list %type constraints_set_mode + %type column_stats + /* * If you make any token changes, update the keyword table in *************** *** 1132,1139 **** n->name = $6; $$ = (Node *)n; } ! /* ALTER TABLE ALTER [COLUMN] SET STATISTICS */ ! | ALTER TABLE relation_expr ALTER opt_column ColId SET STATISTICS Iconst { AlterTableStmt *n = makeNode(AlterTableStmt); n->subtype = 'S'; --- 1134,1141 ---- n->name = $6; $$ = (Node *)n; } ! /* ALTER TABLE ALTER [COLUMN] SET STATISTICS | DEFAULT */ ! | ALTER TABLE relation_expr ALTER opt_column ColId SET STATISTICS column_stats { AlterTableStmt *n = makeNode(AlterTableStmt); n->subtype = 'S'; *************** *** 1202,1207 **** --- 1204,1213 ---- $$ = (Node *)n; } ; + + column_stats: DEFAULT { $$ = -1; } + | Iconst { $$ = $1; } + ; alter_column_default: SET DEFAULT a_expr Index: src/bin/pg_dump/pg_dump.c =================================================================== RCS file: /var/lib/cvs/pgsql/src/bin/pg_dump/pg_dump.c,v retrieving revision 1.274 diff -c -r1.274 pg_dump.c *** src/bin/pg_dump/pg_dump.c 18 Jul 2002 23:11:29 -0000 1.274 --- src/bin/pg_dump/pg_dump.c 20 Jul 2002 04:34:26 -0000 *************** *** 2259,2264 **** --- 2259,2265 ---- int i_attname; int i_atttypname; int i_atttypmod; + int i_attstattarget; int i_attnotnull; int i_atthasdef; PGresult *res; *************** *** 2299,2305 **** if (g_fout->remoteVersion >= 70300) { ! appendPQExpBuffer(q, "SELECT attnum, attname, atttypmod, " "attnotnull, atthasdef, " "pg_catalog.format_type(atttypid,atttypmod) as atttypname " "from pg_catalog.pg_attribute a " --- 2300,2306 ---- if (g_fout->remoteVersion >= 70300) { ! appendPQExpBuffer(q, "SELECT attnum, attname, atttypmod, attstattarget, " "attnotnull, atthasdef, " "pg_catalog.format_type(atttypid,atttypmod) as atttypname " "from pg_catalog.pg_attribute a " *************** *** 2308,2313 **** --- 2309,2325 ---- "order by attrelid, attnum", tblinfo[i].oid); } + else if (g_fout->remoteVersion >= 70200) + { + appendPQExpBuffer(q, "SELECT attnum, attname, atttypmod, attstattarget, " + "attnotnull, atthasdef, " + "format_type(atttypid,atttypmod) as atttypname " + "from pg_attribute a " + "where attrelid = '%s'::oid " + "and attnum > 0::int2 " + "order by attrelid, attnum", + tblinfo[i].oid); + } else if (g_fout->remoteVersion >= 70100) { appendPQExpBuffer(q, "SELECT attnum, attname, atttypmod, " *************** *** 2345,2350 **** --- 2357,2363 ---- 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"); *************** *** 2352,2357 **** --- 2365,2371 ---- 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)); *************** *** 2364,2369 **** --- 2378,2384 ---- 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') *************** *** 4869,4874 **** --- 4884,4907 ---- 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 not -1 (i.e. + * it's not the default value). + */ + for (j = 0; j < tbinfo->numatts; j++) + { + if (tbinfo->attstattarget[j] != -1) + { + 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, Index: src/bin/pg_dump/pg_dump.h =================================================================== RCS file: /var/lib/cvs/pgsql/src/bin/pg_dump/pg_dump.h,v retrieving revision 1.91 diff -c -r1.91 pg_dump.h *** src/bin/pg_dump/pg_dump.h 18 Jul 2002 23:11:29 -0000 1.91 --- src/bin/pg_dump/pg_dump.h 20 Jul 2002 04:34:26 -0000 *************** *** 114,119 **** --- 114,120 ---- char **attnames; /* the attribute names */ char **atttypnames; /* attribute type names */ int *atttypmod; /* type-specific type modifiers */ + int *attstattarget; /* attribute statistics */ /* * Note: we need to store per-attribute notnull and default stuff for * all interesting tables so that we can tell which constraints were Index: src/include/pg_config.h.in =================================================================== RCS file: /var/lib/cvs/pgsql/src/include/pg_config.h.in,v retrieving revision 1.24 diff -c -r1.24 pg_config.h.in *** src/include/pg_config.h.in 5 May 2002 00:03:29 -0000 1.24 --- src/include/pg_config.h.in 20 Jul 2002 04:34:26 -0000 *************** *** 166,172 **** #define FUNC_MAX_ARGS INDEX_MAX_KEYS /* ! * System default value for pg_attribute.attstattarget */ #define DEFAULT_ATTSTATTARGET 10 --- 166,174 ---- #define FUNC_MAX_ARGS INDEX_MAX_KEYS /* ! * This is the default statistics -- any attribute for which ! * pg_attribute.attstattarget is "-1" will use this value for its statistics ! * target. */ #define DEFAULT_ATTSTATTARGET 10 Index: src/include/catalog/pg_attribute.h =================================================================== RCS file: /var/lib/cvs/pgsql/src/include/catalog/pg_attribute.h,v retrieving revision 1.93 diff -c -r1.93 pg_attribute.h *** src/include/catalog/pg_attribute.h 20 Jun 2002 20:29:44 -0000 1.93 --- src/include/catalog/pg_attribute.h 20 Jul 2002 04:34:26 -0000 *************** *** 58,64 **** * 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. */ int4 attstattarget; --- 58,65 ---- * 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. A "-1" here indicates that no value has been explicitely ! * set for this column, so ANALYZE should use the default value. */ int4 attstattarget; *************** *** 210,216 **** * ---------------- */ #define Schema_pg_type \ ! { 1247, {"typname"}, 19, DEFAULT_ATTSTATTARGET, 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 }, \ --- 211,217 ---- * ---------------- */ #define Schema_pg_type \ ! { 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 }, \ *************** *** 235,241 **** { 1247, {"typdefault"}, 25, 0, -1, 23, 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 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)); --- 236,242 ---- { 1247, {"typdefault"}, 25, 0, -1, 23, 0, -1, -1, false, 'x', false, 'i', false, false } ! 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)); *************** *** 295,301 **** * ---------------- */ #define Schema_pg_proc \ ! { 1255, {"proname"}, 19, DEFAULT_ATTSTATTARGET, 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 }, \ --- 296,302 ---- * ---------------- */ #define Schema_pg_proc \ ! { 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 }, \ *************** *** 316,322 **** { 1255, {"probin"}, 17, 0, -1, 19, 0, -1, -1, false, 'x', false, 'i', false, false }, \ { 1255, {"proacl"}, 1034, 0, -1, 20, 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 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)); --- 317,323 ---- { 1255, {"probin"}, 17, 0, -1, 19, 0, -1, -1, false, 'x', false, 'i', false, false }, \ { 1255, {"proacl"}, 1034, 0, -1, 20, 0, -1, -1, false, 'x', false, 'i', false, false } ! 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)); *************** *** 348,355 **** * 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 usecreatedb 16 0 1 3 0 -1 -1 t p f c f f)); DATA(insert ( 1260 usetrace 16 0 1 4 0 -1 -1 t p f c f f)); DATA(insert ( 1260 usesuper 16 0 1 5 0 -1 -1 t p f c f f)); --- 349,356 ---- * pg_shadow * ---------------- */ ! 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 usetrace 16 0 1 4 0 -1 -1 t p f c f f)); DATA(insert ( 1260 usesuper 16 0 1 5 0 -1 -1 t p f c f f)); *************** *** 369,376 **** * 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 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 */ --- 370,377 ---- * pg_group * ---------------- */ ! 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 */ *************** *** 385,392 **** * ---------------- */ #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, {"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 }, \ --- 386,393 ---- * ---------------- */ #define Schema_pg_attribute \ ! { 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 }, \ *************** *** 401,408 **** { 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 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)); --- 402,409 ---- { 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 -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)); *************** *** 429,435 **** * ---------------- */ #define Schema_pg_class \ ! { 1259, {"relname"}, 19, DEFAULT_ATTSTATTARGET, 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 }, \ --- 430,436 ---- * ---------------- */ #define Schema_pg_class \ ! { 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 }, \ *************** *** 454,460 **** { 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 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)); --- 455,461 ---- { 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 -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));