Skip to content

Commit c504513

Browse files
committed
Adjust many backend functions to return OID rather than void.
Extracted from a larger patch by Dimitri Fontaine. It is hoped that this will provide infrastructure for enriching the new event trigger functionality, but it seems possibly useful for other purposes as well.
1 parent 31bc839 commit c504513

39 files changed

+385
-276
lines changed

src/backend/catalog/pg_aggregate.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ static Oid lookup_agg_function(List *fnName, int nargs, Oid *input_types,
4242
/*
4343
* AggregateCreate
4444
*/
45-
void
45+
Oid
4646
AggregateCreate(const char *aggName,
4747
Oid aggNamespace,
4848
Oid *aggArgTypes,
@@ -316,6 +316,8 @@ AggregateCreate(const char *aggName,
316316
referenced.objectSubId = 0;
317317
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
318318
}
319+
320+
return procOid;
319321
}
320322

321323
/*

src/backend/catalog/pg_operator.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ OperatorShellMake(const char *operatorName,
326326
* Forward declaration is used only for this purpose, it is
327327
* not available to the user as it is for type definition.
328328
*/
329-
void
329+
Oid
330330
OperatorCreate(const char *operatorName,
331331
Oid operatorNamespace,
332332
Oid leftTypeId,
@@ -565,6 +565,8 @@ OperatorCreate(const char *operatorName,
565565

566566
if (OidIsValid(commutatorId) || OidIsValid(negatorId))
567567
OperatorUpd(operatorObjectId, commutatorId, negatorId);
568+
569+
return operatorObjectId;
568570
}
569571

570572
/*

src/backend/commands/aggregatecmds.c

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
* is specified by a BASETYPE element in the parameters. Otherwise,
4747
* "args" defines the input type(s).
4848
*/
49-
void
49+
Oid
5050
DefineAggregate(List *name, List *args, bool oldstyle, List *parameters)
5151
{
5252
char *aggName;
@@ -216,23 +216,23 @@ DefineAggregate(List *name, List *args, bool oldstyle, List *parameters)
216216
/*
217217
* Most of the argument-checking is done inside of AggregateCreate
218218
*/
219-
AggregateCreate(aggName, /* aggregate name */
220-
aggNamespace, /* namespace */
221-
aggArgTypes, /* input data type(s) */
222-
numArgs,
223-
transfuncName, /* step function name */
224-
finalfuncName, /* final function name */
225-
sortoperatorName, /* sort operator name */
226-
transTypeId, /* transition data type */
227-
initval); /* initial condition */
219+
return AggregateCreate(aggName, /* aggregate name */
220+
aggNamespace, /* namespace */
221+
aggArgTypes, /* input data type(s) */
222+
numArgs,
223+
transfuncName, /* step function name */
224+
finalfuncName, /* final function name */
225+
sortoperatorName, /* sort operator name */
226+
transTypeId, /* transition data type */
227+
initval); /* initial condition */
228228
}
229229

230230

231231
/*
232232
* RenameAggregate
233233
* Rename an aggregate.
234234
*/
235-
void
235+
Oid
236236
RenameAggregate(List *name, List *args, const char *newname)
237237
{
238238
Oid procOid;
@@ -286,4 +286,6 @@ RenameAggregate(List *name, List *args, const char *newname)
286286

287287
heap_close(rel, NoLock);
288288
heap_freetuple(tup);
289+
290+
return procOid;
289291
}

src/backend/commands/alter.c

Lines changed: 52 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -50,153 +50,126 @@
5050
* Executes an ALTER OBJECT / RENAME TO statement. Based on the object
5151
* type, the function appropriate to that type is executed.
5252
*/
53-
void
53+
Oid
5454
ExecRenameStmt(RenameStmt *stmt)
5555
{
5656
switch (stmt->renameType)
5757
{
5858
case OBJECT_AGGREGATE:
59-
RenameAggregate(stmt->object, stmt->objarg, stmt->newname);
60-
break;
59+
return RenameAggregate(stmt->object, stmt->objarg, stmt->newname);
6160

6261
case OBJECT_COLLATION:
63-
RenameCollation(stmt->object, stmt->newname);
64-
break;
62+
return RenameCollation(stmt->object, stmt->newname);
6563

6664
case OBJECT_CONSTRAINT:
67-
RenameConstraint(stmt);
68-
break;
65+
return RenameConstraint(stmt);
6966

7067
case OBJECT_CONVERSION:
71-
RenameConversion(stmt->object, stmt->newname);
72-
break;
68+
return RenameConversion(stmt->object, stmt->newname);
7369

7470
case OBJECT_DATABASE:
75-
RenameDatabase(stmt->subname, stmt->newname);
76-
break;
71+
return RenameDatabase(stmt->subname, stmt->newname);
7772

7873
case OBJECT_FDW:
79-
RenameForeignDataWrapper(stmt->subname, stmt->newname);
80-
break;
74+
return RenameForeignDataWrapper(stmt->subname, stmt->newname);
8175

8276
case OBJECT_FOREIGN_SERVER:
83-
RenameForeignServer(stmt->subname, stmt->newname);
84-
break;
77+
return RenameForeignServer(stmt->subname, stmt->newname);
8578

8679
case OBJECT_EVENT_TRIGGER:
87-
RenameEventTrigger(stmt->subname, stmt->newname);
88-
break;
80+
return RenameEventTrigger(stmt->subname, stmt->newname);
8981

9082
case OBJECT_FUNCTION:
91-
RenameFunction(stmt->object, stmt->objarg, stmt->newname);
92-
break;
83+
return RenameFunction(stmt->object, stmt->objarg, stmt->newname);
9384

9485
case OBJECT_LANGUAGE:
95-
RenameLanguage(stmt->subname, stmt->newname);
96-
break;
86+
return RenameLanguage(stmt->subname, stmt->newname);
9787

9888
case OBJECT_OPCLASS:
99-
RenameOpClass(stmt->object, stmt->subname, stmt->newname);
100-
break;
89+
return RenameOpClass(stmt->object, stmt->subname, stmt->newname);
10190

10291
case OBJECT_OPFAMILY:
103-
RenameOpFamily(stmt->object, stmt->subname, stmt->newname);
104-
break;
92+
return RenameOpFamily(stmt->object, stmt->subname, stmt->newname);
10593

10694
case OBJECT_ROLE:
107-
RenameRole(stmt->subname, stmt->newname);
108-
break;
95+
return RenameRole(stmt->subname, stmt->newname);
10996

11097
case OBJECT_SCHEMA:
111-
RenameSchema(stmt->subname, stmt->newname);
112-
break;
98+
return RenameSchema(stmt->subname, stmt->newname);
11399

114100
case OBJECT_TABLESPACE:
115-
RenameTableSpace(stmt->subname, stmt->newname);
116-
break;
101+
return RenameTableSpace(stmt->subname, stmt->newname);
117102

118103
case OBJECT_TABLE:
119104
case OBJECT_SEQUENCE:
120105
case OBJECT_VIEW:
121106
case OBJECT_INDEX:
122107
case OBJECT_FOREIGN_TABLE:
123-
RenameRelation(stmt);
124-
break;
108+
return RenameRelation(stmt);
125109

126110
case OBJECT_COLUMN:
127111
case OBJECT_ATTRIBUTE:
128-
renameatt(stmt);
129-
break;
112+
return renameatt(stmt);
130113

131114
case OBJECT_TRIGGER:
132-
renametrig(stmt);
133-
break;
115+
return renametrig(stmt);
134116

135117
case OBJECT_TSPARSER:
136-
RenameTSParser(stmt->object, stmt->newname);
137-
break;
118+
return RenameTSParser(stmt->object, stmt->newname);
138119

139120
case OBJECT_TSDICTIONARY:
140-
RenameTSDictionary(stmt->object, stmt->newname);
141-
break;
121+
return RenameTSDictionary(stmt->object, stmt->newname);
142122

143123
case OBJECT_TSTEMPLATE:
144-
RenameTSTemplate(stmt->object, stmt->newname);
145-
break;
124+
return RenameTSTemplate(stmt->object, stmt->newname);
146125

147126
case OBJECT_TSCONFIGURATION:
148-
RenameTSConfiguration(stmt->object, stmt->newname);
149-
break;
127+
return RenameTSConfiguration(stmt->object, stmt->newname);
150128

151129
case OBJECT_DOMAIN:
152130
case OBJECT_TYPE:
153-
RenameType(stmt);
154-
break;
131+
return RenameType(stmt);
155132

156133
default:
157134
elog(ERROR, "unrecognized rename stmt type: %d",
158135
(int) stmt->renameType);
136+
return InvalidOid; /* keep compiler happy */
159137
}
160138
}
161139

162140
/*
163141
* Executes an ALTER OBJECT / SET SCHEMA statement. Based on the object
164142
* type, the function appropriate to that type is executed.
165143
*/
166-
void
144+
Oid
167145
ExecAlterObjectSchemaStmt(AlterObjectSchemaStmt *stmt)
168146
{
169147
switch (stmt->objectType)
170148
{
171149
case OBJECT_AGGREGATE:
172-
AlterFunctionNamespace(stmt->object, stmt->objarg, true,
173-
stmt->newschema);
174-
break;
150+
return AlterFunctionNamespace(stmt->object, stmt->objarg, true,
151+
stmt->newschema);
175152

176153
case OBJECT_COLLATION:
177-
AlterCollationNamespace(stmt->object, stmt->newschema);
178-
break;
154+
return AlterCollationNamespace(stmt->object, stmt->newschema);
179155

180156
case OBJECT_EXTENSION:
181-
AlterExtensionNamespace(stmt->object, stmt->newschema);
182-
break;
157+
return AlterExtensionNamespace(stmt->object, stmt->newschema);
183158

184159
case OBJECT_FUNCTION:
185-
AlterFunctionNamespace(stmt->object, stmt->objarg, false,
186-
stmt->newschema);
187-
break;
160+
return AlterFunctionNamespace(stmt->object, stmt->objarg, false,
161+
stmt->newschema);
188162

189163
case OBJECT_SEQUENCE:
190164
case OBJECT_TABLE:
191165
case OBJECT_VIEW:
192166
case OBJECT_FOREIGN_TABLE:
193-
AlterTableNamespace(stmt);
194-
break;
167+
return AlterTableNamespace(stmt);
195168

196169
case OBJECT_TYPE:
197170
case OBJECT_DOMAIN:
198-
AlterTypeNamespace(stmt->object, stmt->newschema, stmt->objectType);
199-
break;
171+
return AlterTypeNamespace(stmt->object, stmt->newschema,
172+
stmt->objectType);
200173

201174
/* generic code path */
202175
case OBJECT_CONVERSION:
@@ -228,12 +201,15 @@ ExecAlterObjectSchemaStmt(AlterObjectSchemaStmt *stmt)
228201
AlterObjectNamespace_internal(catalog, address.objectId,
229202
nspOid);
230203
heap_close(catalog, RowExclusiveLock);
204+
205+
return address.objectId;
231206
}
232207
break;
233208

234209
default:
235210
elog(ERROR, "unrecognized AlterObjectSchemaStmt type: %d",
236211
(int) stmt->objectType);
212+
return InvalidOid; /* keep compiler happy */
237213
}
238214
}
239215

@@ -435,38 +411,35 @@ AlterObjectNamespace_internal(Relation rel, Oid objid, Oid nspOid)
435411
* Executes an ALTER OBJECT / OWNER TO statement. Based on the object
436412
* type, the function appropriate to that type is executed.
437413
*/
438-
void
414+
Oid
439415
ExecAlterOwnerStmt(AlterOwnerStmt *stmt)
440416
{
441417
Oid newowner = get_role_oid(stmt->newowner, false);
442418

443419
switch (stmt->objectType)
444420
{
445421
case OBJECT_DATABASE:
446-
AlterDatabaseOwner(strVal(linitial(stmt->object)), newowner);
447-
break;
422+
return AlterDatabaseOwner(strVal(linitial(stmt->object)), newowner);
448423

449424
case OBJECT_SCHEMA:
450-
AlterSchemaOwner(strVal(linitial(stmt->object)), newowner);
451-
break;
425+
return AlterSchemaOwner(strVal(linitial(stmt->object)), newowner);
452426

453427
case OBJECT_TYPE:
454428
case OBJECT_DOMAIN: /* same as TYPE */
455-
AlterTypeOwner(stmt->object, newowner, stmt->objectType);
429+
return AlterTypeOwner(stmt->object, newowner, stmt->objectType);
456430
break;
457431

458432
case OBJECT_FDW:
459-
AlterForeignDataWrapperOwner(strVal(linitial(stmt->object)),
460-
newowner);
461-
break;
433+
return AlterForeignDataWrapperOwner(strVal(linitial(stmt->object)),
434+
newowner);
462435

463436
case OBJECT_FOREIGN_SERVER:
464-
AlterForeignServerOwner(strVal(linitial(stmt->object)), newowner);
465-
break;
437+
return AlterForeignServerOwner(strVal(linitial(stmt->object)),
438+
newowner);
466439

467440
case OBJECT_EVENT_TRIGGER:
468-
AlterEventTriggerOwner(strVal(linitial(stmt->object)), newowner);
469-
break;
441+
return AlterEventTriggerOwner(strVal(linitial(stmt->object)),
442+
newowner);
470443

471444
/* Generic cases */
472445
case OBJECT_AGGREGATE:
@@ -508,12 +481,16 @@ ExecAlterOwnerStmt(AlterOwnerStmt *stmt)
508481

509482
AlterObjectOwner_internal(catalog, address.objectId, newowner);
510483
heap_close(catalog, RowExclusiveLock);
484+
485+
return address.objectId;
511486
}
512487
break;
513488

514489
default:
515490
elog(ERROR, "unrecognized AlterOwnerStmt type: %d",
516491
(int) stmt->objectType);
492+
493+
return InvalidOid; /* keep compiler happy */
517494
}
518495
}
519496

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy