diff options
author | Robert Haas <rhaas@postgresql.org> | 2012-12-29 07:55:37 -0500 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2012-12-29 07:55:37 -0500 |
commit | 82b1b213cad3a69cf5f3dfaa81687c14366960fc (patch) | |
tree | e19129f124c02d7ef274393d584de97cc18a5f66 | |
parent | 5ab3af46ddd2f2c2b248f1ffdb688b394d4bb387 (diff) | |
download | postgresql-82b1b213cad3a69cf5f3dfaa81687c14366960fc.tar.gz postgresql-82b1b213cad3a69cf5f3dfaa81687c14366960fc.zip |
Adjust more backend functions to return OID rather than void.
This is again intended to support extensions to the event trigger
functionality. This may go a bit further than we need for that
purpose, but there's some value in being consistent, and the OID
may be useful for other purposes also.
Dimitri Fontaine
29 files changed, 231 insertions, 131 deletions
diff --git a/src/backend/commands/comment.c b/src/backend/commands/comment.c index 267694f5b9a..afada5d6e4f 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 abd82cf9f59..31a02884b9b 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 c390575f422..2b39a99c2b0 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 722c3cf118c..e23cacd067f 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 ad072a5c7b0..e5560516f0a 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 af833b886bf..5a504a29e5a 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 2c36ce0e0f7..fe63a1205a2 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 75f9ff19cc7..1231b84c378 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 b85f1cb6407..545f5c8eb39 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 93283b1a841..d34ef7de4d0 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 91f41a1cd70..cdb2e88f26c 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 2c19db31e0d..c5d13a5854e 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 b922c6ed476..61eda19ecb4 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 6f99f38f118..aca670095b9 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 569385cf234..6cf40cc0811 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 55b0fed5f79..9bb06ba1181 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 a42b8e9b535..1822bebb2ce 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 441d8bd253f..dee8ea0ca0d 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 8680ac3ddc1..4168ea27ece 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 a48cf5f7b9f..d0aaa9f65df 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 263f48cc971..235b10b31d8 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 501da7c4647..abc713f7944 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 205807512e2..363375f6232 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 bc380792e57..1f17ae4d3dd 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 94b3c39cc15..4866fbe798d 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 4d5cb89101f..4b88d89de92 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 48ee0163bda..fed9c32daa3 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 650fcea5574..fdbfaeff0e8 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 6061725dc43..c344658f4e6 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, |