mirror of
https://github.com/postgres/postgres.git
synced 2025-06-16 06:01:02 +03:00
Fix a couple of oversights in new ALTER TABLE code that broke
ALTER SET STATISTICS for functional indexes.
This commit is contained in:
@ -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
|
|||||||
{
|
{
|
||||||
/* 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)
|
|||||||
{
|
{
|
||||||
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)
|
|||||||
*/
|
*/
|
||||||
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)
|
|||||||
*/
|
*/
|
||||||
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);
|
||||||
|
Reference in New Issue
Block a user