aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/commands')
-rw-r--r--src/backend/commands/functioncmds.c34
-rw-r--r--src/backend/commands/proclang.c24
-rw-r--r--src/backend/commands/tsearchcmds.c90
3 files changed, 71 insertions, 77 deletions
diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c
index 1b5bdcec8b8..e236581a8e0 100644
--- a/src/backend/commands/functioncmds.c
+++ b/src/backend/commands/functioncmds.c
@@ -1696,6 +1696,7 @@ CreateTransform(CreateTransformStmt *stmt)
Relation relation;
ObjectAddress myself,
referenced;
+ ObjectAddresses *addrs;
bool is_replace;
/*
@@ -1836,39 +1837,34 @@ CreateTransform(CreateTransformStmt *stmt)
if (is_replace)
deleteDependencyRecordsFor(TransformRelationId, transformid, true);
+ addrs = new_object_addresses();
+
/* make dependency entries */
- myself.classId = TransformRelationId;
- myself.objectId = transformid;
- myself.objectSubId = 0;
+ ObjectAddressSet(myself, TransformRelationId, transformid);
/* dependency on language */
- referenced.classId = LanguageRelationId;
- referenced.objectId = langid;
- referenced.objectSubId = 0;
- recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
+ ObjectAddressSet(referenced, LanguageRelationId, langid);
+ add_exact_object_address(&referenced, addrs);
/* dependency on type */
- referenced.classId = TypeRelationId;
- referenced.objectId = typeid;
- referenced.objectSubId = 0;
- recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
+ ObjectAddressSet(referenced, TypeRelationId, typeid);
+ add_exact_object_address(&referenced, addrs);
/* dependencies on functions */
if (OidIsValid(fromsqlfuncid))
{
- referenced.classId = ProcedureRelationId;
- referenced.objectId = fromsqlfuncid;
- referenced.objectSubId = 0;
- recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
+ ObjectAddressSet(referenced, ProcedureRelationId, fromsqlfuncid);
+ add_exact_object_address(&referenced, addrs);
}
if (OidIsValid(tosqlfuncid))
{
- referenced.classId = ProcedureRelationId;
- referenced.objectId = tosqlfuncid;
- referenced.objectSubId = 0;
- recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
+ ObjectAddressSet(referenced, ProcedureRelationId, tosqlfuncid);
+ add_exact_object_address(&referenced, addrs);
}
+ record_object_address_dependencies(&myself, addrs, DEPENDENCY_NORMAL);
+ free_object_addresses(addrs);
+
/* dependency on extension */
recordDependencyOnCurrentExtension(&myself, is_replace);
diff --git a/src/backend/commands/proclang.c b/src/backend/commands/proclang.c
index 14153426bdd..8ef60374f59 100644
--- a/src/backend/commands/proclang.c
+++ b/src/backend/commands/proclang.c
@@ -57,6 +57,7 @@ CreateProceduralLanguage(CreatePLangStmt *stmt)
bool is_update;
ObjectAddress myself,
referenced;
+ ObjectAddresses *addrs;
/*
* Check permission
@@ -186,30 +187,29 @@ CreateProceduralLanguage(CreatePLangStmt *stmt)
/* dependency on extension */
recordDependencyOnCurrentExtension(&myself, is_update);
+ addrs = new_object_addresses();
+
/* dependency on the PL handler function */
- referenced.classId = ProcedureRelationId;
- referenced.objectId = handlerOid;
- referenced.objectSubId = 0;
- recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
+ ObjectAddressSet(referenced, ProcedureRelationId, handlerOid);
+ add_exact_object_address(&referenced, addrs);
/* dependency on the inline handler function, if any */
if (OidIsValid(inlineOid))
{
- referenced.classId = ProcedureRelationId;
- referenced.objectId = inlineOid;
- referenced.objectSubId = 0;
- recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
+ ObjectAddressSet(referenced, ProcedureRelationId, inlineOid);
+ add_exact_object_address(&referenced, addrs);
}
/* dependency on the validator function, if any */
if (OidIsValid(valOid))
{
- referenced.classId = ProcedureRelationId;
- referenced.objectId = valOid;
- referenced.objectSubId = 0;
- recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
+ ObjectAddressSet(referenced, ProcedureRelationId, valOid);
+ add_exact_object_address(&referenced, addrs);
}
+ record_object_address_dependencies(&myself, addrs, DEPENDENCY_NORMAL);
+ free_object_addresses(addrs);
+
/* Post creation hook for new procedural language */
InvokeObjectPostCreateHook(LanguageRelationId, myself.objectId, 0);
diff --git a/src/backend/commands/tsearchcmds.c b/src/backend/commands/tsearchcmds.c
index 319a62012ed..f5d1d137b81 100644
--- a/src/backend/commands/tsearchcmds.c
+++ b/src/backend/commands/tsearchcmds.c
@@ -133,42 +133,41 @@ makeParserDependencies(HeapTuple tuple)
Form_pg_ts_parser prs = (Form_pg_ts_parser) GETSTRUCT(tuple);
ObjectAddress myself,
referenced;
+ ObjectAddresses *addrs;
- myself.classId = TSParserRelationId;
- myself.objectId = prs->oid;
- myself.objectSubId = 0;
-
- /* dependency on namespace */
- referenced.classId = NamespaceRelationId;
- referenced.objectId = prs->prsnamespace;
- referenced.objectSubId = 0;
- recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
+ ObjectAddressSet(myself, TSParserRelationId, prs->oid);
/* dependency on extension */
recordDependencyOnCurrentExtension(&myself, false);
- /* dependencies on functions */
- referenced.classId = ProcedureRelationId;
- referenced.objectSubId = 0;
+ addrs = new_object_addresses();
- referenced.objectId = prs->prsstart;
- recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
+ /* dependency on namespace */
+ ObjectAddressSet(referenced, NamespaceRelationId, prs->prsnamespace);
+ add_exact_object_address(&referenced, addrs);
+
+ /* dependencies on functions */
+ ObjectAddressSet(referenced, ProcedureRelationId, prs->prsstart);
+ add_exact_object_address(&referenced, addrs);
referenced.objectId = prs->prstoken;
- recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
+ add_exact_object_address(&referenced, addrs);
referenced.objectId = prs->prsend;
- recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
+ add_exact_object_address(&referenced, addrs);
referenced.objectId = prs->prslextype;
- recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
+ add_exact_object_address(&referenced, addrs);
if (OidIsValid(prs->prsheadline))
{
referenced.objectId = prs->prsheadline;
- recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
+ add_exact_object_address(&referenced, addrs);
}
+ record_object_address_dependencies(&myself, addrs, DEPENDENCY_NORMAL);
+ free_object_addresses(addrs);
+
return myself;
}
@@ -304,16 +303,9 @@ makeDictionaryDependencies(HeapTuple tuple)
Form_pg_ts_dict dict = (Form_pg_ts_dict) GETSTRUCT(tuple);
ObjectAddress myself,
referenced;
+ ObjectAddresses *addrs;
- myself.classId = TSDictionaryRelationId;
- myself.objectId = dict->oid;
- myself.objectSubId = 0;
-
- /* dependency on namespace */
- referenced.classId = NamespaceRelationId;
- referenced.objectId = dict->dictnamespace;
- referenced.objectSubId = 0;
- recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
+ ObjectAddressSet(myself, TSDictionaryRelationId, dict->oid);
/* dependency on owner */
recordDependencyOnOwner(myself.classId, myself.objectId, dict->dictowner);
@@ -321,11 +313,18 @@ makeDictionaryDependencies(HeapTuple tuple)
/* dependency on extension */
recordDependencyOnCurrentExtension(&myself, false);
+ addrs = new_object_addresses();
+
+ /* dependency on namespace */
+ ObjectAddressSet(referenced, NamespaceRelationId, dict->dictnamespace);
+ add_exact_object_address(&referenced, addrs);
+
/* dependency on template */
- referenced.classId = TSTemplateRelationId;
- referenced.objectId = dict->dicttemplate;
- referenced.objectSubId = 0;
- recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
+ ObjectAddressSet(referenced, TSTemplateRelationId, dict->dicttemplate);
+ add_exact_object_address(&referenced, addrs);
+
+ record_object_address_dependencies(&myself, addrs, DEPENDENCY_NORMAL);
+ free_object_addresses(addrs);
return myself;
}
@@ -649,33 +648,32 @@ makeTSTemplateDependencies(HeapTuple tuple)
Form_pg_ts_template tmpl = (Form_pg_ts_template) GETSTRUCT(tuple);
ObjectAddress myself,
referenced;
+ ObjectAddresses *addrs;
- myself.classId = TSTemplateRelationId;
- myself.objectId = tmpl->oid;
- myself.objectSubId = 0;
-
- /* dependency on namespace */
- referenced.classId = NamespaceRelationId;
- referenced.objectId = tmpl->tmplnamespace;
- referenced.objectSubId = 0;
- recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
+ ObjectAddressSet(myself, TSTemplateRelationId, tmpl->oid);
/* dependency on extension */
recordDependencyOnCurrentExtension(&myself, false);
- /* dependencies on functions */
- referenced.classId = ProcedureRelationId;
- referenced.objectSubId = 0;
+ addrs = new_object_addresses();
- referenced.objectId = tmpl->tmpllexize;
- recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
+ /* dependency on namespace */
+ ObjectAddressSet(referenced, NamespaceRelationId, tmpl->tmplnamespace);
+ add_exact_object_address(&referenced, addrs);
+
+ /* dependencies on functions */
+ ObjectAddressSet(referenced, ProcedureRelationId, tmpl->tmpllexize);
+ add_exact_object_address(&referenced, addrs);
if (OidIsValid(tmpl->tmplinit))
{
referenced.objectId = tmpl->tmplinit;
- recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
+ add_exact_object_address(&referenced, addrs);
}
+ record_object_address_dependencies(&myself, addrs, DEPENDENCY_NORMAL);
+ free_object_addresses(addrs);
+
return myself;
}