Refactor ObjectAddress field assignments in more places
authorMichael Paquier <michael@paquier.xyz>
Wed, 1 Jul 2020 08:03:50 +0000 (17:03 +0900)
committerMichael Paquier <michael@paquier.xyz>
Wed, 1 Jul 2020 08:03:50 +0000 (17:03 +0900)
This is a follow-up commit similar to 68de144, with more places in the
backend code simplified with the macros able to assign values to the
fields of ObjectAddress.  The code paths changed here could be
transitioned later into using more grouping when inserting dependency
records, simplifying this future work.

Author: Daniel Gustafsson, Michael Paquier
Discussion: https://postgr.es/m/20190213182737.mxn6hkdxwrzgxk35@alap3.anarazel.de

src/backend/catalog/heap.c
src/backend/catalog/index.c
src/backend/catalog/pg_aggregate.c
src/backend/catalog/pg_constraint.c
src/backend/catalog/pg_operator.c
src/backend/catalog/pg_proc.c

index 3c83fe6bab48427902f8cfff199ef18d189362a9..d279842d3ceb19aa76d0429bc7c1d7c54d833159 100644 (file)
@@ -818,21 +818,15 @@ AddNewAttributeTuples(Oid new_rel_oid,
        InsertPgAttributeTuple(rel, attr, (Datum) 0, indstate);
 
        /* Add dependency info */
-       myself.classId = RelationRelationId;
-       myself.objectId = new_rel_oid;
-       myself.objectSubId = i + 1;
-       referenced.classId = TypeRelationId;
-       referenced.objectId = attr->atttypid;
-       referenced.objectSubId = 0;
+       ObjectAddressSubSet(myself, RelationRelationId, new_rel_oid, i + 1);
+       ObjectAddressSet(referenced, TypeRelationId, attr->atttypid);
        recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
 
        /* The default collation is pinned, so don't bother recording it */
        if (OidIsValid(attr->attcollation) &&
            attr->attcollation != DEFAULT_COLLATION_OID)
        {
-           referenced.classId = CollationRelationId;
-           referenced.objectId = attr->attcollation;
-           referenced.objectSubId = 0;
+           ObjectAddressSet(referenced, CollationRelationId, attr->attcollation);
            recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
        }
    }
