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

Commit21428e4

Browse files
author
Nikita Glukhov
committed
Add objectSubId parameter to deleteDependencyRecordsForClass()
1 parentea7c205 commit21428e4

File tree

7 files changed

+21
-8
lines changed

7 files changed

+21
-8
lines changed

‎src/backend/catalog/index.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1191,7 +1191,7 @@ index_constraint_create(Relation heapRelation,
11911191
* index into a UNIQUE or PRIMARY KEY constraint.
11921192
*/
11931193
if (remove_old_dependencies)
1194-
deleteDependencyRecordsForClass(RelationRelationId,indexRelationId,
1194+
deleteDependencyRecordsForClass(RelationRelationId,indexRelationId,0,
11951195
RelationRelationId,DEPENDENCY_AUTO);
11961196

11971197
/*

‎src/backend/catalog/pg_depend.c

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -238,14 +238,15 @@ deleteDependencyRecordsFor(Oid classId, Oid objectId,
238238
* extension membership).
239239
*/
240240
long
241-
deleteDependencyRecordsForClass(OidclassId,OidobjectId,
241+
deleteDependencyRecordsForClass(OidclassId,OidobjectId,int32objectSubId,
242242
OidrefclassId,chardeptype)
243243
{
244244
longcount=0;
245245
RelationdepRel;
246-
ScanKeyDatakey[2];
246+
ScanKeyDatakey[3];
247247
SysScanDescscan;
248248
HeapTupletup;
249+
intnkeys;
249250

250251
depRel=heap_open(DependRelationId,RowExclusiveLock);
251252

@@ -257,9 +258,19 @@ deleteDependencyRecordsForClass(Oid classId, Oid objectId,
257258
Anum_pg_depend_objid,
258259
BTEqualStrategyNumber,F_OIDEQ,
259260
ObjectIdGetDatum(objectId));
261+
if (objectSubId!=0)
262+
{
263+
ScanKeyInit(&key[2],
264+
Anum_pg_depend_objsubid,
265+
BTEqualStrategyNumber,F_INT4EQ,
266+
Int32GetDatum(objectSubId));
267+
nkeys=3;
268+
}
269+
else
270+
nkeys=2;
260271

261272
scan=systable_beginscan(depRel,DependDependerIndexId, true,
262-
NULL,2,key);
273+
NULL,nkeys,key);
263274

264275
while (HeapTupleIsValid(tup=systable_getnext(scan)))
265276
{

‎src/backend/commands/extension.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3115,7 +3115,7 @@ ApplyExtensionUpdates(Oid extensionOid,
31153115
/*
31163116
* Remove and recreate dependencies on prerequisite extensions
31173117
*/
3118-
deleteDependencyRecordsForClass(ExtensionRelationId,extensionOid,
3118+
deleteDependencyRecordsForClass(ExtensionRelationId,extensionOid,0,
31193119
ExtensionRelationId,
31203120
DEPENDENCY_NORMAL);
31213121

@@ -3257,7 +3257,7 @@ ExecAlterExtensionContentsStmt(AlterExtensionContentsStmt *stmt,
32573257
/*
32583258
* OK, drop the dependency.
32593259
*/
3260-
if (deleteDependencyRecordsForClass(object.classId,object.objectId,
3260+
if (deleteDependencyRecordsForClass(object.classId,object.objectId,0,
32613261
ExtensionRelationId,
32623262
DEPENDENCY_EXTENSION)!=1)
32633263
elog(ERROR,"unexpected number of extension dependency records");

‎src/backend/commands/foreigncmds.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -800,6 +800,7 @@ AlterForeignDataWrapper(AlterFdwStmt *stmt)
800800
*/
801801
deleteDependencyRecordsForClass(ForeignDataWrapperRelationId,
802802
fdwId,
803+
0,
803804
ProcedureRelationId,
804805
DEPENDENCY_NORMAL);
805806

‎src/backend/commands/sequence.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1727,7 +1727,7 @@ process_owned_by(Relation seqrel, List *owned_by, bool for_identity)
17271727
* dependencies for the sequence, then optionally add a new one.
17281728
*/
17291729
deleteDependencyRecordsForClass(RelationRelationId,RelationGetRelid(seqrel),
1730-
RelationRelationId,deptype);
1730+
0,RelationRelationId,deptype);
17311731

17321732
if (tablerel)
17331733
{

‎src/backend/commands/tablecmds.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6129,7 +6129,7 @@ ATExecDropIdentity(Relation rel, const char *colName, bool missing_ok, LOCKMODE
61296129

61306130
/* drop the internal sequence */
61316131
seqid=getOwnedSequence(RelationGetRelid(rel),attnum);
6132-
deleteDependencyRecordsForClass(RelationRelationId,seqid,
6132+
deleteDependencyRecordsForClass(RelationRelationId,seqid,0,
61336133
RelationRelationId,DEPENDENCY_INTERNAL);
61346134
CommandCounterIncrement();
61356135
seqaddress.classId=RelationRelationId;

‎src/include/catalog/dependency.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,7 @@ extern long deleteDependencyRecordsFor(Oid classId, Oid objectId,
231231
boolskipExtensionDeps);
232232

233233
externlongdeleteDependencyRecordsForClass(OidclassId,OidobjectId,
234+
int32objectSubId,
234235
OidrefclassId,chardeptype);
235236

236237
externlongchangeDependencyFor(OidclassId,OidobjectId,

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp