Commit 7a3977c0 authored by Tom Lane's avatar Tom Lane

Fix a couple of oversights in new ALTER TABLE code that broke

ALTER SET STATISTICS for functional indexes.
parent c00b3099
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.106 2004/05/08 00:34:49 tgl Exp $ * $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.107 2004/05/08 22:46:29 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -112,6 +112,7 @@ typedef struct AlteredTableInfo ...@@ -112,6 +112,7 @@ typedef struct AlteredTableInfo
{ {
/* Information saved before any work commences: */ /* Information saved before any work commences: */
Oid relid; /* Relation to work on */ Oid relid; /* Relation to work on */
char relkind; /* Its relkind */
TupleDesc oldDesc; /* Pre-modification tuple descriptor */ TupleDesc oldDesc; /* Pre-modification tuple descriptor */
/* Information saved by Phase 1 for Phase 2: */ /* Information saved by Phase 1 for Phase 2: */
List *subcmds[AT_NUM_PASSES]; /* Lists of AlterTableCmd */ List *subcmds[AT_NUM_PASSES]; /* Lists of AlterTableCmd */
...@@ -2011,9 +2012,10 @@ ATRewriteCatalogs(List **wqueue) ...@@ -2011,9 +2012,10 @@ ATRewriteCatalogs(List **wqueue)
{ {
AlteredTableInfo *tab = (AlteredTableInfo *) lfirst(ltab); AlteredTableInfo *tab = (AlteredTableInfo *) lfirst(ltab);
if (tab->subcmds[AT_PASS_ADD_COL] || if (tab->relkind == RELKIND_RELATION &&
(tab->subcmds[AT_PASS_ADD_COL] ||
tab->subcmds[AT_PASS_ALTER_TYPE] || tab->subcmds[AT_PASS_ALTER_TYPE] ||
tab->subcmds[AT_PASS_COL_ATTRS]) tab->subcmds[AT_PASS_COL_ATTRS]))
{ {
AlterTableCreateToastTable(tab->relid, true); AlterTableCreateToastTable(tab->relid, true);
} }
...@@ -2192,7 +2194,7 @@ ATRewriteTables(List **wqueue) ...@@ -2192,7 +2194,7 @@ ATRewriteTables(List **wqueue)
*/ */
reindex_relation(tab->relid, false); reindex_relation(tab->relid, false);
} }
else else if (tab->constraints != NIL)
{ {
/* /*
* Test the current data within the table against new constraints * Test the current data within the table against new constraints
...@@ -2486,6 +2488,7 @@ ATGetQueueEntry(List **wqueue, Relation rel) ...@@ -2486,6 +2488,7 @@ ATGetQueueEntry(List **wqueue, Relation rel)
*/ */
tab = (AlteredTableInfo *) palloc0(sizeof(AlteredTableInfo)); tab = (AlteredTableInfo *) palloc0(sizeof(AlteredTableInfo));
tab->relid = relid; tab->relid = relid;
tab->relkind = rel->rd_rel->relkind;
tab->oldDesc = CreateTupleDescCopy(RelationGetDescr(rel)); tab->oldDesc = CreateTupleDescCopy(RelationGetDescr(rel));
*wqueue = lappend(*wqueue, tab); *wqueue = lappend(*wqueue, tab);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment