Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit6121aed

Browse files
committed
Fix oversight in recent ALTER TABLE improvements. We now support
ALTER TABLE tab ADD COLUMN col SERIAL, but we forgot to install thedependency between the column and the sequence, so the sequencewould not go away if you dropped the table later.
1 parentc9d327b commit6121aed

File tree

1 file changed

+26
-15
lines changed

1 file changed

+26
-15
lines changed

‎src/backend/commands/tablecmds.c

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.113 2004/06/1017:55:56 tgl Exp $
11+
* $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.114 2004/06/1018:25:02 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -199,6 +199,8 @@ static void ATPrepAddColumn(List **wqueue, Relation rel, bool recurse,
199199
staticvoidATExecAddColumn(AlteredTableInfo*tab,Relationrel,
200200
ColumnDef*colDef);
201201
staticvoidadd_column_datatype_dependency(Oidrelid,int32attnum,Oidtypid);
202+
staticvoidadd_column_support_dependency(Oidrelid,int32attnum,
203+
RangeVar*support);
202204
staticvoidATExecDropNotNull(Relationrel,constchar*colName);
203205
staticvoidATExecSetNotNull(AlteredTableInfo*tab,Relationrel,
204206
constchar*colName);
@@ -438,20 +440,9 @@ DefineRelation(CreateStmt *stmt, char relkind)
438440
rawDefaults=lappend(rawDefaults,rawEnt);
439441
}
440442

443+
/* Create dependency for supporting relation for this column */
441444
if (colDef->support!=NULL)
442-
{
443-
/* Create dependency for supporting relation for this column */
444-
ObjectAddresscolobject,
445-
suppobject;
446-
447-
colobject.classId=RelOid_pg_class;
448-
colobject.objectId=relationId;
449-
colobject.objectSubId=attnum;
450-
suppobject.classId=RelOid_pg_class;
451-
suppobject.objectId=RangeVarGetRelid(colDef->support, false);
452-
suppobject.objectSubId=0;
453-
recordDependencyOn(&suppobject,&colobject,DEPENDENCY_INTERNAL);
454-
}
445+
add_column_support_dependency(relationId,attnum,colDef->support);
455446
}
456447

457448
/*
@@ -2926,9 +2917,11 @@ ATExecAddColumn(AlteredTableInfo *tab, Relation rel,
29262917
}
29272918

29282919
/*
2929-
* Adddatatype dependency for the new column.
2920+
* Addneeded dependency entries for the new column.
29302921
*/
29312922
add_column_datatype_dependency(myrelid,i,attribute->atttypid);
2923+
if (colDef->support!=NULL)
2924+
add_column_support_dependency(myrelid,i,colDef->support);
29322925
}
29332926

29342927
/*
@@ -2949,6 +2942,24 @@ add_column_datatype_dependency(Oid relid, int32 attnum, Oid typid)
29492942
recordDependencyOn(&myself,&referenced,DEPENDENCY_NORMAL);
29502943
}
29512944

2945+
/*
2946+
* Install a dependency for a column's supporting relation (serial sequence).
2947+
*/
2948+
staticvoid
2949+
add_column_support_dependency(Oidrelid,int32attnum,RangeVar*support)
2950+
{
2951+
ObjectAddresscolobject,
2952+
suppobject;
2953+
2954+
colobject.classId=RelOid_pg_class;
2955+
colobject.objectId=relid;
2956+
colobject.objectSubId=attnum;
2957+
suppobject.classId=RelOid_pg_class;
2958+
suppobject.objectId=RangeVarGetRelid(support, false);
2959+
suppobject.objectSubId=0;
2960+
recordDependencyOn(&suppobject,&colobject,DEPENDENCY_INTERNAL);
2961+
}
2962+
29522963
/*
29532964
* ALTER TABLE ALTER COLUMN DROP NOT NULL
29542965
*/

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp