]> granicus.if.org Git - postgresql/commitdiff
Fix a couple of oversights in new ALTER TABLE code that broke
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 8 May 2004 22:46:29 +0000 (22:46 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 8 May 2004 22:46:29 +0000 (22:46 +0000)
ALTER SET STATISTICS for functional indexes.

src/backend/commands/tablecmds.c

index 5adafd630ac0f109b5ded5fa98cd868d9bfcbead..bf308141facbff0dce1625d6d4a0e0ae337209d0 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * 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
 {
        /* Information saved before any work commences: */
        Oid                     relid;                  /* Relation to work on */
+       char            relkind;                /* Its relkind */
        TupleDesc       oldDesc;                /* Pre-modification tuple descriptor */
        /* Information saved by Phase 1 for Phase 2: */
        List       *subcmds[AT_NUM_PASSES];             /* Lists of AlterTableCmd */
@@ -2011,9 +2012,10 @@ ATRewriteCatalogs(List **wqueue)
        {
                AlteredTableInfo *tab = (AlteredTableInfo *) lfirst(ltab);
 
-               if (tab->subcmds[AT_PASS_ADD_COL] ||
-                       tab->subcmds[AT_PASS_ALTER_TYPE] ||
-                       tab->subcmds[AT_PASS_COL_ATTRS])
+               if (tab->relkind == RELKIND_RELATION &&
+                       (tab->subcmds[AT_PASS_ADD_COL] ||
+                        tab->subcmds[AT_PASS_ALTER_TYPE] ||
+                        tab->subcmds[AT_PASS_COL_ATTRS]))
                {
                        AlterTableCreateToastTable(tab->relid, true);
                }
@@ -2192,7 +2194,7 @@ ATRewriteTables(List **wqueue)
                         */
                        reindex_relation(tab->relid, false);
                }
-               else
+               else if (tab->constraints != NIL)
                {
                        /*
                         * Test the current data within the table against new constraints
@@ -2486,6 +2488,7 @@ ATGetQueueEntry(List **wqueue, Relation rel)
         */
        tab = (AlteredTableInfo *) palloc0(sizeof(AlteredTableInfo));
        tab->relid = relid;
+       tab->relkind = rel->rd_rel->relkind;
        tab->oldDesc = CreateTupleDescCopy(RelationGetDescr(rel));
 
        *wqueue = lappend(*wqueue, tab);