diff --git a/src/backend/commands/comment.c b/src/backend/commands/comment.c index 267694f5b9..afada5d6e4 100644 --- a/src/backend/commands/comment.c +++ b/src/backend/commands/comment.c @@ -36,7 +36,7 @@ * This routine is used to add the associated comment into * pg_description for the object specified by the given SQL command. */ -void +Oid CommentObject(CommentStmt *stmt) { ObjectAddress address; @@ -60,7 +60,7 @@ CommentObject(CommentStmt *stmt) ereport(WARNING, (errcode(ERRCODE_UNDEFINED_DATABASE), errmsg("database \"%s\" does not exist", database))); - return; + return InvalidOid; } } @@ -123,6 +123,8 @@ CommentObject(CommentStmt *stmt) */ if (relation != NULL) relation_close(relation, NoLock); + + return address.objectId; } /* diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c index abd82cf9f5..31a02884b9 100644 --- a/src/backend/commands/copy.c +++ b/src/backend/commands/copy.c @@ -743,14 +743,14 @@ CopyLoadRawBuf(CopyState cstate) * Do not allow the copy if user doesn't have proper permission to access * the table or the specifically requested columns. */ -uint64 -DoCopy(const CopyStmt *stmt, const char *queryString) +Oid +DoCopy(const CopyStmt *stmt, const char *queryString, uint64 *processed) { CopyState cstate; bool is_from = stmt->is_from; bool pipe = (stmt->filename == NULL); Relation rel; - uint64 processed; + Oid relid; /* Disallow file COPY except to superusers. */ if (!pipe && !superuser()) @@ -774,6 +774,8 @@ DoCopy(const CopyStmt *stmt, const char *queryString) rel = heap_openrv(stmt->relation, (is_from ? RowExclusiveLock : AccessShareLock)); + relid = RelationGetRelid(rel); + rte = makeNode(RangeTblEntry); rte->rtekind = RTE_RELATION; rte->relid = RelationGetRelid(rel); @@ -811,14 +813,14 @@ DoCopy(const CopyStmt *stmt, const char *queryString) cstate = BeginCopyFrom(rel, stmt->filename, stmt->attlist, stmt->options); - processed = CopyFrom(cstate); /* copy from file to database */ + *processed = CopyFrom(cstate); /* copy from file to database */ EndCopyFrom(cstate); } else { cstate = BeginCopyTo(rel, stmt->query, queryString, stmt->filename, stmt->attlist, stmt->options); - processed = DoCopyTo(cstate); /* copy from database to file */ + *processed = DoCopyTo(cstate); /* copy from database to file */ EndCopyTo(cstate); } @@ -830,7 +832,7 @@ DoCopy(const CopyStmt *stmt, const char *queryString) if (rel != NULL) heap_close(rel, (is_from ? NoLock : AccessShareLock)); - return processed; + return relid; } /* diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c index c390575f42..2b39a99c2b 100644 --- a/src/backend/commands/dbcommands.c +++ b/src/backend/commands/dbcommands.c @@ -90,7 +90,7 @@ static int errdetail_busy_db(int notherbackends, int npreparedxacts); /* * CREATE DATABASE */ -void +Oid createdb(const CreatedbStmt *stmt) { HeapScanDesc scan; @@ -655,6 +655,8 @@ createdb(const CreatedbStmt *stmt) } PG_END_ENSURE_ERROR_CLEANUP(createdb_failure_callback, PointerGetDatum(&fparms)); + + return dboid; } /* @@ -1301,10 +1303,11 @@ movedb_failure_callback(int code, Datum arg) /* * ALTER DATABASE name ... */ -void +Oid AlterDatabase(AlterDatabaseStmt *stmt, bool isTopLevel) { Relation rel; + Oid dboid; HeapTuple tuple, newtuple; ScanKeyData scankey; @@ -1350,7 +1353,7 @@ AlterDatabase(AlterDatabaseStmt *stmt, bool isTopLevel) /* this case isn't allowed within a transaction block */ PreventTransactionChain(isTopLevel, "ALTER DATABASE SET TABLESPACE"); movedb(stmt->dbname, strVal(dtablespace->arg)); - return; + return InvalidOid; } if (dconnlimit) @@ -1380,6 +1383,8 @@ AlterDatabase(AlterDatabaseStmt *stmt, bool isTopLevel) (errcode(ERRCODE_UNDEFINED_DATABASE), errmsg("database \"%s\" does not exist", stmt->dbname))); + dboid = HeapTupleGetOid(tuple); + if (!pg_database_ownercheck(HeapTupleGetOid(tuple), GetUserId())) aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_DATABASE, stmt->dbname); @@ -1408,13 +1413,15 @@ AlterDatabase(AlterDatabaseStmt *stmt, bool isTopLevel) /* Close pg_database, but keep lock till commit */ heap_close(rel, NoLock); + + return dboid; } /* * ALTER DATABASE name SET ... */ -void +Oid AlterDatabaseSet(AlterDatabaseSetStmt *stmt) { Oid datid = get_database_oid(stmt->dbname, false); @@ -1432,6 +1439,8 @@ AlterDatabaseSet(AlterDatabaseSetStmt *stmt) AlterSetting(datid, InvalidOid, stmt->setstmt); UnlockSharedObject(DatabaseRelationId, datid, 0, AccessShareLock); + + return datid; } diff --git a/src/backend/commands/event_trigger.c b/src/backend/commands/event_trigger.c index 722c3cf118..e23cacd067 100644 --- a/src/backend/commands/event_trigger.c +++ b/src/backend/commands/event_trigger.c @@ -94,15 +94,15 @@ static void AlterEventTriggerOwner_internal(Relation rel, static event_trigger_command_tag_check_result check_ddl_tag(const char *tag); static void error_duplicate_filter_variable(const char *defname); static Datum filter_list_to_array(List *filterlist); -static void insert_event_trigger_tuple(char *trigname, char *eventname, - Oid evtOwner, Oid funcoid, List *tags); +static Oid insert_event_trigger_tuple(char *trigname, char *eventname, + Oid evtOwner, Oid funcoid, List *tags); static void validate_ddl_tags(const char *filtervar, List *taglist); static void EventTriggerInvoke(List *fn_oid_list, EventTriggerData *trigdata); /* * Create an event trigger. */ -void +Oid CreateEventTrigger(CreateEventTrigStmt *stmt) { HeapTuple tuple; @@ -173,8 +173,8 @@ CreateEventTrigger(CreateEventTrigStmt *stmt) NameListToString(stmt->funcname)))); /* Insert catalog entries. */ - insert_event_trigger_tuple(stmt->trigname, stmt->eventname, - evtowner, funcoid, tags); + return insert_event_trigger_tuple(stmt->trigname, stmt->eventname, + evtowner, funcoid, tags); } /* @@ -260,7 +260,7 @@ error_duplicate_filter_variable(const char *defname) /* * Insert the new pg_event_trigger row and record dependencies. */ -static void +static Oid insert_event_trigger_tuple(char *trigname, char *eventname, Oid evtOwner, Oid funcoid, List *taglist) { @@ -312,6 +312,8 @@ insert_event_trigger_tuple(char *trigname, char *eventname, Oid evtOwner, /* Close pg_event_trigger. */ heap_close(tgrel, RowExclusiveLock); + + return trigoid; } /* @@ -376,11 +378,12 @@ RemoveEventTriggerById(Oid trigOid) /* * ALTER EVENT TRIGGER foo ENABLE|DISABLE|ENABLE ALWAYS|REPLICA */ -void +Oid AlterEventTrigger(AlterEventTrigStmt *stmt) { Relation tgrel; HeapTuple tup; + Oid trigoid; Form_pg_event_trigger evtForm; char tgenabled = stmt->tgenabled; @@ -393,7 +396,10 @@ AlterEventTrigger(AlterEventTrigStmt *stmt) (errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("event trigger \"%s\" does not exist", stmt->trigname))); - if (!pg_event_trigger_ownercheck(HeapTupleGetOid(tup), GetUserId())) + + trigoid = HeapTupleGetOid(tup); + + if (!pg_event_trigger_ownercheck(trigoid, GetUserId())) aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_EVENT_TRIGGER, stmt->trigname); @@ -407,6 +413,8 @@ AlterEventTrigger(AlterEventTrigStmt *stmt) /* clean up */ heap_freetuple(tup); heap_close(tgrel, RowExclusiveLock); + + return trigoid; } diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c index ad072a5c7b..e5560516f0 100644 --- a/src/backend/commands/extension.c +++ b/src/backend/commands/extension.c @@ -2580,7 +2580,7 @@ AlterExtensionNamespace(List *names, const char *newschema) /* * Execute ALTER EXTENSION UPDATE */ -void +Oid ExecAlterExtensionStmt(AlterExtensionStmt *stmt) { DefElem *d_new_version = NULL; @@ -2697,7 +2697,7 @@ ExecAlterExtensionStmt(AlterExtensionStmt *stmt) ereport(NOTICE, (errmsg("version \"%s\" of extension \"%s\" is already installed", versionName, stmt->extname))); - return; + return InvalidOid; } /* @@ -2713,6 +2713,8 @@ ExecAlterExtensionStmt(AlterExtensionStmt *stmt) */ ApplyExtensionUpdates(extensionOid, control, oldVersionName, updateVersions); + + return extensionOid; } /* @@ -2875,7 +2877,7 @@ ApplyExtensionUpdates(Oid extensionOid, /* * Execute ALTER EXTENSION ADD/DROP */ -void +Oid ExecAlterExtensionContentsStmt(AlterExtensionContentsStmt *stmt) { ObjectAddress extension; @@ -2976,4 +2978,6 @@ ExecAlterExtensionContentsStmt(AlterExtensionContentsStmt *stmt) */ if (relation != NULL) relation_close(relation, NoLock); + + return extension.objectId; } diff --git a/src/backend/commands/foreigncmds.c b/src/backend/commands/foreigncmds.c index af833b886b..5a504a29e5 100644 --- a/src/backend/commands/foreigncmds.c +++ b/src/backend/commands/foreigncmds.c @@ -583,7 +583,7 @@ parse_func_options(List *func_options, /* * Create a foreign-data wrapper */ -void +Oid CreateForeignDataWrapper(CreateFdwStmt *stmt) { Relation rel; @@ -690,13 +690,15 @@ CreateForeignDataWrapper(CreateFdwStmt *stmt) ForeignDataWrapperRelationId, fdwId, 0, NULL); heap_close(rel, RowExclusiveLock); + + return fdwId; } /* * Alter foreign-data wrapper */ -void +Oid AlterForeignDataWrapper(AlterFdwStmt *stmt) { Relation rel; @@ -851,6 +853,8 @@ AlterForeignDataWrapper(AlterFdwStmt *stmt) } heap_close(rel, RowExclusiveLock); + + return fdwId; } @@ -881,7 +885,7 @@ RemoveForeignDataWrapperById(Oid fdwId) /* * Create a foreign server */ -void +Oid CreateForeignServer(CreateForeignServerStmt *stmt) { Relation rel; @@ -987,13 +991,15 @@ CreateForeignServer(CreateForeignServerStmt *stmt) ForeignServerRelationId, srvId, 0, NULL); heap_close(rel, RowExclusiveLock); + + return srvId; } /* * Alter foreign server */ -void +Oid AlterForeignServer(AlterForeignServerStmt *stmt) { Relation rel; @@ -1080,6 +1086,8 @@ AlterForeignServer(AlterForeignServerStmt *stmt) heap_freetuple(tp); heap_close(rel, RowExclusiveLock); + + return srvId; } @@ -1137,7 +1145,7 @@ user_mapping_ddl_aclcheck(Oid umuserid, Oid serverid, const char *servername) /* * Create user mapping */ -void +Oid CreateUserMapping(CreateUserMappingStmt *stmt) { Relation rel; @@ -1228,13 +1236,15 @@ CreateUserMapping(CreateUserMappingStmt *stmt) UserMappingRelationId, umId, 0, NULL); heap_close(rel, RowExclusiveLock); + + return umId; } /* * Alter user mapping */ -void +Oid AlterUserMapping(AlterUserMappingStmt *stmt) { Relation rel; @@ -1314,13 +1324,15 @@ AlterUserMapping(AlterUserMappingStmt *stmt) heap_freetuple(tp); heap_close(rel, RowExclusiveLock); + + return umId; } /* * Drop user mapping */ -void +Oid RemoveUserMapping(DropUserMappingStmt *stmt) { ObjectAddress object; @@ -1338,7 +1350,7 @@ RemoveUserMapping(DropUserMappingStmt *stmt) * leave. */ elog(NOTICE, "role \"%s\" does not exist, skipping", stmt->username); - return; + return InvalidOid; } if (!srv) @@ -1350,7 +1362,7 @@ RemoveUserMapping(DropUserMappingStmt *stmt) stmt->servername))); /* IF EXISTS, just note it */ ereport(NOTICE, (errmsg("server does not exist, skipping"))); - return; + return InvalidOid; } umId = GetSysCacheOid2(USERMAPPINGUSERSERVER, @@ -1369,7 +1381,7 @@ RemoveUserMapping(DropUserMappingStmt *stmt) ereport(NOTICE, (errmsg("user mapping \"%s\" does not exist for the server, skipping", MappingUserName(useId)))); - return; + return InvalidOid; } user_mapping_ddl_aclcheck(useId, srv->serverid, srv->servername); @@ -1382,6 +1394,8 @@ RemoveUserMapping(DropUserMappingStmt *stmt) object.objectSubId = 0; performDeletion(&object, DROP_CASCADE, 0); + + return umId; } diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c index 2c36ce0e0f..fe63a1205a 100644 --- a/src/backend/commands/functioncmds.c +++ b/src/backend/commands/functioncmds.c @@ -1111,7 +1111,7 @@ RenameFunction(List *name, List *argtypes, const char *newname) * RENAME and OWNER clauses, which are handled as part of the generic * ALTER framework). */ -void +Oid AlterFunction(AlterFunctionStmt *stmt) { HeapTuple tup; @@ -1241,6 +1241,8 @@ AlterFunction(AlterFunctionStmt *stmt) heap_close(rel, NoLock); heap_freetuple(tup); + + return funcOid; } /* @@ -1318,7 +1320,7 @@ SetFunctionArgType(Oid funcOid, int argIndex, Oid newArgType) /* * CREATE CAST */ -void +Oid CreateCast(CreateCastStmt *stmt) { Oid sourcetypeid; @@ -1632,6 +1634,8 @@ CreateCast(CreateCastStmt *stmt) heap_freetuple(tuple); heap_close(relation, RowExclusiveLock); + + return castid; } /* diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c index 75f9ff19cc..1231b84c37 100644 --- a/src/backend/commands/indexcmds.c +++ b/src/backend/commands/indexcmds.c @@ -1671,7 +1671,7 @@ ChooseIndexColumnNames(List *indexElems) * ReindexIndex * Recreate a specific index. */ -void +Oid ReindexIndex(RangeVar *indexRelation) { Oid indOid; @@ -1684,6 +1684,8 @@ ReindexIndex(RangeVar *indexRelation) (void *) &heapOid); reindex_index(indOid, false); + + return indOid; } /* @@ -1749,7 +1751,7 @@ RangeVarCallbackForReindexIndex(const RangeVar *relation, * ReindexTable * Recreate all indexes of a table (and of its toast table, if any) */ -void +Oid ReindexTable(RangeVar *relation) { Oid heapOid; @@ -1762,6 +1764,8 @@ ReindexTable(RangeVar *relation) ereport(NOTICE, (errmsg("table \"%s\" has no indexes", relation->relname))); + + return heapOid; } /* @@ -1772,7 +1776,7 @@ ReindexTable(RangeVar *relation) * separate transaction, so we can release the lock on it right away. * That means this must not be called within a user transaction block! */ -void +Oid ReindexDatabase(const char *databaseName, bool do_system, bool do_user) { Relation relationRelation; @@ -1882,4 +1886,6 @@ ReindexDatabase(const char *databaseName, bool do_system, bool do_user) StartTransactionCommand(); MemoryContextDelete(private_context); + + return MyDatabaseId; } diff --git a/src/backend/commands/opclasscmds.c b/src/backend/commands/opclasscmds.c index b85f1cb640..545f5c8eb3 100644 --- a/src/backend/commands/opclasscmds.c +++ b/src/backend/commands/opclasscmds.c @@ -321,7 +321,7 @@ CreateOpFamily(char *amname, char *opfname, Oid namespaceoid, Oid amoid) * DefineOpClass * Define a new index operator class. */ -void +Oid DefineOpClass(CreateOpClassStmt *stmt) { char *opcname; /* name of opclass we're creating */ @@ -714,6 +714,8 @@ DefineOpClass(CreateOpClassStmt *stmt) OperatorClassRelationId, opclassoid, 0, NULL); heap_close(rel, RowExclusiveLock); + + return opclassoid; } @@ -721,7 +723,7 @@ DefineOpClass(CreateOpClassStmt *stmt) * DefineOpFamily * Define a new index operator family. */ -void +Oid DefineOpFamily(CreateOpFamilyStmt *stmt) { char *opfname; /* name of opfamily we're creating */ @@ -754,7 +756,7 @@ DefineOpFamily(CreateOpFamilyStmt *stmt) errmsg("must be superuser to create an operator family"))); /* Insert pg_opfamily catalog entry */ - (void) CreateOpFamily(stmt->amname, opfname, namespaceoid, amoid); + return CreateOpFamily(stmt->amname, opfname, namespaceoid, amoid); } @@ -766,7 +768,7 @@ DefineOpFamily(CreateOpFamilyStmt *stmt) * other commands called ALTER OPERATOR FAMILY exist, but go through * different code paths. */ -void +Oid AlterOpFamily(AlterOpFamilyStmt *stmt) { Oid amoid, /* our AM's oid */ @@ -820,6 +822,8 @@ AlterOpFamily(AlterOpFamilyStmt *stmt) AlterOpFamilyAdd(stmt->opfamilyname, amoid, opfamilyoid, maxOpNumber, maxProcNumber, stmt->items); + + return opfamilyoid; } /* diff --git a/src/backend/commands/proclang.c b/src/backend/commands/proclang.c index 93283b1a84..d34ef7de4d 100644 --- a/src/backend/commands/proclang.c +++ b/src/backend/commands/proclang.c @@ -51,16 +51,16 @@ typedef struct char *tmpllibrary; /* path of shared library */ } PLTemplate; -static void create_proc_lang(const char *languageName, bool replace, - Oid languageOwner, Oid handlerOid, Oid inlineOid, - Oid valOid, bool trusted); +static Oid create_proc_lang(const char *languageName, bool replace, + Oid languageOwner, Oid handlerOid, Oid inlineOid, + Oid valOid, bool trusted); static PLTemplate *find_language_template(const char *languageName); /* --------------------------------------------------------------------- * CREATE PROCEDURAL LANGUAGE * --------------------------------------------------------------------- */ -void +Oid CreateProceduralLanguage(CreatePLangStmt *stmt) { PLTemplate *pltemplate; @@ -225,9 +225,9 @@ CreateProceduralLanguage(CreatePLangStmt *stmt) valOid = InvalidOid; /* ok, create it */ - create_proc_lang(stmt->plname, stmt->replace, GetUserId(), - handlerOid, inlineOid, - valOid, pltemplate->tmpltrusted); + return create_proc_lang(stmt->plname, stmt->replace, GetUserId(), + handlerOid, inlineOid, + valOid, pltemplate->tmpltrusted); } else { @@ -300,16 +300,16 @@ CreateProceduralLanguage(CreatePLangStmt *stmt) valOid = InvalidOid; /* ok, create it */ - create_proc_lang(stmt->plname, stmt->replace, GetUserId(), - handlerOid, inlineOid, - valOid, stmt->pltrusted); + return create_proc_lang(stmt->plname, stmt->replace, GetUserId(), + handlerOid, inlineOid, + valOid, stmt->pltrusted); } } /* * Guts of language creation. */ -static void +static Oid create_proc_lang(const char *languageName, bool replace, Oid languageOwner, Oid handlerOid, Oid inlineOid, Oid valOid, bool trusted) @@ -433,6 +433,8 @@ create_proc_lang(const char *languageName, bool replace, LanguageRelationId, myself.objectId, 0, NULL); heap_close(rel, RowExclusiveLock); + + return myself.objectId; } /* diff --git a/src/backend/commands/seclabel.c b/src/backend/commands/seclabel.c index 91f41a1cd7..cdb2e88f26 100644 --- a/src/backend/commands/seclabel.c +++ b/src/backend/commands/seclabel.c @@ -38,7 +38,7 @@ static List *label_provider_list = NIL; * * Apply a security label to a database object. */ -void +Oid ExecSecLabelStmt(SecLabelStmt *stmt) { LabelProvider *provider = NULL; @@ -131,6 +131,8 @@ ExecSecLabelStmt(SecLabelStmt *stmt) */ if (relation != NULL) relation_close(relation, NoLock); + + return address.objectId; } /* diff --git a/src/backend/commands/tablespace.c b/src/backend/commands/tablespace.c index 2c19db31e0..c5d13a5854 100644 --- a/src/backend/commands/tablespace.c +++ b/src/backend/commands/tablespace.c @@ -222,7 +222,7 @@ TablespaceCreateDbspace(Oid spcNode, Oid dbNode, bool isRedo) * since we're determining the system layout and, anyway, we probably have * root if we're doing this kind of activity */ -void +Oid CreateTableSpace(CreateTableSpaceStmt *stmt) { #ifdef HAVE_SYMLINK @@ -371,6 +371,8 @@ CreateTableSpace(CreateTableSpaceStmt *stmt) (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("tablespaces are not supported on this platform"))); #endif /* HAVE_SYMLINK */ + + return tablespaceoid; } /* @@ -890,13 +892,14 @@ RenameTableSpace(const char *oldname, const char *newname) /* * Alter table space options */ -void +Oid AlterTableSpaceOptions(AlterTableSpaceOptionsStmt *stmt) { Relation rel; ScanKeyData entry[1]; HeapScanDesc scandesc; HeapTuple tup; + Oid tablespaceoid; Datum datum; Datum newOptions; Datum repl_val[Natts_pg_tablespace]; @@ -920,6 +923,8 @@ AlterTableSpaceOptions(AlterTableSpaceOptionsStmt *stmt) errmsg("tablespace \"%s\" does not exist", stmt->tablespacename))); + tablespaceoid = HeapTupleGetOid(tup); + /* Must be owner of the existing object */ if (!pg_tablespace_ownercheck(HeapTupleGetOid(tup), GetUserId())) aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_TABLESPACE, @@ -952,6 +957,8 @@ AlterTableSpaceOptions(AlterTableSpaceOptionsStmt *stmt) /* Conclude heap scan. */ heap_endscan(scandesc); heap_close(rel, NoLock); + + return tablespaceoid; } /* diff --git a/src/backend/commands/tsearchcmds.c b/src/backend/commands/tsearchcmds.c index b922c6ed47..61eda19ecb 100644 --- a/src/backend/commands/tsearchcmds.c +++ b/src/backend/commands/tsearchcmds.c @@ -614,7 +614,7 @@ RemoveTSDictionaryById(Oid dictId) /* * ALTER TEXT SEARCH DICTIONARY */ -void +Oid AlterTSDictionary(AlterTSDictionaryStmt *stmt) { HeapTuple tup, @@ -722,6 +722,8 @@ AlterTSDictionary(AlterTSDictionaryStmt *stmt) ReleaseSysCache(tup); heap_close(rel, RowExclusiveLock); + + return dictId; } /* ---------------------- TS Template commands -----------------------*/ @@ -1349,10 +1351,11 @@ RemoveTSConfigurationById(Oid cfgId) /* * ALTER TEXT SEARCH CONFIGURATION - main entry point */ -void +Oid AlterTSConfiguration(AlterTSConfigurationStmt *stmt) { HeapTuple tup; + Oid cfgId; Relation relMap; /* Find the configuration */ @@ -1363,6 +1366,8 @@ AlterTSConfiguration(AlterTSConfigurationStmt *stmt) errmsg("text search configuration \"%s\" does not exist", NameListToString(stmt->cfgname)))); + cfgId = HeapTupleGetOid(tup); + /* must be owner */ if (!pg_ts_config_ownercheck(HeapTupleGetOid(tup), GetUserId())) aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_TSCONFIGURATION, @@ -1382,6 +1387,8 @@ AlterTSConfiguration(AlterTSConfigurationStmt *stmt) heap_close(relMap, RowExclusiveLock); ReleaseSysCache(tup); + + return cfgId; } /* diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c index 6f99f38f11..aca670095b 100644 --- a/src/backend/commands/typecmds.c +++ b/src/backend/commands/typecmds.c @@ -1053,7 +1053,7 @@ DefineDomain(CreateDomainStmt *stmt) * DefineEnum * Registers a new enum. */ -void +Oid DefineEnum(CreateEnumStmt *stmt) { char *enumName; @@ -1166,13 +1166,15 @@ DefineEnum(CreateEnumStmt *stmt) InvalidOid); /* type's collation */ pfree(enumArrayName); + + return enumTypeOid; } /* * AlterEnum * Adds a new label to an existing enum. */ -void +Oid AlterEnum(AlterEnumStmt *stmt, bool isTopLevel) { Oid enum_type_oid; @@ -1215,6 +1217,8 @@ AlterEnum(AlterEnumStmt *stmt, bool isTopLevel) stmt->skipIfExists); ReleaseSysCache(tup); + + return enum_type_oid; } @@ -1246,7 +1250,7 @@ checkEnumOwner(HeapTuple tup) * DefineRange * Registers a new range type. */ -void +Oid DefineRange(CreateRangeStmt *stmt) { char *typeName; @@ -1498,6 +1502,8 @@ DefineRange(CreateRangeStmt *stmt) /* And create the constructor functions for this range type */ makeRangeConstructors(typeName, typeNamespace, typoid, rangeSubtype); + + return typoid; } /* @@ -2064,7 +2070,7 @@ DefineCompositeType(RangeVar *typevar, List *coldeflist) * * Routine implementing ALTER DOMAIN SET/DROP DEFAULT statements. */ -void +Oid AlterDomainDefault(List *names, Node *defaultRaw) { TypeName *typename; @@ -2191,6 +2197,8 @@ AlterDomainDefault(List *names, Node *defaultRaw) /* Clean up */ heap_close(rel, NoLock); heap_freetuple(newtuple); + + return domainoid; } /* @@ -2198,7 +2206,7 @@ AlterDomainDefault(List *names, Node *defaultRaw) * * Routine implementing ALTER DOMAIN SET/DROP NOT NULL statements. */ -void +Oid AlterDomainNotNull(List *names, bool notNull) { TypeName *typename; @@ -2226,7 +2234,7 @@ AlterDomainNotNull(List *names, bool notNull) if (typTup->typnotnull == notNull) { heap_close(typrel, RowExclusiveLock); - return; + return InvalidOid; } /* Adding a NOT NULL constraint requires checking existing columns */ @@ -2287,6 +2295,8 @@ AlterDomainNotNull(List *names, bool notNull) /* Clean up */ heap_freetuple(tup); heap_close(typrel, RowExclusiveLock); + + return domainoid; } /* @@ -2294,7 +2304,7 @@ AlterDomainNotNull(List *names, bool notNull) * * Implements the ALTER DOMAIN DROP CONSTRAINT statement */ -void +Oid AlterDomainDropConstraint(List *names, const char *constrName, DropBehavior behavior, bool missing_ok) { @@ -2371,6 +2381,8 @@ AlterDomainDropConstraint(List *names, const char *constrName, (errmsg("constraint \"%s\" of domain \"%s\" does not exist, skipping", constrName, TypeNameToString(typename)))); } + + return domainoid; } /* @@ -2378,7 +2390,7 @@ AlterDomainDropConstraint(List *names, const char *constrName, * * Implements the ALTER DOMAIN .. ADD CONSTRAINT statement. */ -void +Oid AlterDomainAddConstraint(List *names, Node *newConstraint) { TypeName *typename; @@ -2474,6 +2486,8 @@ AlterDomainAddConstraint(List *names, Node *newConstraint) /* Clean up */ heap_close(typrel, RowExclusiveLock); + + return domainoid; } /* @@ -2481,7 +2495,7 @@ AlterDomainAddConstraint(List *names, Node *newConstraint) * * Implements the ALTER DOMAIN .. VALIDATE CONSTRAINT statement. */ -void +Oid AlterDomainValidateConstraint(List *names, char *constrName) { TypeName *typename; @@ -2573,6 +2587,8 @@ AlterDomainValidateConstraint(List *names, char *constrName) heap_close(conrel, RowExclusiveLock); ReleaseSysCache(tup); + + return domainoid; } static void diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c index 569385cf23..6cf40cc081 100644 --- a/src/backend/commands/user.c +++ b/src/backend/commands/user.c @@ -67,7 +67,7 @@ have_createrole_privilege(void) /* * CREATE ROLE */ -void +Oid CreateRole(CreateRoleStmt *stmt) { Relation pg_authid_rel; @@ -433,6 +433,8 @@ CreateRole(CreateRoleStmt *stmt) * Close pg_authid, but keep lock till commit. */ heap_close(pg_authid_rel, NoLock); + + return roleid; } @@ -443,7 +445,7 @@ CreateRole(CreateRoleStmt *stmt) * backwards-compatible ALTER GROUP syntax. Although it will work to say * "ALTER ROLE role ROLE rolenames", we don't document it. */ -void +Oid AlterRole(AlterRoleStmt *stmt) { Datum new_record[Natts_pg_authid]; @@ -799,17 +801,20 @@ AlterRole(AlterRoleStmt *stmt) * Close pg_authid, but keep lock till commit. */ heap_close(pg_authid_rel, NoLock); + + return roleid; } /* * ALTER ROLE ... SET */ -void +Oid AlterRoleSet(AlterRoleSetStmt *stmt) { HeapTuple roletuple; Oid databaseid = InvalidOid; + Oid roleid; roletuple = SearchSysCache1(AUTHNAME, PointerGetDatum(stmt->role)); @@ -818,6 +823,8 @@ AlterRoleSet(AlterRoleSetStmt *stmt) (errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("role \"%s\" does not exist", stmt->role))); + roleid = HeapTupleGetOid(roletuple); + /* * Obtain a lock on the role and make sure it didn't go away in the * meantime. @@ -853,6 +860,8 @@ AlterRoleSet(AlterRoleSetStmt *stmt) AlterSetting(databaseid, HeapTupleGetOid(roletuple), stmt->setstmt); ReleaseSysCache(roletuple); + + return roleid; } diff --git a/src/backend/rewrite/rewriteDefine.c b/src/backend/rewrite/rewriteDefine.c index 55b0fed5f7..9bb06ba118 100644 --- a/src/backend/rewrite/rewriteDefine.c +++ b/src/backend/rewrite/rewriteDefine.c @@ -191,7 +191,7 @@ InsertRule(char *rulname, * DefineRule * Execute a CREATE RULE command. */ -void +Oid DefineRule(RuleStmt *stmt, const char *queryString) { List *actions; @@ -208,13 +208,13 @@ DefineRule(RuleStmt *stmt, const char *queryString) relId = RangeVarGetRelid(stmt->relation, AccessExclusiveLock, false); /* ... and execute */ - DefineQueryRewrite(stmt->rulename, - relId, - whereClause, - stmt->event, - stmt->instead, - stmt->replace, - actions); + return DefineQueryRewrite(stmt->rulename, + relId, + whereClause, + stmt->event, + stmt->instead, + stmt->replace, + actions); } @@ -225,7 +225,7 @@ DefineRule(RuleStmt *stmt, const char *queryString) * This is essentially the same as DefineRule() except that the rule's * action and qual have already been passed through parse analysis. */ -void +Oid DefineQueryRewrite(char *rulename, Oid event_relid, Node *event_qual, @@ -239,6 +239,7 @@ DefineQueryRewrite(char *rulename, ListCell *l; Query *query; bool RelisBecomingView = false; + Oid ruleId = InvalidOid; /* * If we are installing an ON SELECT rule, we had better grab @@ -489,14 +490,14 @@ DefineQueryRewrite(char *rulename, /* discard rule if it's null action and not INSTEAD; it's a no-op */ if (action != NIL || is_instead) { - InsertRule(rulename, - event_type, - event_relid, - event_attno, - is_instead, - event_qual, - action, - replace); + ruleId = InsertRule(rulename, + event_type, + event_relid, + event_attno, + is_instead, + event_qual, + action, + replace); /* * Set pg_class 'relhasrules' field TRUE for event relation. If @@ -527,6 +528,8 @@ DefineQueryRewrite(char *rulename, /* Close rel, but keep lock till commit... */ heap_close(event_relation, NoLock); + + return ruleId; } /* diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c index a42b8e9b53..1822bebb2c 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -708,7 +708,7 @@ standard_ProcessUtility(Node *parsetree, { uint64 processed; - processed = DoCopy((CopyStmt *) parsetree, queryString); + DoCopy((CopyStmt *) parsetree, queryString, &processed); if (completionTag) snprintf(completionTag, COMPLETION_TAG_BUFSIZE, "COPY " UINT64_FORMAT, processed); diff --git a/src/include/commands/comment.h b/src/include/commands/comment.h index 441d8bd253..dee8ea0ca0 100644 --- a/src/include/commands/comment.h +++ b/src/include/commands/comment.h @@ -29,7 +29,7 @@ *------------------------------------------------------------------ */ -extern void CommentObject(CommentStmt *stmt); +extern Oid CommentObject(CommentStmt *stmt); extern void DeleteComments(Oid oid, Oid classoid, int32 subid); diff --git a/src/include/commands/copy.h b/src/include/commands/copy.h index 8680ac3ddc..4168ea27ec 100644 --- a/src/include/commands/copy.h +++ b/src/include/commands/copy.h @@ -21,7 +21,8 @@ /* CopyStateData is private in commands/copy.c */ typedef struct CopyStateData *CopyState; -extern uint64 DoCopy(const CopyStmt *stmt, const char *queryString); +extern Oid DoCopy(const CopyStmt *stmt, const char *queryString, + uint64 *processed); extern void ProcessCopyOptions(CopyState cstate, bool is_from, List *options); extern CopyState BeginCopyFrom(Relation rel, const char *filename, diff --git a/src/include/commands/dbcommands.h b/src/include/commands/dbcommands.h index a48cf5f7b9..d0aaa9f65d 100644 --- a/src/include/commands/dbcommands.h +++ b/src/include/commands/dbcommands.h @@ -52,11 +52,11 @@ typedef struct xl_dbase_drop_rec Oid tablespace_id; } xl_dbase_drop_rec; -extern void createdb(const CreatedbStmt *stmt); +extern Oid createdb(const CreatedbStmt *stmt); extern void dropdb(const char *dbname, bool missing_ok); extern Oid RenameDatabase(const char *oldname, const char *newname); -extern void AlterDatabase(AlterDatabaseStmt *stmt, bool isTopLevel); -extern void AlterDatabaseSet(AlterDatabaseSetStmt *stmt); +extern Oid AlterDatabase(AlterDatabaseStmt *stmt, bool isTopLevel); +extern Oid AlterDatabaseSet(AlterDatabaseSetStmt *stmt); extern Oid AlterDatabaseOwner(const char *dbname, Oid newOwnerId); extern Oid get_database_oid(const char *dbname, bool missingok); diff --git a/src/include/commands/defrem.h b/src/include/commands/defrem.h index 263f48cc97..235b10b31d 100644 --- a/src/include/commands/defrem.h +++ b/src/include/commands/defrem.h @@ -26,9 +26,9 @@ extern Oid DefineIndex(IndexStmt *stmt, bool check_rights, bool skip_build, bool quiet); -extern void ReindexIndex(RangeVar *indexRelation); -extern void ReindexTable(RangeVar *relation); -extern void ReindexDatabase(const char *databaseName, +extern Oid ReindexIndex(RangeVar *indexRelation); +extern Oid ReindexTable(RangeVar *relation); +extern Oid ReindexDatabase(const char *databaseName, bool do_system, bool do_user); extern char *makeObjectName(const char *name1, const char *name2, const char *label); @@ -47,8 +47,8 @@ extern void RemoveFunctionById(Oid funcOid); extern void SetFunctionReturnType(Oid funcOid, Oid newRetType); extern void SetFunctionArgType(Oid funcOid, int argIndex, Oid newArgType); extern Oid RenameFunction(List *name, List *argtypes, const char *newname); -extern void AlterFunction(AlterFunctionStmt *stmt); -extern void CreateCast(CreateCastStmt *stmt); +extern Oid AlterFunction(AlterFunctionStmt *stmt); +extern Oid CreateCast(CreateCastStmt *stmt); extern void DropCastById(Oid castOid); extern Oid AlterFunctionNamespace(List *name, List *argtypes, bool isagg, const char *newschema); @@ -66,9 +66,9 @@ extern Oid DefineAggregate(List *name, List *args, bool oldstyle, extern Oid RenameAggregate(List *name, List *args, const char *newname); /* commands/opclasscmds.c */ -extern void DefineOpClass(CreateOpClassStmt *stmt); -extern void DefineOpFamily(CreateOpFamilyStmt *stmt); -extern void AlterOpFamily(AlterOpFamilyStmt *stmt); +extern Oid DefineOpClass(CreateOpClassStmt *stmt); +extern Oid DefineOpFamily(CreateOpFamilyStmt *stmt); +extern Oid AlterOpFamily(AlterOpFamilyStmt *stmt); extern void RemoveOpClassById(Oid opclassOid); extern void RemoveOpFamilyById(Oid opfamilyOid); extern void RemoveAmOpEntryById(Oid entryOid); @@ -87,7 +87,7 @@ extern void RemoveTSParserById(Oid prsId); extern Oid DefineTSDictionary(List *names, List *parameters); extern Oid RenameTSDictionary(List *oldname, const char *newname); extern void RemoveTSDictionaryById(Oid dictId); -extern void AlterTSDictionary(AlterTSDictionaryStmt *stmt); +extern Oid AlterTSDictionary(AlterTSDictionaryStmt *stmt); extern Oid DefineTSTemplate(List *names, List *parameters); extern Oid RenameTSTemplate(List *oldname, const char *newname); @@ -96,7 +96,7 @@ extern void RemoveTSTemplateById(Oid tmplId); extern Oid DefineTSConfiguration(List *names, List *parameters); extern Oid RenameTSConfiguration(List *oldname, const char *newname); extern void RemoveTSConfigurationById(Oid cfgId); -extern void AlterTSConfiguration(AlterTSConfigurationStmt *stmt); +extern Oid AlterTSConfiguration(AlterTSConfigurationStmt *stmt); extern text *serialize_deflist(List *deflist); extern List *deserialize_deflist(Datum txt); @@ -108,15 +108,15 @@ extern Oid AlterForeignServerOwner(const char *name, Oid newOwnerId); extern void AlterForeignServerOwner_oid(Oid, Oid newOwnerId); extern Oid AlterForeignDataWrapperOwner(const char *name, Oid newOwnerId); extern void AlterForeignDataWrapperOwner_oid(Oid fwdId, Oid newOwnerId); -extern void CreateForeignDataWrapper(CreateFdwStmt *stmt); -extern void AlterForeignDataWrapper(AlterFdwStmt *stmt); +extern Oid CreateForeignDataWrapper(CreateFdwStmt *stmt); +extern Oid AlterForeignDataWrapper(AlterFdwStmt *stmt); extern void RemoveForeignDataWrapperById(Oid fdwId); -extern void CreateForeignServer(CreateForeignServerStmt *stmt); -extern void AlterForeignServer(AlterForeignServerStmt *stmt); +extern Oid CreateForeignServer(CreateForeignServerStmt *stmt); +extern Oid AlterForeignServer(AlterForeignServerStmt *stmt); extern void RemoveForeignServerById(Oid srvId); -extern void CreateUserMapping(CreateUserMappingStmt *stmt); -extern void AlterUserMapping(AlterUserMappingStmt *stmt); -extern void RemoveUserMapping(DropUserMappingStmt *stmt); +extern Oid CreateUserMapping(CreateUserMappingStmt *stmt); +extern Oid AlterUserMapping(AlterUserMappingStmt *stmt); +extern Oid RemoveUserMapping(DropUserMappingStmt *stmt); extern void RemoveUserMappingById(Oid umId); extern void CreateForeignTable(CreateForeignTableStmt *stmt, Oid relid); extern Datum transformGenericOptions(Oid catalogId, diff --git a/src/include/commands/event_trigger.h b/src/include/commands/event_trigger.h index 501da7c464..abc713f794 100644 --- a/src/include/commands/event_trigger.h +++ b/src/include/commands/event_trigger.h @@ -31,11 +31,11 @@ typedef struct EventTriggerData #define CALLED_AS_EVENT_TRIGGER(fcinfo) \ ((fcinfo)->context != NULL && IsA((fcinfo)->context, EventTriggerData)) -extern void CreateEventTrigger(CreateEventTrigStmt *stmt); +extern Oid CreateEventTrigger(CreateEventTrigStmt *stmt); extern void RemoveEventTriggerById(Oid ctrigOid); extern Oid get_event_trigger_oid(const char *trigname, bool missing_ok); -extern void AlterEventTrigger(AlterEventTrigStmt *stmt); +extern Oid AlterEventTrigger(AlterEventTrigStmt *stmt); extern Oid RenameEventTrigger(const char* trigname, const char *newname); extern Oid AlterEventTriggerOwner(const char *name, Oid newOwnerId); extern void AlterEventTriggerOwner_oid(Oid, Oid newOwnerId); diff --git a/src/include/commands/extension.h b/src/include/commands/extension.h index 205807512e..363375f623 100644 --- a/src/include/commands/extension.h +++ b/src/include/commands/extension.h @@ -36,9 +36,9 @@ extern Oid InsertExtensionTuple(const char *extName, Oid extOwner, Datum extConfig, Datum extCondition, List *requiredExtensions); -extern void ExecAlterExtensionStmt(AlterExtensionStmt *stmt); +extern Oid ExecAlterExtensionStmt(AlterExtensionStmt *stmt); -extern void ExecAlterExtensionContentsStmt(AlterExtensionContentsStmt *stmt); +extern Oid ExecAlterExtensionContentsStmt(AlterExtensionContentsStmt *stmt); extern Oid get_extension_oid(const char *extname, bool missing_ok); extern char *get_extension_name(Oid ext_oid); diff --git a/src/include/commands/proclang.h b/src/include/commands/proclang.h index bc380792e5..1f17ae4d3d 100644 --- a/src/include/commands/proclang.h +++ b/src/include/commands/proclang.h @@ -14,7 +14,7 @@ #include "nodes/parsenodes.h" -extern void CreateProceduralLanguage(CreatePLangStmt *stmt); +extern Oid CreateProceduralLanguage(CreatePLangStmt *stmt); extern void DropProceduralLanguageById(Oid langOid); extern Oid RenameLanguage(const char *oldname, const char *newname); extern bool PLTemplateExists(const char *languageName); diff --git a/src/include/commands/seclabel.h b/src/include/commands/seclabel.h index 94b3c39cc1..4866fbe798 100644 --- a/src/include/commands/seclabel.h +++ b/src/include/commands/seclabel.h @@ -24,7 +24,7 @@ extern void DeleteSharedSecurityLabel(Oid objectId, Oid classId); /* * Statement and ESP hook support */ -extern void ExecSecLabelStmt(SecLabelStmt *stmt); +extern Oid ExecSecLabelStmt(SecLabelStmt *stmt); typedef void (*check_object_relabel_type) (const ObjectAddress *object, const char *seclabel); diff --git a/src/include/commands/tablespace.h b/src/include/commands/tablespace.h index 4d5cb89101..4b88d89de9 100644 --- a/src/include/commands/tablespace.h +++ b/src/include/commands/tablespace.h @@ -39,10 +39,10 @@ typedef struct TableSpaceOpts float8 seq_page_cost; } TableSpaceOpts; -extern void CreateTableSpace(CreateTableSpaceStmt *stmt); +extern Oid CreateTableSpace(CreateTableSpaceStmt *stmt); extern void DropTableSpace(DropTableSpaceStmt *stmt); extern Oid RenameTableSpace(const char *oldname, const char *newname); -extern void AlterTableSpaceOptions(AlterTableSpaceOptionsStmt *stmt); +extern Oid AlterTableSpaceOptions(AlterTableSpaceOptionsStmt *stmt); extern void TablespaceCreateDbspace(Oid spcNode, Oid dbNode, bool isRedo); diff --git a/src/include/commands/typecmds.h b/src/include/commands/typecmds.h index 48ee0163bd..fed9c32daa 100644 --- a/src/include/commands/typecmds.h +++ b/src/include/commands/typecmds.h @@ -24,17 +24,17 @@ extern Oid DefineType(List *names, List *parameters); extern void RemoveTypeById(Oid typeOid); extern Oid DefineDomain(CreateDomainStmt *stmt); -extern void DefineEnum(CreateEnumStmt *stmt); -extern void DefineRange(CreateRangeStmt *stmt); -extern void AlterEnum(AlterEnumStmt *stmt, bool isTopLevel); +extern Oid DefineEnum(CreateEnumStmt *stmt); +extern Oid DefineRange(CreateRangeStmt *stmt); +extern Oid AlterEnum(AlterEnumStmt *stmt, bool isTopLevel); extern Oid DefineCompositeType(RangeVar *typevar, List *coldeflist); extern Oid AssignTypeArrayOid(void); -extern void AlterDomainDefault(List *names, Node *defaultRaw); -extern void AlterDomainNotNull(List *names, bool notNull); -extern void AlterDomainAddConstraint(List *names, Node *constr); -extern void AlterDomainValidateConstraint(List *names, char *constrName); -extern void AlterDomainDropConstraint(List *names, const char *constrName, +extern Oid AlterDomainDefault(List *names, Node *defaultRaw); +extern Oid AlterDomainNotNull(List *names, bool notNull); +extern Oid AlterDomainAddConstraint(List *names, Node *constr); +extern Oid AlterDomainValidateConstraint(List *names, char *constrName); +extern Oid AlterDomainDropConstraint(List *names, const char *constrName, DropBehavior behavior, bool missing_ok); extern void checkDomainOwner(HeapTuple tup); diff --git a/src/include/commands/user.h b/src/include/commands/user.h index 650fcea557..fdbfaeff0e 100644 --- a/src/include/commands/user.h +++ b/src/include/commands/user.h @@ -22,9 +22,9 @@ typedef void (*check_password_hook_type) (const char *username, const char *pass extern PGDLLIMPORT check_password_hook_type check_password_hook; -extern void CreateRole(CreateRoleStmt *stmt); -extern void AlterRole(AlterRoleStmt *stmt); -extern void AlterRoleSet(AlterRoleSetStmt *stmt); +extern Oid CreateRole(CreateRoleStmt *stmt); +extern Oid AlterRole(AlterRoleStmt *stmt); +extern Oid AlterRoleSet(AlterRoleSetStmt *stmt); extern void DropRole(DropRoleStmt *stmt); extern void GrantRole(GrantRoleStmt *stmt); extern Oid RenameRole(const char *oldname, const char *newname); diff --git a/src/include/rewrite/rewriteDefine.h b/src/include/rewrite/rewriteDefine.h index 6061725dc4..c344658f4e 100644 --- a/src/include/rewrite/rewriteDefine.h +++ b/src/include/rewrite/rewriteDefine.h @@ -22,9 +22,9 @@ #define RULE_FIRES_ON_REPLICA 'R' #define RULE_DISABLED 'D' -extern void DefineRule(RuleStmt *stmt, const char *queryString); +extern Oid DefineRule(RuleStmt *stmt, const char *queryString); -extern void DefineQueryRewrite(char *rulename, +extern Oid DefineQueryRewrite(char *rulename, Oid event_relid, Node *event_qual, CmdType event_type,