index cdc01c49c9ff6c1a238b1c65f5a7113a374fb7bd..fc088d3f5275fd54f1467889a3579367351f8032 100644 (file)
@@ -1030,9 +1030,7 @@ index_create(Relation heapRelation,
        ObjectAddress myself,
                    referenced;
 
-       myself.classId = RelationRelationId;
-       myself.objectId = indexRelationId;
-       myself.objectSubId = 0;
+       ObjectAddressSet(myself, RelationRelationId, indexRelationId);
 
        if ((flags & INDEX_CREATE_ADD_CONSTRAINT) != 0)
        {
@@ -1072,12 +1070,10 @@ index_create(Relation heapRelation,
            {
                if (indexInfo->ii_IndexAttrNumbers[i] != 0)
                {
-                   referenced.classId = RelationRelationId;
-                   referenced.objectId = heapRelationId;
-                   referenced.objectSubId = indexInfo->ii_IndexAttrNumbers[i];
-
+                   ObjectAddressSubSet(referenced, RelationRelationId,
+                                       heapRelationId,
+                                       indexInfo->ii_IndexAttrNumbers[i]);
                    recordDependencyOn(&myself, &referenced, DEPENDENCY_AUTO);
-
                    have_simple_col = true;
                }
            }
@@ -1090,10 +1086,8 @@ index_create(Relation heapRelation,
             */
            if (!have_simple_col)
            {
-               referenced.classId = RelationRelationId;
-               referenced.objectId = heapRelationId;
-               referenced.objectSubId = 0;
-
+               ObjectAddressSet(referenced, RelationRelationId,
+                                heapRelationId);
                recordDependencyOn(&myself, &referenced, DEPENDENCY_AUTO);
            }
        }
@@ -1106,16 +1100,10 @@ index_create(Relation heapRelation,
         */
        if (OidIsValid(parentIndexRelid))
        {
-           referenced.classId = RelationRelationId;
-           referenced.objectId = parentIndexRelid;
-           referenced.objectSubId = 0;
-
+           ObjectAddressSet(referenced, RelationRelationId, parentIndexRelid);
            recordDependencyOn(&myself, &referenced, DEPENDENCY_PARTITION_PRI);
 
-           referenced.classId = RelationRelationId;
-           referenced.objectId = heapRelationId;
-           referenced.objectSubId = 0;
-
+           ObjectAddressSet(referenced, RelationRelationId, heapRelationId);
            recordDependencyOn(&myself, &referenced, DEPENDENCY_PARTITION_SEC);
        }
 
@@ -1126,10 +1114,8 @@ index_create(Relation heapRelation,
            if (OidIsValid(collationObjectId[i]) &&
                collationObjectId[i] != DEFAULT_COLLATION_OID)
            {
-               referenced.classId = CollationRelationId;
-               referenced.objectId = collationObjectId[i];
-               referenced.objectSubId = 0;
-
+               ObjectAddressSet(referenced, CollationRelationId,
+                                collationObjectId[i]);
                recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
            }
        }
@@ -1137,10 +1123,7 @@ index_create(Relation heapRelation,
        /* Store dependency on operator classes */
        for (i = 0; i < indexInfo->ii_NumIndexKeyAttrs; i++)
        {
-           referenced.classId = OperatorClassRelationId;
-           referenced.objectId = classObjectId[i];
-           referenced.objectSubId = 0;
-
+           ObjectAddressSet(referenced, OperatorClassRelationId, classObjectId[i]);
            recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
        }
 
index 7d887ea24a2b7f10dbc6f0b3863ea0b4e3ff5e18..89007ad1ed7f2469ac393a500777175efed5f3d2 100644 (file)
@@ -742,80 +742,62 @@ AggregateCreate(const char *aggName,
     */
 
    /* Depends on transition function */
-   referenced.classId = ProcedureRelationId;
-   referenced.objectId = transfn;
-   referenced.objectSubId = 0;
+   ObjectAddressSet(referenced, ProcedureRelationId, transfn);
    recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
 
    /* Depends on final function, if any */
    if (OidIsValid(finalfn))
    {
-       referenced.classId = ProcedureRelationId;
-       referenced.objectId = finalfn;
-       referenced.objectSubId = 0;
+       ObjectAddressSet(referenced, ProcedureRelationId, finalfn);
        recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
    }
 
    /* Depends on combine function, if any */
    if (OidIsValid(combinefn))
    {
-       referenced.classId = ProcedureRelationId;
-       referenced.objectId = combinefn;
-       referenced.objectSubId = 0;
+       ObjectAddressSet(referenced, ProcedureRelationId, combinefn);
        recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
    }
 
    /* Depends on serialization function, if any */
    if (OidIsValid(serialfn))
    {
-       referenced.classId = ProcedureRelationId;
-       referenced.objectId = serialfn;
-       referenced.objectSubId = 0;
+       ObjectAddressSet(referenced, ProcedureRelationId, serialfn);
        recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
    }
 
    /* Depends on deserialization function, if any */
    if (OidIsValid(deserialfn))
    {
-       referenced.classId = ProcedureRelationId;
-       referenced.objectId = deserialfn;
-       referenced.objectSubId = 0;
+       ObjectAddressSet(referenced, ProcedureRelationId, deserialfn);
        recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
    }
 
    /* Depends on forward transition function, if any */
    if (OidIsValid(mtransfn))
    {
-       referenced.classId = ProcedureRelationId;
-       referenced.objectId = mtransfn;
-       referenced.objectSubId = 0;
+       ObjectAddressSet(referenced, ProcedureRelationId, mtransfn);
        recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
    }
 
    /* Depends on inverse transition function, if any */
    if (OidIsValid(minvtransfn))
    {
-       referenced.classId = ProcedureRelationId;
-       referenced.objectId = minvtransfn;
-       referenced.objectSubId = 0;
+       ObjectAddressSet(referenced, ProcedureRelationId, minvtransfn);
        recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
    }
 
    /* Depends on final function, if any */
    if (OidIsValid(mfinalfn))
    {
-       referenced.classId = ProcedureRelationId;
-       referenced.objectId = mfinalfn;
-       referenced.objectSubId = 0;
+       ObjectAddressSet(referenced, ProcedureRelationId, mfinalfn);
        recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
    }
 
    /* Depends on sort operator, if any */
    if (OidIsValid(sortop))
    {
-       referenced.classId = OperatorRelationId;
-       referenced.objectId = sortop;
-       referenced.objectSubId = 0;
+       ObjectAddressSet(referenced, OperatorRelationId, sortop);
        recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
    }
 
index 90932be8310177788a865ce4ed4b5e4f2c295011..fdc63e7dea16b3ab41b29af4837b0270a84b1d7c 100644 (file)
@@ -223,9 +223,7 @@ CreateConstraintEntry(const char *constraintName,
 
    CatalogTupleInsert(conDesc, tup);
 
-   conobject.classId = ConstraintRelationId;
-   conobject.objectId = conOid;
-   conobject.objectSubId = 0;
+   ObjectAddressSet(conobject, ConstraintRelationId, conOid);
 
    table_close(conDesc, RowExclusiveLock);
 
@@ -237,21 +235,18 @@ CreateConstraintEntry(const char *constraintName,
         */
        ObjectAddress relobject;
 
-       relobject.classId = RelationRelationId;
-       relobject.objectId = relId;
        if (constraintNTotalKeys > 0)
        {
            for (i = 0; i < constraintNTotalKeys; i++)
            {
-               relobject.objectSubId = constraintKey[i];
-
+               ObjectAddressSubSet(relobject, RelationRelationId, relId,
+                                   constraintKey[i]);
                recordDependencyOn(&conobject, &relobject, DEPENDENCY_AUTO);
            }
        }
        else
        {
-           relobject.objectSubId = 0;
-
+           ObjectAddressSet(relobject, RelationRelationId, relId);
            recordDependencyOn(&conobject, &relobject, DEPENDENCY_AUTO);
        }
    }
@@ -263,10 +258,7 @@ CreateConstraintEntry(const char *constraintName,
         */
        ObjectAddress domobject;
 
-       domobject.classId = TypeRelationId;
-       domobject.objectId = domainId;
-       domobject.objectSubId = 0;
-
+       ObjectAddressSet(domobject, TypeRelationId, domainId);
        recordDependencyOn(&conobject, &domobject, DEPENDENCY_AUTO);
    }
 
@@ -278,21 +270,18 @@ CreateConstraintEntry(const char *constraintName,
         */
        ObjectAddress relobject;
 
-       relobject.classId = RelationRelationId;
-       relobject.objectId = foreignRelId;
        if (foreignNKeys > 0)
        {
            for (i = 0; i < foreignNKeys; i++)
            {
-               relobject.objectSubId = foreignKey[i];
-
+               ObjectAddressSubSet(relobject, RelationRelationId,
+                                   foreignRelId, foreignKey[i]);
                recordDependencyOn(&conobject, &relobject, DEPENDENCY_NORMAL);
            }
        }
        else
        {
-           relobject.objectSubId = 0;
-
+           ObjectAddressSet(relobject, RelationRelationId, foreignRelId);
            recordDependencyOn(&conobject, &relobject, DEPENDENCY_NORMAL);
        }
    }
@@ -307,10 +296,7 @@ CreateConstraintEntry(const char *constraintName,
         */
        ObjectAddress relobject;
 
-       relobject.classId = RelationRelationId;
-       relobject.objectId = indexRelId;
-       relobject.objectSubId = 0;
-
+       ObjectAddressSet(relobject, RelationRelationId, indexRelId);
        recordDependencyOn(&conobject, &relobject, DEPENDENCY_NORMAL);
    }
 
@@ -722,9 +708,7 @@ AlterConstraintNamespaces(Oid ownerId, Oid oldNspId,
        Form_pg_constraint conform = (Form_pg_constraint) GETSTRUCT(tup);
        ObjectAddress thisobj;
 
-       thisobj.classId = ConstraintRelationId;
-       thisobj.objectId = conform->oid;
-       thisobj.objectSubId = 0;
+       ObjectAddressSet(thisobj, ConstraintRelationId, conform->oid);
 
        if (object_address_present(&thisobj, objsMoved))
            continue;
index 340e284ae4b52df135ab6be80713220d810cd038..65a36be5ee61677650f00d5bb9fbfb23a2ddd3e2 100644 (file)
@@ -776,9 +776,7 @@ makeOperatorDependencies(HeapTuple tuple, bool isUpdate)
    ObjectAddress myself,
                referenced;
 
-   myself.classId = OperatorRelationId;
-   myself.objectId = oper->oid;
-   myself.objectSubId = 0;
+   ObjectAddressSet(myself, OperatorRelationId, oper->oid);
 
    /*
     * If we are updating the operator, delete any existing entries, except
@@ -793,36 +791,28 @@ makeOperatorDependencies(HeapTuple tuple, bool isUpdate)
    /* Dependency on namespace */
    if (OidIsValid(oper->oprnamespace))
    {
-       referenced.classId = NamespaceRelationId;
-       referenced.objectId = oper->oprnamespace;
-       referenced.objectSubId = 0;
+       ObjectAddressSet(referenced, NamespaceRelationId, oper->oprnamespace);
        recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
    }
 
    /* Dependency on left type */
    if (OidIsValid(oper->oprleft))
    {
-       referenced.classId = TypeRelationId;
-       referenced.objectId = oper->oprleft;
-       referenced.objectSubId = 0;
+       ObjectAddressSet(referenced, TypeRelationId, oper->oprleft);
        recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
    }
 
    /* Dependency on right type */
    if (OidIsValid(oper->oprright))
    {
-       referenced.classId = TypeRelationId;
-       referenced.objectId = oper->oprright;
-       referenced.objectSubId = 0;
+       ObjectAddressSet(referenced, TypeRelationId, oper->oprright);
        recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
    }
 
    /* Dependency on result type */
    if (OidIsValid(oper->oprresult))
    {
-       referenced.classId = TypeRelationId;
-       referenced.objectId = oper->oprresult;
-       referenced.objectSubId = 0;
+       ObjectAddressSet(referenced, TypeRelationId, oper->oprresult);
        recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
    }
 
@@ -838,27 +828,21 @@ makeOperatorDependencies(HeapTuple tuple, bool isUpdate)
    /* Dependency on implementation function */
    if (OidIsValid(oper->oprcode))
    {
-       referenced.classId = ProcedureRelationId;
-       referenced.objectId = oper->oprcode;
-       referenced.objectSubId = 0;
+       ObjectAddressSet(referenced, ProcedureRelationId, oper->oprcode);
        recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
    }
 
    /* Dependency on restriction selectivity function */
    if (OidIsValid(oper->oprrest))
    {
-       referenced.classId = ProcedureRelationId;
-       referenced.objectId = oper->oprrest;
-       referenced.objectSubId = 0;
+       ObjectAddressSet(referenced, ProcedureRelationId, oper->oprrest);
        recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
    }
 
    /* Dependency on join selectivity function */
    if (OidIsValid(oper->oprjoin))
    {
-       referenced.classId = ProcedureRelationId;
-       referenced.objectId = oper->oprjoin;
-       referenced.objectSubId = 0;
+       ObjectAddressSet(referenced, ProcedureRelationId, oper->oprjoin);
        recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
    }
 
index 6cdda35d1c97660116258fc87c63baceb821b5a4..a28ab74d6086ab3cc457297e8c86fd0aa4b71385 100644 (file)
@@ -585,51 +585,37 @@ ProcedureCreate(const char *procedureName,
    if (is_update)
        deleteDependencyRecordsFor(ProcedureRelationId, retval, true);
 
-   myself.classId = ProcedureRelationId;
-   myself.objectId = retval;
-   myself.objectSubId = 0;
+   ObjectAddressSet(myself, ProcedureRelationId, retval);
 
    /* dependency on namespace */
-   referenced.classId = NamespaceRelationId;
-   referenced.objectId = procNamespace;
-   referenced.objectSubId = 0;
+   ObjectAddressSet(referenced, NamespaceRelationId, procNamespace);
    recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
 
    /* dependency on implementation language */
-   referenced.classId = LanguageRelationId;
-   referenced.objectId = languageObjectId;
-   referenced.objectSubId = 0;
+   ObjectAddressSet(referenced, LanguageRelationId, languageObjectId);
    recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
 
    /* dependency on return type */
-   referenced.classId = TypeRelationId;
-   referenced.objectId = returnType;
-   referenced.objectSubId = 0;
+   ObjectAddressSet(referenced, TypeRelationId, returnType);
    recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
 
    /* dependency on transform used by return type, if any */
    if ((trfid = get_transform_oid(returnType, languageObjectId, true)))
    {
-       referenced.classId = TransformRelationId;
-       referenced.objectId = trfid;
-       referenced.objectSubId = 0;
+       ObjectAddressSet(referenced, TransformRelationId, trfid);
        recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
    }
 
    /* dependency on parameter types */
    for (i = 0; i < allParamCount; i++)
    {
-       referenced.classId = TypeRelationId;
-       referenced.objectId = allParams[i];
-       referenced.objectSubId = 0;
+       ObjectAddressSet(referenced, TypeRelationId, allParams[i]);
        recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
 
        /* dependency on transform used by parameter type, if any */
        if ((trfid = get_transform_oid(allParams[i], languageObjectId, true)))
        {
-           referenced.classId = TransformRelationId;
-           referenced.objectId = trfid;
-           referenced.objectSubId = 0;
+           ObjectAddressSet(referenced, TransformRelationId, trfid);
            recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
        }
    }
@@ -642,9 +628,7 @@ ProcedureCreate(const char *procedureName,
    /* dependency on support function, if any */
    if (OidIsValid(prosupport))
    {
-       referenced.classId = ProcedureRelationId;
-       referenced.objectId = prosupport;
-       referenced.objectSubId = 0;
+       ObjectAddressSet(referenced, ProcedureRelationId, prosupport);
        recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
    }