]> granicus.if.org Git - postgresql/commitdiff
Tweak catalog indexing abstraction for upcoming WARM
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 31 Jan 2017 21:42:24 +0000 (18:42 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 31 Jan 2017 21:42:24 +0000 (18:42 -0300)
Split the existing CatalogUpdateIndexes into two different routines,
CatalogTupleInsert and CatalogTupleUpdate, which do both the heap
insert/update plus the index update.  This removes over 300 lines of
boilerplate code all over src/backend/catalog/ and src/backend/commands.
The resulting code is much more pleasing to the eye.

Also, by encapsulating what happens in detail during an UPDATE, this
facilitates the upcoming WARM patch, which is going to add a few more
lines to the update case making the boilerplate even more boring.

The original CatalogUpdateIndexes is removed; there was only one use
left, and since it's just three lines, we can as well expand it in place
there.  We could keep it, but WARM is going to break all the UPDATE
out-of-core callsites anyway, so there seems to be no benefit in doing
so.

Author: Pavan Deolasee
Discussion: https://www.postgr.es/m/CABOikdOcFYSZ4vA2gYfs=M2cdXzXX4qGHeEiW3fu9PCfkHLa2A@mail.gmail.com

52 files changed:
src/backend/catalog/aclchk.c
src/backend/catalog/heap.c
src/backend/catalog/index.c
src/backend/catalog/indexing.c
src/backend/catalog/pg_aggregate.c
src/backend/catalog/pg_collation.c
src/backend/catalog/pg_constraint.c
src/backend/catalog/pg_conversion.c
src/backend/catalog/pg_db_role_setting.c
src/backend/catalog/pg_depend.c
src/backend/catalog/pg_enum.c
src/backend/catalog/pg_largeobject.c
src/backend/catalog/pg_namespace.c
src/backend/catalog/pg_operator.c
src/backend/catalog/pg_proc.c
src/backend/catalog/pg_publication.c
src/backend/catalog/pg_range.c
src/backend/catalog/pg_shdepend.c
src/backend/catalog/pg_type.c
src/backend/catalog/toasting.c
src/backend/commands/alter.c
src/backend/commands/amcmds.c
src/backend/commands/analyze.c
src/backend/commands/cluster.c
src/backend/commands/comment.c
src/backend/commands/dbcommands.c
src/backend/commands/event_trigger.c
src/backend/commands/extension.c
src/backend/commands/foreigncmds.c
src/backend/commands/functioncmds.c
src/backend/commands/matview.c
src/backend/commands/opclasscmds.c
src/backend/commands/operatorcmds.c
src/backend/commands/policy.c
src/backend/commands/proclang.c
src/backend/commands/publicationcmds.c
src/backend/commands/schemacmds.c
src/backend/commands/seclabel.c
src/backend/commands/sequence.c
src/backend/commands/subscriptioncmds.c
src/backend/commands/tablecmds.c
src/backend/commands/tablespace.c
src/backend/commands/trigger.c
src/backend/commands/tsearchcmds.c
src/backend/commands/typecmds.c
src/backend/commands/user.c
src/backend/replication/logical/origin.c
src/backend/rewrite/rewriteDefine.c
src/backend/rewrite/rewriteSupport.c
src/backend/storage/large_object/inv_api.c
src/backend/utils/cache/relcache.c
src/include/catalog/indexing.h

index 00a9aea556543574952ee2018a47c3a78defbb33..e73226dc8135afe921763e6065a7042ea7ac6626 100644 (file)
@@ -1252,7 +1252,7 @@ SetDefaultACL(InternalDefaultACL *iacls)
                        values[Anum_pg_default_acl_defaclacl - 1] = PointerGetDatum(new_acl);
 
                        newtuple = heap_form_tuple(RelationGetDescr(rel), values, nulls);
-                       simple_heap_insert(rel, newtuple);
+                       CatalogTupleInsert(rel, newtuple);
                }
                else
                {
@@ -1262,12 +1262,9 @@ SetDefaultACL(InternalDefaultACL *iacls)
 
                        newtuple = heap_modify_tuple(tuple, RelationGetDescr(rel),
                                                                                 values, nulls, replaces);
-                       simple_heap_update(rel, &newtuple->t_self, newtuple);
+                       CatalogTupleUpdate(rel, &newtuple->t_self, newtuple);
                }
 
-               /* keep the catalog indexes up to date */
-               CatalogUpdateIndexes(rel, newtuple);
-
                /* these dependencies don't change in an update */
                if (isNew)
                {
@@ -1697,10 +1694,7 @@ ExecGrant_Attribute(InternalGrant *istmt, Oid relOid, const char *relname,
                newtuple = heap_modify_tuple(attr_tuple, RelationGetDescr(attRelation),
                                                                         values, nulls, replaces);
 
-               simple_heap_update(attRelation, &newtuple->t_self, newtuple);
-
-               /* keep the catalog indexes up to date */
-               CatalogUpdateIndexes(attRelation, newtuple);
+               CatalogTupleUpdate(attRelation, &newtuple->t_self, newtuple);
 
                /* Update initial privileges for extensions */
                recordExtensionInitPriv(relOid, RelationRelationId, attnum,
@@ -1963,10 +1957,7 @@ ExecGrant_Relation(InternalGrant *istmt)
                        newtuple = heap_modify_tuple(tuple, RelationGetDescr(relation),
                                                                                 values, nulls, replaces);
 
-                       simple_heap_update(relation, &newtuple->t_self, newtuple);
-
-                       /* keep the catalog indexes up to date */
-                       CatalogUpdateIndexes(relation, newtuple);
+                       CatalogTupleUpdate(relation, &newtuple->t_self, newtuple);
 
                        /* Update initial privileges for extensions */
                        recordExtensionInitPriv(relOid, RelationRelationId, 0, new_acl);
@@ -2156,10 +2147,7 @@ ExecGrant_Database(InternalGrant *istmt)
                newtuple = heap_modify_tuple(tuple, RelationGetDescr(relation), values,
                                                                         nulls, replaces);
 
-               simple_heap_update(relation, &newtuple->t_self, newtuple);
-
-               /* keep the catalog indexes up to date */
-               CatalogUpdateIndexes(relation, newtuple);
+               CatalogTupleUpdate(relation, &newtuple->t_self, newtuple);
 
                /* Update the shared dependency ACL info */
                updateAclDependencies(DatabaseRelationId, HeapTupleGetOid(tuple), 0,
@@ -2281,10 +2269,7 @@ ExecGrant_Fdw(InternalGrant *istmt)
                newtuple = heap_modify_tuple(tuple, RelationGetDescr(relation), values,
                                                                         nulls, replaces);
 
-               simple_heap_update(relation, &newtuple->t_self, newtuple);
-
-               /* keep the catalog indexes up to date */
-               CatalogUpdateIndexes(relation, newtuple);
+               CatalogTupleUpdate(relation, &newtuple->t_self, newtuple);
 
                /* Update initial privileges for extensions */
                recordExtensionInitPriv(fdwid, ForeignDataWrapperRelationId, 0,
@@ -2410,10 +2395,7 @@ ExecGrant_ForeignServer(InternalGrant *istmt)
                newtuple = heap_modify_tuple(tuple, RelationGetDescr(relation), values,
                                                                         nulls, replaces);
 
-               simple_heap_update(relation, &newtuple->t_self, newtuple);
-
-               /* keep the catalog indexes up to date */
-               CatalogUpdateIndexes(relation, newtuple);
+               CatalogTupleUpdate(relation, &newtuple->t_self, newtuple);
 
                /* Update initial privileges for extensions */
                recordExtensionInitPriv(srvid, ForeignServerRelationId, 0, new_acl);
@@ -2537,10 +2519,7 @@ ExecGrant_Function(InternalGrant *istmt)
                newtuple = heap_modify_tuple(tuple, RelationGetDescr(relation), values,
                                                                         nulls, replaces);
 
-               simple_heap_update(relation, &newtuple->t_self, newtuple);
-
-               /* keep the catalog indexes up to date */
-               CatalogUpdateIndexes(relation, newtuple);
+               CatalogTupleUpdate(relation, &newtuple->t_self, newtuple);
 
                /* Update initial privileges for extensions */
                recordExtensionInitPriv(funcId, ProcedureRelationId, 0, new_acl);
@@ -2671,10 +2650,7 @@ ExecGrant_Language(InternalGrant *istmt)
                newtuple = heap_modify_tuple(tuple, RelationGetDescr(relation), values,
                                                                         nulls, replaces);
 
-               simple_heap_update(relation, &newtuple->t_self, newtuple);
-
-               /* keep the catalog indexes up to date */
-               CatalogUpdateIndexes(relation, newtuple);
+               CatalogTupleUpdate(relation, &newtuple->t_self, newtuple);
 
                /* Update initial privileges for extensions */
                recordExtensionInitPriv(langId, LanguageRelationId, 0, new_acl);
@@ -2813,10 +2789,7 @@ ExecGrant_Largeobject(InternalGrant *istmt)
                newtuple = heap_modify_tuple(tuple, RelationGetDescr(relation),
                                                                         values, nulls, replaces);
 
-               simple_heap_update(relation, &newtuple->t_self, newtuple);
-
-               /* keep the catalog indexes up to date */
-               CatalogUpdateIndexes(relation, newtuple);
+               CatalogTupleUpdate(relation, &newtuple->t_self, newtuple);
 
                /* Update initial privileges for extensions */
                recordExtensionInitPriv(loid, LargeObjectRelationId, 0, new_acl);
@@ -2941,10 +2914,7 @@ ExecGrant_Namespace(InternalGrant *istmt)
                newtuple = heap_modify_tuple(tuple, RelationGetDescr(relation), values,
                                                                         nulls, replaces);
 
-               simple_heap_update(relation, &newtuple->t_self, newtuple);
-
-               /* keep the catalog indexes up to date */
-               CatalogUpdateIndexes(relation, newtuple);
+               CatalogTupleUpdate(relation, &newtuple->t_self, newtuple);
 
                /* Update initial privileges for extensions */
                recordExtensionInitPriv(nspid, NamespaceRelationId, 0, new_acl);
@@ -3068,10 +3038,7 @@ ExecGrant_Tablespace(InternalGrant *istmt)
                newtuple = heap_modify_tuple(tuple, RelationGetDescr(relation), values,
                                                                         nulls, replaces);
 
-               simple_heap_update(relation, &newtuple->t_self, newtuple);
-
-               /* keep the catalog indexes up to date */
-               CatalogUpdateIndexes(relation, newtuple);
+               CatalogTupleUpdate(relation, &newtuple->t_self, newtuple);
 
                /* Update the shared dependency ACL info */
                updateAclDependencies(TableSpaceRelationId, tblId, 0,
@@ -3205,10 +3172,7 @@ ExecGrant_Type(InternalGrant *istmt)
                newtuple = heap_modify_tuple(tuple, RelationGetDescr(relation), values,
                                                                         nulls, replaces);
 
-               simple_heap_update(relation, &newtuple->t_self, newtuple);
-
-               /* keep the catalog indexes up to date */
-               CatalogUpdateIndexes(relation, newtuple);
+               CatalogTupleUpdate(relation, &newtuple->t_self, newtuple);
 
                /* Update initial privileges for extensions */
                recordExtensionInitPriv(typId, TypeRelationId, 0, new_acl);
@@ -5751,10 +5715,7 @@ recordExtensionInitPrivWorker(Oid objoid, Oid classoid, int objsubid, Acl *new_a
                        oldtuple = heap_modify_tuple(oldtuple, RelationGetDescr(relation),
                                                                                 values, nulls, replace);
 
-                       simple_heap_update(relation, &oldtuple->t_self, oldtuple);
-
-                       /* keep the catalog indexes up to date */
-                       CatalogUpdateIndexes(relation, oldtuple);
+                       CatalogTupleUpdate(relation, &oldtuple->t_self, oldtuple);
                }
                else
                        /* new_acl is NULL, so delete the entry we found. */
@@ -5788,10 +5749,7 @@ recordExtensionInitPrivWorker(Oid objoid, Oid classoid, int objsubid, Acl *new_a
 
                        tuple = heap_form_tuple(RelationGetDescr(relation), values, nulls);
 
-                       simple_heap_insert(relation, tuple);
-
-                       /* keep the catalog indexes up to date */
-                       CatalogUpdateIndexes(relation, tuple);
+                       CatalogTupleInsert(relation, tuple);
                }
        }
 
index 7ce911583256fbae730d293d5a1372e070231569..cb6b6eb46cddc1b1cc06c91f97aeaab8b8afdbec 100644 (file)
@@ -635,7 +635,13 @@ InsertPgAttributeTuple(Relation pg_attribute_rel,
        if (indstate != NULL)
                CatalogIndexInsert(indstate, tup);
        else
-               CatalogUpdateIndexes(pg_attribute_rel, tup);
+       {
+               CatalogIndexState indstate;
+
+               indstate = CatalogOpenIndexes(pg_attribute_rel);
+               CatalogIndexInsert(indstate, tup);
+               CatalogCloseIndexes(indstate);
+       }
 
        heap_freetuple(tup);
 }
@@ -824,9 +830,7 @@ InsertPgClassTuple(Relation pg_class_desc,
        HeapTupleSetOid(tup, new_rel_oid);
 
        /* finally insert the new tuple, update the indexes, and clean up */
-       simple_heap_insert(pg_class_desc, tup);
-
-       CatalogUpdateIndexes(pg_class_desc, tup);
+       CatalogTupleInsert(pg_class_desc, tup);
 
        heap_freetuple(tup);
 }
@@ -1599,10 +1603,7 @@ RemoveAttributeById(Oid relid, AttrNumber attnum)
                                 "........pg.dropped.%d........", attnum);
                namestrcpy(&(attStruct->attname), newattname);
 
-               simple_heap_update(attr_rel, &tuple->t_self, tuple);
-
-               /* keep the system catalog indexes current */
-               CatalogUpdateIndexes(attr_rel, tuple);
+               CatalogTupleUpdate(attr_rel, &tuple->t_self, tuple);
        }
 
        /*
@@ -1731,10 +1732,7 @@ RemoveAttrDefaultById(Oid attrdefId)
 
        ((Form_pg_attribute) GETSTRUCT(tuple))->atthasdef = false;
 
-       simple_heap_update(attr_rel, &tuple->t_self, tuple);
-
-       /* keep the system catalog indexes current */
-       CatalogUpdateIndexes(attr_rel, tuple);
+       CatalogTupleUpdate(attr_rel, &tuple->t_self, tuple);
 
        /*
         * Our update of the pg_attribute row will force a relcache rebuild, so
@@ -1932,9 +1930,7 @@ StoreAttrDefault(Relation rel, AttrNumber attnum,
        adrel = heap_open(AttrDefaultRelationId, RowExclusiveLock);
 
        tuple = heap_form_tuple(adrel->rd_att, values, nulls);
-       attrdefOid = simple_heap_insert(adrel, tuple);
-
-       CatalogUpdateIndexes(adrel, tuple);
+       attrdefOid = CatalogTupleInsert(adrel, tuple);
 
        defobject.classId = AttrDefaultRelationId;
        defobject.objectId = attrdefOid;
@@ -1964,9 +1960,7 @@ StoreAttrDefault(Relation rel, AttrNumber attnum,
        if (!attStruct->atthasdef)
        {
                attStruct->atthasdef = true;
-               simple_heap_update(attrrel, &atttup->t_self, atttup);
-               /* keep catalog indexes current */
-               CatalogUpdateIndexes(attrrel, atttup);
+               CatalogTupleUpdate(attrrel, &atttup->t_self, atttup);
        }
        heap_close(attrrel, RowExclusiveLock);
        heap_freetuple(atttup);
@@ -2561,8 +2555,7 @@ MergeWithExistingConstraint(Relation rel, char *ccname, Node *expr,
                                Assert(is_local);
                                con->connoinherit = true;
                        }
-                       simple_heap_update(conDesc, &tup->t_self, tup);
-                       CatalogUpdateIndexes(conDesc, tup);
+                       CatalogTupleUpdate(conDesc, &tup->t_self, tup);
                        break;
                }
        }
@@ -2602,10 +2595,7 @@ SetRelationNumChecks(Relation rel, int numchecks)
        {
                relStruct->relchecks = numchecks;
 
-               simple_heap_update(relrel, &reltup->t_self, reltup);
-
-               /* keep catalog indexes current */
-               CatalogUpdateIndexes(relrel, reltup);
+               CatalogTupleUpdate(relrel, &reltup->t_self, reltup);
        }
        else
        {
@@ -3145,10 +3135,7 @@ StorePartitionKey(Relation rel,
 
        tuple = heap_form_tuple(RelationGetDescr(pg_partitioned_table), values, nulls);
 
-       simple_heap_insert(pg_partitioned_table, tuple);
-
-       /* Update the indexes on pg_partitioned_table */
-       CatalogUpdateIndexes(pg_partitioned_table, tuple);
+       CatalogTupleInsert(pg_partitioned_table, tuple);
        heap_close(pg_partitioned_table, RowExclusiveLock);
 
        /* Mark this relation as dependent on a few things as follows */
@@ -3265,8 +3252,7 @@ StorePartitionBound(Relation rel, Relation parent, Node *bound)
                                                                 new_val, new_null, new_repl);
        /* Also set the flag */
        ((Form_pg_class) GETSTRUCT(newtuple))->relispartition = true;
-       simple_heap_update(classRel, &newtuple->t_self, newtuple);
-       CatalogUpdateIndexes(classRel, newtuple);
+       CatalogTupleUpdate(classRel, &newtuple->t_self, newtuple);
        heap_freetuple(newtuple);
        heap_close(classRel, RowExclusiveLock);
 
index 26cbc0e06aa24855e5521a07f56103a7f9f2876d..618e170b6bf7d09389156b7abf1d8d0f03070b07 100644 (file)
@@ -649,10 +649,7 @@ UpdateIndexRelation(Oid indexoid,
        /*
         * insert the tuple into the pg_index catalog
         */
-       simple_heap_insert(pg_index, tuple);
-
-       /* update the indexes on pg_index */
-       CatalogUpdateIndexes(pg_index, tuple);
+       CatalogTupleInsert(pg_index, tuple);
 
        /*
         * close the relation and free the tuple
@@ -1324,8 +1321,7 @@ index_constraint_create(Relation heapRelation,
 
                if (dirty)
                {
-                       simple_heap_update(pg_index, &indexTuple->t_self, indexTuple);
-                       CatalogUpdateIndexes(pg_index, indexTuple);
+                       CatalogTupleUpdate(pg_index, &indexTuple->t_self, indexTuple);
 
                        InvokeObjectPostAlterHookArg(IndexRelationId, indexRelationId, 0,
                                                                                 InvalidOid, is_internal);
@@ -2103,8 +2099,7 @@ index_build(Relation heapRelation,
                Assert(!indexForm->indcheckxmin);
 
                indexForm->indcheckxmin = true;
-               simple_heap_update(pg_index, &indexTuple->t_self, indexTuple);
-               CatalogUpdateIndexes(pg_index, indexTuple);
+               CatalogTupleUpdate(pg_index, &indexTuple->t_self, indexTuple);
 
                heap_freetuple(indexTuple);
                heap_close(pg_index, RowExclusiveLock);
@@ -3448,8 +3443,7 @@ reindex_index(Oid indexId, bool skip_constraint_checks, char persistence,
                        indexForm->indisvalid = true;
                        indexForm->indisready = true;
                        indexForm->indislive = true;
-                       simple_heap_update(pg_index, &indexTuple->t_self, indexTuple);
-                       CatalogUpdateIndexes(pg_index, indexTuple);
+                       CatalogTupleUpdate(pg_index, &indexTuple->t_self, indexTuple);
 
                        /*
                         * Invalidate the relcache for the table, so that after we commit
index 1915ca37799a1c6ba93c8945642cf86b603b6da7..c26765ab00ee1a89bcef0768da0cd611700fc416 100644 (file)
@@ -146,19 +146,49 @@ CatalogIndexInsert(CatalogIndexState indstate, HeapTuple heapTuple)
 }
 
 /*
- * CatalogUpdateIndexes - do all the indexing work for a new catalog tuple
+ * CatalogTupleInsert - do heap and indexing work for a new catalog tuple
  *
- * This is a convenience routine for the common case where we only need
- * to insert or update a single tuple in a system catalog.  Avoid using it for
- * multiple tuples, since opening the indexes and building the index info
- * structures is moderately expensive.
+ * This is a convenience routine for the common case of inserting a single
+ * tuple in a system catalog; it inserts a new heap tuple, keeping indexes
+ * current.  Avoid using it for multiple tuples, since opening the indexes and
+ * building the index info structures is moderately expensive.
+ *
+ * The Oid of the inserted tuple is returned.
+ */
+Oid
+CatalogTupleInsert(Relation heapRel, HeapTuple tup)
+{
+       CatalogIndexState indstate;
+       Oid             oid;
+
+       indstate = CatalogOpenIndexes(heapRel);
+
+       oid = simple_heap_insert(heapRel, tup);
+
+       CatalogIndexInsert(indstate, tup);
+       CatalogCloseIndexes(indstate);
+
+       return oid;
+}
+
+/*
+ * CatalogTupleUpdate - do heap and indexing work for updating a catalog tuple
+ *
+ * This is a convenience routine for the common case of updating a single
+ * tuple in a system catalog; it updates one heap tuple (identified by otid)
+ * with tup, keeping indexes current.  Avoid using it for multiple tuples,
+ * since opening the indexes and building the index info structures is
+ * moderately expensive.
  */
 void
-CatalogUpdateIndexes(Relation heapRel, HeapTuple heapTuple)
+CatalogTupleUpdate(Relation heapRel, ItemPointer otid, HeapTuple tup)
 {
        CatalogIndexState indstate;
 
        indstate = CatalogOpenIndexes(heapRel);
-       CatalogIndexInsert(indstate, heapTuple);
+
+       simple_heap_update(heapRel, otid, tup);
+
+       CatalogIndexInsert(indstate, tup);
        CatalogCloseIndexes(indstate);
 }
index 3a4e22f0d60de9c9186a824f09e78c059e97a1ef..ac06823999de236abe4f9c3bdb02acd1a24fcfe4 100644 (file)
@@ -674,9 +674,7 @@ AggregateCreate(const char *aggName,
        tupDesc = aggdesc->rd_att;
 
        tup = heap_form_tuple(tupDesc, values, nulls);
-       simple_heap_insert(aggdesc, tup);
-
-       CatalogUpdateIndexes(aggdesc, tup);
+       CatalogTupleInsert(aggdesc, tup);
 
        heap_close(aggdesc, RowExclusiveLock);
 
index 694c0f67f55432f18d100b05d8fc81907871412f..686d392123a4dd5a34cebc6d921a60d6212a22b5 100644 (file)
@@ -134,12 +134,9 @@ CollationCreate(const char *collname, Oid collnamespace,
        tup = heap_form_tuple(tupDesc, values, nulls);
 
        /* insert a new tuple */
-       oid = simple_heap_insert(rel, tup);
+       oid = CatalogTupleInsert(rel, tup);
        Assert(OidIsValid(oid));
 
-       /* update the index if any */
-       CatalogUpdateIndexes(rel, tup);
-
        /* set up dependencies for the new collation */
        myself.classId = CollationRelationId;
        myself.objectId = oid;
index b5a0ce95c12a6baa4d9389b990a4e7f1bd484a1b..cf43f7e29b0006f972f02cdcc727fca6f88b846d 100644 (file)
@@ -226,10 +226,7 @@ CreateConstraintEntry(const char *constraintName,
 
        tup = heap_form_tuple(RelationGetDescr(conDesc), values, nulls);
 
-       conOid = simple_heap_insert(conDesc, tup);
-
-       /* update catalog indexes */
-       CatalogUpdateIndexes(conDesc, tup);
+       conOid = CatalogTupleInsert(conDesc, tup);
 
        conobject.classId = ConstraintRelationId;
        conobject.objectId = conOid;
@@ -584,9 +581,7 @@ RemoveConstraintById(Oid conId)
                                         RelationGetRelationName(rel));
                        classForm->relchecks--;
 
-                       simple_heap_update(pgrel, &relTup->t_self, relTup);
-
-                       CatalogUpdateIndexes(pgrel, relTup);
+                       CatalogTupleUpdate(pgrel, &relTup->t_self, relTup);
 
                        heap_freetuple(relTup);
 
@@ -666,10 +661,7 @@ RenameConstraintById(Oid conId, const char *newname)
        /* OK, do the rename --- tuple is a copy, so OK to scribble on it */
        namestrcpy(&(con->conname), newname);
 
-       simple_heap_update(conDesc, &tuple->t_self, tuple);
-
-       /* update the system catalog indexes */
-       CatalogUpdateIndexes(conDesc, tuple);
+       CatalogTupleUpdate(conDesc, &tuple->t_self, tuple);
 
        InvokeObjectPostAlterHook(ConstraintRelationId, conId, 0);
 
@@ -736,8 +728,7 @@ AlterConstraintNamespaces(Oid ownerId, Oid oldNspId,
 
                        conform->connamespace = newNspId;
 
-                       simple_heap_update(conRel, &tup->t_self, tup);
-                       CatalogUpdateIndexes(conRel, tup);
+                       CatalogTupleUpdate(conRel, &tup->t_self, tup);
 
                        /*
                         * Note: currently, the constraint will not have its own
index adaf7b8ee6b5cf8efbcd2de8e347117931ce7480..d1e2b93086c216db54942406d1da8cff27c6554d 100644 (file)
@@ -105,10 +105,7 @@ ConversionCreate(const char *conname, Oid connamespace,
        tup = heap_form_tuple(tupDesc, values, nulls);
 
        /* insert a new tuple */
-       simple_heap_insert(rel, tup);
-
-       /* update the index if any */
-       CatalogUpdateIndexes(rel, tup);
+       CatalogTupleInsert(rel, tup);
 
        myself.classId = ConversionRelationId;
        myself.objectId = HeapTupleGetOid(tup);
index 117cc8d1eb1957e8cb8046c766194979a75985bd..3dfe9ac5a7dd695222f0049c47834351c9986f8e 100644 (file)
@@ -88,10 +88,7 @@ AlterSetting(Oid databaseid, Oid roleid, VariableSetStmt *setstmt)
 
                                newtuple = heap_modify_tuple(tuple, RelationGetDescr(rel),
                                                                                         repl_val, repl_null, repl_repl);
-                               simple_heap_update(rel, &tuple->t_self, newtuple);
-
-                               /* Update indexes */
-                               CatalogUpdateIndexes(rel, newtuple);
+                               CatalogTupleUpdate(rel, &tuple->t_self, newtuple);
                        }
                        else
                                simple_heap_delete(rel, &tuple->t_self);
@@ -129,10 +126,7 @@ AlterSetting(Oid databaseid, Oid roleid, VariableSetStmt *setstmt)
 
                        newtuple = heap_modify_tuple(tuple, RelationGetDescr(rel),
                                                                                 repl_val, repl_null, repl_repl);
-                       simple_heap_update(rel, &tuple->t_self, newtuple);
-
-                       /* Update indexes */
-                       CatalogUpdateIndexes(rel, newtuple);
+                       CatalogTupleUpdate(rel, &tuple->t_self, newtuple);
                }
                else
                        simple_heap_delete(rel, &tuple->t_self);
@@ -155,10 +149,7 @@ AlterSetting(Oid databaseid, Oid roleid, VariableSetStmt *setstmt)
                values[Anum_pg_db_role_setting_setconfig - 1] = PointerGetDatum(a);
                newtuple = heap_form_tuple(RelationGetDescr(rel), values, nulls);
 
-               simple_heap_insert(rel, newtuple);
-
-               /* Update indexes */
-               CatalogUpdateIndexes(rel, newtuple);
+               CatalogTupleInsert(rel, newtuple);
        }
 
        InvokeObjectPostAlterHookArg(DbRoleSettingRelationId,
index b71fa1b981179662abcf51821bc82b9deb1dfba5..e114a9cdfefc2f867113f4320d4cdec77cb75706 100644 (file)
@@ -362,8 +362,7 @@ changeDependencyFor(Oid classId, Oid objectId,
 
                                depform->refobjid = newRefObjectId;
 
-                               simple_heap_update(depRel, &tup->t_self, tup);
-                               CatalogUpdateIndexes(depRel, tup);
+                               CatalogTupleUpdate(depRel, &tup->t_self, tup);
 
                                heap_freetuple(tup);
                        }
index 089a9a0a6582e569112271f4d3228636f1d387e1..1fc6f7c6b4e302e1d3dbabb68ef006faa50c9c9e 100644 (file)
@@ -125,8 +125,7 @@ EnumValuesCreate(Oid enumTypeOid, List *vals)
                tup = heap_form_tuple(RelationGetDescr(pg_enum), values, nulls);
                HeapTupleSetOid(tup, oids[elemno]);
 
-               simple_heap_insert(pg_enum, tup);
-               CatalogUpdateIndexes(pg_enum, tup);
+               CatalogTupleInsert(pg_enum, tup);
                heap_freetuple(tup);
 
                elemno++;
@@ -458,8 +457,7 @@ restart:
        values[Anum_pg_enum_enumlabel - 1] = NameGetDatum(&enumlabel);
        enum_tup = heap_form_tuple(RelationGetDescr(pg_enum), values, nulls);
        HeapTupleSetOid(enum_tup, newOid);
-       simple_heap_insert(pg_enum, enum_tup);
-       CatalogUpdateIndexes(pg_enum, enum_tup);
+       CatalogTupleInsert(pg_enum, enum_tup);
        heap_freetuple(enum_tup);
 
        heap_close(pg_enum, RowExclusiveLock);
@@ -543,8 +541,7 @@ RenameEnumLabel(Oid enumTypeOid,
 
        /* Update the pg_enum entry */
        namestrcpy(&en->enumlabel, newVal);
-       simple_heap_update(pg_enum, &enum_tup->t_self, enum_tup);
-       CatalogUpdateIndexes(pg_enum, enum_tup);
+       CatalogTupleUpdate(pg_enum, &enum_tup->t_self, enum_tup);
        heap_freetuple(enum_tup);
 
        heap_close(pg_enum, RowExclusiveLock);
@@ -597,9 +594,7 @@ RenumberEnumType(Relation pg_enum, HeapTuple *existing, int nelems)
                {
                        en->enumsortorder = newsortorder;
 
-                       simple_heap_update(pg_enum, &newtup->t_self, newtup);
-
-                       CatalogUpdateIndexes(pg_enum, newtup);
+                       CatalogTupleUpdate(pg_enum, &newtup->t_self, newtup);
                }
 
                heap_freetuple(newtup);
index 24edf6a6b617066f0c535a057e018ceb93d74eaf..754ad9f79c293b7f3bbd19d1f2e19dc149e10cdc 100644 (file)
@@ -63,11 +63,9 @@ LargeObjectCreate(Oid loid)
        if (OidIsValid(loid))
                HeapTupleSetOid(ntup, loid);
 
-       loid_new = simple_heap_insert(pg_lo_meta, ntup);
+       loid_new = CatalogTupleInsert(pg_lo_meta, ntup);
        Assert(!OidIsValid(loid) || loid == loid_new);
 
-       CatalogUpdateIndexes(pg_lo_meta, ntup);
-
        heap_freetuple(ntup);
 
        heap_close(pg_lo_meta, RowExclusiveLock);
index f048ad420781b043c00e5a3c6c730caaa8a2332d..5672536d31c4bc6b968770936dee81503ea65936 100644 (file)
@@ -76,11 +76,9 @@ NamespaceCreate(const char *nspName, Oid ownerId, bool isTemp)
 
        tup = heap_form_tuple(tupDesc, values, nulls);
 
-       nspoid = simple_heap_insert(nspdesc, tup);
+       nspoid = CatalogTupleInsert(nspdesc, tup);
        Assert(OidIsValid(nspoid));
 
-       CatalogUpdateIndexes(nspdesc, tup);
-
        heap_close(nspdesc, RowExclusiveLock);
 
        /* Record dependencies */
index 556f9fef13c10d212fe46a2db1c814f63c9455ec..b5cbc04889abc495e78d899e63b4c5716319ae38 100644 (file)
@@ -262,9 +262,7 @@ OperatorShellMake(const char *operatorName,
        /*
         * insert our "shell" operator tuple
         */
-       operatorObjectId = simple_heap_insert(pg_operator_desc, tup);
-
-       CatalogUpdateIndexes(pg_operator_desc, tup);
+       operatorObjectId = CatalogTupleInsert(pg_operator_desc, tup);
 
        /* Add dependencies for the entry */
        makeOperatorDependencies(tup, false);
@@ -526,7 +524,7 @@ OperatorCreate(const char *operatorName,
                                                                nulls,
                                                                replaces);
 
-               simple_heap_update(pg_operator_desc, &tup->t_self, tup);
+               CatalogTupleUpdate(pg_operator_desc, &tup->t_self, tup);
        }
        else
        {
@@ -535,12 +533,9 @@ OperatorCreate(const char *operatorName,
                tup = heap_form_tuple(RelationGetDescr(pg_operator_desc),
                                                          values, nulls);
 
-               operatorObjectId = simple_heap_insert(pg_operator_desc, tup);
+               operatorObjectId = CatalogTupleInsert(pg_operator_desc, tup);
        }
 
-       /* Must update the indexes in either case */
-       CatalogUpdateIndexes(pg_operator_desc, tup);
-
        /* Add dependencies for the entry */
        address = makeOperatorDependencies(tup, isUpdate);
 
@@ -695,8 +690,7 @@ OperatorUpd(Oid baseId, Oid commId, Oid negId, bool isDelete)
                /* If any columns were found to need modification, update tuple. */
                if (update_commutator)
                {
-                       simple_heap_update(pg_operator_desc, &tup->t_self, tup);
-                       CatalogUpdateIndexes(pg_operator_desc, tup);
+                       CatalogTupleUpdate(pg_operator_desc, &tup->t_self, tup);
 
                        /*
                         * Do CCI to make the updated tuple visible.  We must do this in
@@ -741,8 +735,7 @@ OperatorUpd(Oid baseId, Oid commId, Oid negId, bool isDelete)
                /* If any columns were found to need modification, update tuple. */
                if (update_negator)
                {
-                       simple_heap_update(pg_operator_desc, &tup->t_self, tup);
-                       CatalogUpdateIndexes(pg_operator_desc, tup);
+                       CatalogTupleUpdate(pg_operator_desc, &tup->t_self, tup);
 
                        /*
                         * In the deletion case, do CCI to make the updated tuple visible.
index 6ab849c6ef5eb36174ab0686c431b9ca8ef0fcac..ae278481163e7fb1c535d691dc9857aa2c3a8288 100644 (file)
@@ -572,7 +572,7 @@ ProcedureCreate(const char *procedureName,
 
                /* Okay, do it... */
                tup = heap_modify_tuple(oldtup, tupDesc, values, nulls, replaces);
-               simple_heap_update(rel, &tup->t_self, tup);
+               CatalogTupleUpdate(rel, &tup->t_self, tup);
 
                ReleaseSysCache(oldtup);
                is_update = true;
@@ -590,12 +590,10 @@ ProcedureCreate(const char *procedureName,
                        nulls[Anum_pg_proc_proacl - 1] = true;
 
                tup = heap_form_tuple(tupDesc, values, nulls);
-               simple_heap_insert(rel, tup);
+               CatalogTupleInsert(rel, tup);
                is_update = false;
        }
 
-       /* Need to update indexes for either the insert or update case */
-       CatalogUpdateIndexes(rel, tup);
 
        retval = HeapTupleGetOid(tup);
 
index 00ed28f0b2f6dbab702240bf7fd0d43170a04dbd..0f784690ce4dfd524fc1ec3feda69ec171f97725 100644 (file)
@@ -149,8 +149,7 @@ publication_add_relation(Oid pubid, Relation targetrel,
        tup = heap_form_tuple(RelationGetDescr(rel), values, nulls);
 
        /* Insert tuple into catalog. */
-       prrelid = simple_heap_insert(rel, tup);
-       CatalogUpdateIndexes(rel, tup);
+       prrelid = CatalogTupleInsert(rel, tup);
        heap_freetuple(tup);
 
        ObjectAddressSet(myself, PublicationRelRelationId, prrelid);
index d3a4c264b3c05cc87dc69bf77e7ecdee05b23344..fcbf374bd67e6ea7eb30896747b41f3b9c8991a4 100644 (file)
@@ -58,8 +58,7 @@ RangeCreate(Oid rangeTypeOid, Oid rangeSubType, Oid rangeCollation,
 
        tup = heap_form_tuple(RelationGetDescr(pg_range), values, nulls);
 
-       simple_heap_insert(pg_range, tup);
-       CatalogUpdateIndexes(pg_range, tup);
+       CatalogTupleInsert(pg_range, tup);
        heap_freetuple(tup);
 
        /* record type's dependencies on range-related items */
index 60ed957655e8e86d9c7ba9d69e8d9faf056ddbf1..4b68e05e519107b8a4b22335c021212466fa63d8 100644 (file)
@@ -260,10 +260,7 @@ shdepChangeDep(Relation sdepRel,
                shForm->refclassid = refclassid;
                shForm->refobjid = refobjid;
 
-               simple_heap_update(sdepRel, &oldtup->t_self, oldtup);
-
-               /* keep indexes current */
-               CatalogUpdateIndexes(sdepRel, oldtup);
+               CatalogTupleUpdate(sdepRel, &oldtup->t_self, oldtup);
        }
        else
        {
@@ -287,10 +284,7 @@ shdepChangeDep(Relation sdepRel,
                 * it's certainly a new tuple
                 */
                oldtup = heap_form_tuple(RelationGetDescr(sdepRel), values, nulls);
-               simple_heap_insert(sdepRel, oldtup);
-
-               /* keep indexes current */
-               CatalogUpdateIndexes(sdepRel, oldtup);
+               CatalogTupleInsert(sdepRel, oldtup);
        }
 
        if (oldtup)
@@ -759,10 +753,7 @@ copyTemplateDependencies(Oid templateDbId, Oid newDbId)
                HeapTuple       newtup;
 
                newtup = heap_modify_tuple(tup, sdepDesc, values, nulls, replace);
-               simple_heap_insert(sdepRel, newtup);
-
-               /* Keep indexes current */
-               CatalogIndexInsert(indstate, newtup);
+               CatalogTupleInsert(sdepRel, newtup);
 
                heap_freetuple(newtup);
        }
@@ -882,10 +873,7 @@ shdepAddDependency(Relation sdepRel,
 
        tup = heap_form_tuple(sdepRel->rd_att, values, nulls);
 
-       simple_heap_insert(sdepRel, tup);
-
-       /* keep indexes current */
-       CatalogUpdateIndexes(sdepRel, tup);
+       CatalogTupleInsert(sdepRel, tup);
 
        /* clean up */
        heap_freetuple(tup);
index 6d9a3247a92dae9828b4a73889f6558e5b41a787..04c10c6347b81183aa5c5ec3906bc0367672da29 100644 (file)
@@ -142,9 +142,7 @@ TypeShellMake(const char *typeName, Oid typeNamespace, Oid ownerId)
        /*
         * insert the tuple in the relation and get the tuple's oid.
         */
-       typoid = simple_heap_insert(pg_type_desc, tup);
-
-       CatalogUpdateIndexes(pg_type_desc, tup);
+       typoid = CatalogTupleInsert(pg_type_desc, tup);
 
        /*
         * Create dependencies.  We can/must skip this in bootstrap mode.
@@ -430,7 +428,7 @@ TypeCreate(Oid newTypeOid,
                                                                nulls,
                                                                replaces);
 
-               simple_heap_update(pg_type_desc, &tup->t_self, tup);
+               CatalogTupleUpdate(pg_type_desc, &tup->t_self, tup);
 
                typeObjectId = HeapTupleGetOid(tup);
 
@@ -458,12 +456,9 @@ TypeCreate(Oid newTypeOid,
                }
                /* else allow system to assign oid */
 
-               typeObjectId = simple_heap_insert(pg_type_desc, tup);
+               typeObjectId = CatalogTupleInsert(pg_type_desc, tup);
        }
 
-       /* Update indexes */
-       CatalogUpdateIndexes(pg_type_desc, tup);
-
        /*
         * Create dependencies.  We can/must skip this in bootstrap mode.
         */
@@ -724,10 +719,7 @@ RenameTypeInternal(Oid typeOid, const char *newTypeName, Oid typeNamespace)
        /* OK, do the rename --- tuple is a copy, so OK to scribble on it */
        namestrcpy(&(typ->typname), newTypeName);
 
-       simple_heap_update(pg_type_desc, &tuple->t_self, tuple);
-
-       /* update the system catalog indexes */
-       CatalogUpdateIndexes(pg_type_desc, tuple);
+       CatalogTupleUpdate(pg_type_desc, &tuple->t_self, tuple);
 
        InvokeObjectPostAlterHook(TypeRelationId, typeOid, 0);
 
index ee4a182e3529eacf8e0d64cd26c61331dd9b66ec..e5f773d51d0b2c6802352ecd7007f7df9ef835d3 100644 (file)
@@ -350,10 +350,7 @@ create_toast_table(Relation rel, Oid toastOid, Oid toastIndexOid,
        if (!IsBootstrapProcessingMode())
        {
                /* normal case, use a transactional update */
-               simple_heap_update(class_rel, &reltup->t_self, reltup);
-
-               /* Keep catalog indexes current */
-               CatalogUpdateIndexes(class_rel, reltup);
+               CatalogTupleUpdate(class_rel, &reltup->t_self, reltup);
        }
        else
        {
index 768fcc82ddce8949ca7728f390d19f16becdd9a1..d6195e49f5e8762cd7b96bd7ff7b1acc9c94e047 100644 (file)
@@ -284,8 +284,7 @@ AlterObjectRename_internal(Relation rel, Oid objectId, const char *new_name)
                                                           values, nulls, replaces);
 
        /* Perform actual update */
-       simple_heap_update(rel, &oldtup->t_self, newtup);
-       CatalogUpdateIndexes(rel, newtup);
+       CatalogTupleUpdate(rel, &oldtup->t_self, newtup);
 
        InvokeObjectPostAlterHook(classId, objectId, 0);
 
@@ -722,8 +721,7 @@ AlterObjectNamespace_internal(Relation rel, Oid objid, Oid nspOid)
                                                           values, nulls, replaces);
 
        /* Perform actual update */
-       simple_heap_update(rel, &tup->t_self, newtup);
-       CatalogUpdateIndexes(rel, newtup);
+       CatalogTupleUpdate(rel, &tup->t_self, newtup);
 
        /* Release memory */
        pfree(values);
@@ -954,8 +952,7 @@ AlterObjectOwner_internal(Relation rel, Oid objectId, Oid new_ownerId)
                                                                   values, nulls, replaces);
 
                /* Perform actual update */
-               simple_heap_update(rel, &newtup->t_self, newtup);
-               CatalogUpdateIndexes(rel, newtup);
+               CatalogTupleUpdate(rel, &newtup->t_self, newtup);
 
                /* Update owner dependency reference */
                if (classId == LargeObjectMetadataRelationId)
index 29061b888a24263bc2e176e5622895576252459f..b6e60469f397714ab595bc5ff357470c3bffd163 100644 (file)
@@ -87,8 +87,7 @@ CreateAccessMethod(CreateAmStmt *stmt)
 
        tup = heap_form_tuple(RelationGetDescr(rel), values, nulls);
 
-       amoid = simple_heap_insert(rel, tup);
-       CatalogUpdateIndexes(rel, tup);
+       amoid = CatalogTupleInsert(rel, tup);
        heap_freetuple(tup);
 
        myself.classId = AccessMethodRelationId;
index c9f6afeb1aa4a1cf9fa34df102348d059e9a908b..ed3acb1673a89941f250a9625e27079b20fe2127 100644 (file)
@@ -1589,18 +1589,15 @@ update_attstats(Oid relid, bool inh, int natts, VacAttrStats **vacattrstats)
                                                                         nulls,
                                                                         replaces);
                        ReleaseSysCache(oldtup);
-                       simple_heap_update(sd, &stup->t_self, stup);
+                       CatalogTupleUpdate(sd, &stup->t_self, stup);
                }
                else
                {
                        /* No, insert new tuple */
                        stup = heap_form_tuple(RelationGetDescr(sd), values, nulls);
-                       simple_heap_insert(sd, stup);
+                       CatalogTupleInsert(sd, stup);
                }
 
-               /* update indexes too */
-               CatalogUpdateIndexes(sd, stup);
-
                heap_freetuple(stup);
        }
 
index f9309fcf47ef43e4a4ad1b10468b353f9a2781f3..e60e6133155aad81300f26a73df17c92305a8bc9 100644 (file)
@@ -523,8 +523,7 @@ mark_index_clustered(Relation rel, Oid indexOid, bool is_internal)
                if (indexForm->indisclustered)
                {
                        indexForm->indisclustered = false;
-                       simple_heap_update(pg_index, &indexTuple->t_self, indexTuple);
-                       CatalogUpdateIndexes(pg_index, indexTuple);
+                       CatalogTupleUpdate(pg_index, &indexTuple->t_self, indexTuple);
                }
                else if (thisIndexOid == indexOid)
                {
@@ -532,8 +531,7 @@ mark_index_clustered(Relation rel, Oid indexOid, bool is_internal)
                        if (!IndexIsValid(indexForm))
                                elog(ERROR, "cannot cluster on invalid index %u", indexOid);
                        indexForm->indisclustered = true;
-                       simple_heap_update(pg_index, &indexTuple->t_self, indexTuple);
-                       CatalogUpdateIndexes(pg_index, indexTuple);
+                       CatalogTupleUpdate(pg_index, &indexTuple->t_self, indexTuple);
                }
 
                InvokeObjectPostAlterHookArg(IndexRelationId, thisIndexOid, 0,
@@ -1558,8 +1556,7 @@ finish_heap_swap(Oid OIDOldHeap, Oid OIDNewHeap,
                relform->relfrozenxid = frozenXid;
                relform->relminmxid = cutoffMulti;
 
-               simple_heap_update(relRelation, &reltup->t_self, reltup);
-               CatalogUpdateIndexes(relRelation, reltup);
+               CatalogTupleUpdate(relRelation, &reltup->t_self, reltup);
 
                heap_close(relRelation, RowExclusiveLock);
        }
index ada0b0356add475b3028b9b306e0bd8070966b1c..8a437de81549659b09ef95eafbd2a591f432c8c5 100644 (file)
@@ -199,7 +199,7 @@ CreateComments(Oid oid, Oid classoid, int32 subid, char *comment)
                {
                        newtuple = heap_modify_tuple(oldtuple, RelationGetDescr(description), values,
                                                                                 nulls, replaces);
-                       simple_heap_update(description, &oldtuple->t_self, newtuple);
+                       CatalogTupleUpdate(description, &oldtuple->t_self, newtuple);
                }
 
                break;                                  /* Assume there can be only one match */
@@ -213,15 +213,11 @@ CreateComments(Oid oid, Oid classoid, int32 subid, char *comment)
        {
                newtuple = heap_form_tuple(RelationGetDescr(description),
                                                                   values, nulls);
-               simple_heap_insert(description, newtuple);
+               CatalogTupleInsert(description, newtuple);
        }
 
-       /* Update indexes, if necessary */
        if (newtuple != NULL)
-       {
-               CatalogUpdateIndexes(description, newtuple);
                heap_freetuple(newtuple);
-       }
 
        /* Done */
 
@@ -293,7 +289,7 @@ CreateSharedComments(Oid oid, Oid classoid, char *comment)
                {
                        newtuple = heap_modify_tuple(oldtuple, RelationGetDescr(shdescription),
                                                                                 values, nulls, replaces);
-                       simple_heap_update(shdescription, &oldtuple->t_self, newtuple);
+                       CatalogTupleUpdate(shdescription, &oldtuple->t_self, newtuple);
                }
 
                break;                                  /* Assume there can be only one match */
@@ -307,15 +303,11 @@ CreateSharedComments(Oid oid, Oid classoid, char *comment)
        {
                newtuple = heap_form_tuple(RelationGetDescr(shdescription),
                                                                   values, nulls);
-               simple_heap_insert(shdescription, newtuple);
+               CatalogTupleInsert(shdescription, newtuple);
        }
 
-       /* Update indexes, if necessary */
        if (newtuple != NULL)
-       {
-               CatalogUpdateIndexes(shdescription, newtuple);
                heap_freetuple(newtuple);
-       }
 
        /* Done */
 
index 6ad8fd77b109bb0c7450945dd4c442b8bccc7543..c3eb3c79df49cd43b616c461e570960672615eef 100644 (file)
@@ -546,10 +546,7 @@ createdb(ParseState *pstate, const CreatedbStmt *stmt)
 
        HeapTupleSetOid(tuple, dboid);
 
-       simple_heap_insert(pg_database_rel, tuple);
-
-       /* Update indexes */
-       CatalogUpdateIndexes(pg_database_rel, tuple);
+       CatalogTupleInsert(pg_database_rel, tuple);
 
        /*
         * Now generate additional catalog entries associated with the new DB
@@ -1040,8 +1037,7 @@ RenameDatabase(const char *oldname, const char *newname)
        if (!HeapTupleIsValid(newtup))
                elog(ERROR, "cache lookup failed for database %u", db_id);
        namestrcpy(&(((Form_pg_database) GETSTRUCT(newtup))->datname), newname);
-       simple_heap_update(rel, &newtup->t_self, newtup);
-       CatalogUpdateIndexes(rel, newtup);
+       CatalogTupleUpdate(rel, &newtup->t_self, newtup);
 
        InvokeObjectPostAlterHook(DatabaseRelationId, db_id, 0);
 
@@ -1296,10 +1292,7 @@ movedb(const char *dbname, const char *tblspcname)
                newtuple = heap_modify_tuple(oldtuple, RelationGetDescr(pgdbrel),
                                                                         new_record,
                                                                         new_record_nulls, new_record_repl);
-               simple_heap_update(pgdbrel, &oldtuple->t_self, newtuple);
-
-               /* Update indexes */
-               CatalogUpdateIndexes(pgdbrel, newtuple);
+               CatalogTupleUpdate(pgdbrel, &oldtuple->t_self, newtuple);
 
                InvokeObjectPostAlterHook(DatabaseRelationId,
                                                                  HeapTupleGetOid(newtuple), 0);
@@ -1554,10 +1547,7 @@ AlterDatabase(ParseState *pstate, AlterDatabaseStmt *stmt, bool isTopLevel)
 
        newtuple = heap_modify_tuple(tuple, RelationGetDescr(rel), new_record,
                                                                 new_record_nulls, new_record_repl);
-       simple_heap_update(rel, &tuple->t_self, newtuple);
-
-       /* Update indexes */
-       CatalogUpdateIndexes(rel, newtuple);
+       CatalogTupleUpdate(rel, &tuple->t_self, newtuple);
 
        InvokeObjectPostAlterHook(DatabaseRelationId,
                                                          HeapTupleGetOid(newtuple), 0);
@@ -1692,8 +1682,7 @@ AlterDatabaseOwner(const char *dbname, Oid newOwnerId)
                }
 
                newtuple = heap_modify_tuple(tuple, RelationGetDescr(rel), repl_val, repl_null, repl_repl);
-               simple_heap_update(rel, &newtuple->t_self, newtuple);
-               CatalogUpdateIndexes(rel, newtuple);
+               CatalogTupleUpdate(rel, &newtuple->t_self, newtuple);
 
                heap_freetuple(newtuple);
 
index 812553736151211bd2db56d6964d237bb7238e01..94c4ea5dd21312d07e34d438ed2e85a28fa935ec 100644 (file)
@@ -405,8 +405,7 @@ insert_event_trigger_tuple(char *trigname, char *eventname, Oid evtOwner,
 
        /* Insert heap tuple. */
        tuple = heap_form_tuple(tgrel->rd_att, values, nulls);
-       trigoid = simple_heap_insert(tgrel, tuple);
-       CatalogUpdateIndexes(tgrel, tuple);
+       trigoid = CatalogTupleInsert(tgrel, tuple);
        heap_freetuple(tuple);
 
        /* Depend on owner. */
@@ -524,8 +523,7 @@ AlterEventTrigger(AlterEventTrigStmt *stmt)
        evtForm = (Form_pg_event_trigger) GETSTRUCT(tup);
        evtForm->evtenabled = tgenabled;
 
-       simple_heap_update(tgrel, &tup->t_self, tup);
-       CatalogUpdateIndexes(tgrel, tup);
+       CatalogTupleUpdate(tgrel, &tup->t_self, tup);
 
        InvokeObjectPostAlterHook(EventTriggerRelationId,
                                                          trigoid, 0);
@@ -621,8 +619,7 @@ AlterEventTriggerOwner_internal(Relation rel, HeapTuple tup, Oid newOwnerId)
                         errhint("The owner of an event trigger must be a superuser.")));
 
        form->evtowner = newOwnerId;
-       simple_heap_update(rel, &tup->t_self, tup);
-       CatalogUpdateIndexes(rel, tup);
+       CatalogTupleUpdate(rel, &tup->t_self, tup);
 
        /* Update owner dependency reference */
        changeDependencyOnOwner(EventTriggerRelationId,
index f23c6977cb27ae0d98fe372d848db806ce76d094..14738ea584c92e6a005e63c6a657dd1fbb076f34 100644 (file)
@@ -1773,8 +1773,7 @@ InsertExtensionTuple(const char *extName, Oid extOwner,
 
        tuple = heap_form_tuple(rel->rd_att, values, nulls);
 
-       extensionOid = simple_heap_insert(rel, tuple);
-       CatalogUpdateIndexes(rel, tuple);
+       extensionOid = CatalogTupleInsert(rel, tuple);
 
        heap_freetuple(tuple);
        heap_close(rel, RowExclusiveLock);
@@ -2485,8 +2484,7 @@ pg_extension_config_dump(PG_FUNCTION_ARGS)
        extTup = heap_modify_tuple(extTup, RelationGetDescr(extRel),
                                                           repl_val, repl_null, repl_repl);
 
-       simple_heap_update(extRel, &extTup->t_self, extTup);
-       CatalogUpdateIndexes(extRel, extTup);
+       CatalogTupleUpdate(extRel, &extTup->t_self, extTup);
 
        systable_endscan(extScan);
 
@@ -2663,8 +2661,7 @@ extension_config_remove(Oid extensionoid, Oid tableoid)
        extTup = heap_modify_tuple(extTup, RelationGetDescr(extRel),
                                                           repl_val, repl_null, repl_repl);
 
-       simple_heap_update(extRel, &extTup->t_self, extTup);
-       CatalogUpdateIndexes(extRel, extTup);
+       CatalogTupleUpdate(extRel, &extTup->t_self, extTup);
 
        systable_endscan(extScan);
 
@@ -2844,8 +2841,7 @@ AlterExtensionNamespace(List *names, const char *newschema, Oid *oldschema)
        /* Now adjust pg_extension.extnamespace */
        extForm->extnamespace = nspOid;
 
-       simple_heap_update(extRel, &extTup->t_self, extTup);
-       CatalogUpdateIndexes(extRel, extTup);
+       CatalogTupleUpdate(extRel, &extTup->t_self, extTup);
 
        heap_close(extRel, RowExclusiveLock);
 
@@ -3091,8 +3087,7 @@ ApplyExtensionUpdates(Oid extensionOid,
                extTup = heap_modify_tuple(extTup, RelationGetDescr(extRel),
                                                                   values, nulls, repl);
 
-               simple_heap_update(extRel, &extTup->t_self, extTup);
-               CatalogUpdateIndexes(extRel, extTup);
+               CatalogTupleUpdate(extRel, &extTup->t_self, extTup);
 
                systable_endscan(extScan);
 
index 6ff8b6998be8206e9c5645cb3a1feeeaeb8332eb..ad8ca2d8eba402509bf30a0c0a2987038d6cb05a 100644 (file)
@@ -256,8 +256,7 @@ AlterForeignDataWrapperOwner_internal(Relation rel, HeapTuple tup, Oid newOwnerI
                tup = heap_modify_tuple(tup, RelationGetDescr(rel), repl_val, repl_null,
                                                                repl_repl);
 
-               simple_heap_update(rel, &tup->t_self, tup);
-               CatalogUpdateIndexes(rel, tup);
+               CatalogTupleUpdate(rel, &tup->t_self, tup);
 
                /* Update owner dependency reference */
                changeDependencyOnOwner(ForeignDataWrapperRelationId,
@@ -397,8 +396,7 @@ AlterForeignServerOwner_internal(Relation rel, HeapTuple tup, Oid newOwnerId)
                tup = heap_modify_tuple(tup, RelationGetDescr(rel), repl_val, repl_null,
                                                                repl_repl);
 
-               simple_heap_update(rel, &tup->t_self, tup);
-               CatalogUpdateIndexes(rel, tup);
+               CatalogTupleUpdate(rel, &tup->t_self, tup);
 
                /* Update owner dependency reference */
                changeDependencyOnOwner(ForeignServerRelationId, HeapTupleGetOid(tup),
@@ -629,8 +627,7 @@ CreateForeignDataWrapper(CreateFdwStmt *stmt)
 
        tuple = heap_form_tuple(rel->rd_att, values, nulls);
 
-       fdwId = simple_heap_insert(rel, tuple);
-       CatalogUpdateIndexes(rel, tuple);
+       fdwId = CatalogTupleInsert(rel, tuple);
 
        heap_freetuple(tuple);
 
@@ -786,8 +783,7 @@ AlterForeignDataWrapper(AlterFdwStmt *stmt)
        tp = heap_modify_tuple(tp, RelationGetDescr(rel),
                                                   repl_val, repl_null, repl_repl);
 
-       simple_heap_update(rel, &tp->t_self, tp);
-       CatalogUpdateIndexes(rel, tp);
+       CatalogTupleUpdate(rel, &tp->t_self, tp);
 
        heap_freetuple(tp);
 
@@ -941,9 +937,7 @@ CreateForeignServer(CreateForeignServerStmt *stmt)
 
        tuple = heap_form_tuple(rel->rd_att, values, nulls);
 
-       srvId = simple_heap_insert(rel, tuple);
-
-       CatalogUpdateIndexes(rel, tuple);
+       srvId = CatalogTupleInsert(rel, tuple);
 
        heap_freetuple(tuple);
 
@@ -1056,8 +1050,7 @@ AlterForeignServer(AlterForeignServerStmt *stmt)
        tp = heap_modify_tuple(tp, RelationGetDescr(rel),
                                                   repl_val, repl_null, repl_repl);
 
-       simple_heap_update(rel, &tp->t_self, tp);
-       CatalogUpdateIndexes(rel, tp);
+       CatalogTupleUpdate(rel, &tp->t_self, tp);
 
        InvokeObjectPostAlterHook(ForeignServerRelationId, srvId, 0);
 
@@ -1190,9 +1183,7 @@ CreateUserMapping(CreateUserMappingStmt *stmt)
 
        tuple = heap_form_tuple(rel->rd_att, values, nulls);
 
-       umId = simple_heap_insert(rel, tuple);
-
-       CatalogUpdateIndexes(rel, tuple);
+       umId = CatalogTupleInsert(rel, tuple);
 
        heap_freetuple(tuple);
 
@@ -1307,8 +1298,7 @@ AlterUserMapping(AlterUserMappingStmt *stmt)
        tp = heap_modify_tuple(tp, RelationGetDescr(rel),
                                                   repl_val, repl_null, repl_repl);
 
-       simple_heap_update(rel, &tp->t_self, tp);
-       CatalogUpdateIndexes(rel, tp);
+       CatalogTupleUpdate(rel, &tp->t_self, tp);
 
        ObjectAddressSet(address, UserMappingRelationId, umId);
 
@@ -1484,8 +1474,7 @@ CreateForeignTable(CreateForeignTableStmt *stmt, Oid relid)
 
        tuple = heap_form_tuple(ftrel->rd_att, values, nulls);
 
-       simple_heap_insert(ftrel, tuple);
-       CatalogUpdateIndexes(ftrel, tuple);
+       CatalogTupleInsert(ftrel, tuple);
 
        heap_freetuple(tuple);
 
index ec833c382dcf20943cfff8fc2e0dae78976a89c5..f4fa8d35a4e808aeab2e0d2ae06760db1e15bf64 100644 (file)
@@ -1292,8 +1292,7 @@ AlterFunction(ParseState *pstate, AlterFunctionStmt *stmt)
                procForm->proparallel = interpret_func_parallel(parallel_item);
 
        /* Do the update */
-       simple_heap_update(rel, &tup->t_self, tup);
-       CatalogUpdateIndexes(rel, tup);
+       CatalogTupleUpdate(rel, &tup->t_self, tup);
 
        InvokeObjectPostAlterHook(ProcedureRelationId, funcOid, 0);
 
@@ -1333,9 +1332,7 @@ SetFunctionReturnType(Oid funcOid, Oid newRetType)
        procForm->prorettype = newRetType;
 
        /* update the catalog and its indexes */
-       simple_heap_update(pg_proc_rel, &tup->t_self, tup);
-
-       CatalogUpdateIndexes(pg_proc_rel, tup);
+       CatalogTupleUpdate(pg_proc_rel, &tup->t_self, tup);
 
        heap_close(pg_proc_rel, RowExclusiveLock);
 }
@@ -1368,9 +1365,7 @@ SetFunctionArgType(Oid funcOid, int argIndex, Oid newArgType)
        procForm->proargtypes.values[argIndex] = newArgType;
 
        /* update the catalog and its indexes */
-       simple_heap_update(pg_proc_rel, &tup->t_self, tup);
-
-       CatalogUpdateIndexes(pg_proc_rel, tup);
+       CatalogTupleUpdate(pg_proc_rel, &tup->t_self, tup);
 
        heap_close(pg_proc_rel, RowExclusiveLock);
 }
@@ -1656,9 +1651,7 @@ CreateCast(CreateCastStmt *stmt)
 
        tuple = heap_form_tuple(RelationGetDescr(relation), values, nulls);
 
-       castid = simple_heap_insert(relation, tuple);
-
-       CatalogUpdateIndexes(relation, tuple);
+       castid = CatalogTupleInsert(relation, tuple);
 
        /* make dependency entries */
        myself.classId = CastRelationId;
@@ -1921,7 +1914,7 @@ CreateTransform(CreateTransformStmt *stmt)
                replaces[Anum_pg_transform_trftosql - 1] = true;
 
                newtuple = heap_modify_tuple(tuple, RelationGetDescr(relation), values, nulls, replaces);
-               simple_heap_update(relation, &newtuple->t_self, newtuple);
+               CatalogTupleUpdate(relation, &newtuple->t_self, newtuple);
 
                transformid = HeapTupleGetOid(tuple);
                ReleaseSysCache(tuple);
@@ -1930,12 +1923,10 @@ CreateTransform(CreateTransformStmt *stmt)
        else
        {
                newtuple = heap_form_tuple(RelationGetDescr(relation), values, nulls);
-               transformid = simple_heap_insert(relation, newtuple);
+               transformid = CatalogTupleInsert(relation, newtuple);
                is_replace = false;
        }
 
-       CatalogUpdateIndexes(relation, newtuple);
-
        if (is_replace)
                deleteDependencyRecordsFor(TransformRelationId, transformid, true);
 
index b7daf1ca0a075043aca8f9c14c238be2b8e3f5d7..a18c9173360d5adf322d82102ba8b27f64b118f1 100644 (file)
@@ -100,9 +100,7 @@ SetMatViewPopulatedState(Relation relation, bool newstate)
 
        ((Form_pg_class) GETSTRUCT(tuple))->relispopulated = newstate;
 
-       simple_heap_update(pgrel, &tuple->t_self, tuple);
-
-       CatalogUpdateIndexes(pgrel, tuple);
+       CatalogTupleUpdate(pgrel, &tuple->t_self, tuple);
 
        heap_freetuple(tuple);
        heap_close(pgrel, RowExclusiveLock);
index bc43483b94a77734bc8e94fd41dae7a658e39574..99a39bdd74248b57022a8bcb22ec5e23e8050cf7 100644 (file)
@@ -278,9 +278,7 @@ CreateOpFamily(char *amname, char *opfname, Oid namespaceoid, Oid amoid)
 
        tup = heap_form_tuple(rel->rd_att, values, nulls);
 
-       opfamilyoid = simple_heap_insert(rel, tup);
-
-       CatalogUpdateIndexes(rel, tup);
+       opfamilyoid = CatalogTupleInsert(rel, tup);
 
        heap_freetuple(tup);
 
@@ -654,9 +652,7 @@ DefineOpClass(CreateOpClassStmt *stmt)
 
        tup = heap_form_tuple(rel->rd_att, values, nulls);
 
-       opclassoid = simple_heap_insert(rel, tup);
-
-       CatalogUpdateIndexes(rel, tup);
+       opclassoid = CatalogTupleInsert(rel, tup);
 
        heap_freetuple(tup);
 
@@ -1327,9 +1323,7 @@ storeOperators(List *opfamilyname, Oid amoid,
 
                tup = heap_form_tuple(rel->rd_att, values, nulls);
 
-               entryoid = simple_heap_insert(rel, tup);
-
-               CatalogUpdateIndexes(rel, tup);
+               entryoid = CatalogTupleInsert(rel, tup);
 
                heap_freetuple(tup);
 
@@ -1438,9 +1432,7 @@ storeProcedures(List *opfamilyname, Oid amoid,
 
                tup = heap_form_tuple(rel->rd_att, values, nulls);
 
-               entryoid = simple_heap_insert(rel, tup);
-
-               CatalogUpdateIndexes(rel, tup);
+               entryoid = CatalogTupleInsert(rel, tup);
 
                heap_freetuple(tup);
 
index a273376e212cb08b5775271be18cac580d62342d..66d2452dbe28e7db086842910b291cb09557b80c 100644 (file)
@@ -518,8 +518,7 @@ AlterOperator(AlterOperatorStmt *stmt)
        tup = heap_modify_tuple(tup, RelationGetDescr(catalog),
                                                        values, nulls, replaces);
 
-       simple_heap_update(catalog, &tup->t_self, tup);
-       CatalogUpdateIndexes(catalog, tup);
+       CatalogTupleUpdate(catalog, &tup->t_self, tup);
 
        address = makeOperatorDependencies(tup, true);
 
index 5d9d3a6a059cecfffd95add6a9f8ec518c8cdfda..da2b1ae0e7e08fe5bd736406b88459b3b9cca003 100644 (file)
@@ -614,10 +614,7 @@ RemoveRoleFromObjectPolicy(Oid roleid, Oid classid, Oid policy_id)
                new_tuple = heap_modify_tuple(tuple,
                                                                          RelationGetDescr(pg_policy_rel),
                                                                          values, isnull, replaces);
-               simple_heap_update(pg_policy_rel, &new_tuple->t_self, new_tuple);
-
-               /* Update Catalog Indexes */
-               CatalogUpdateIndexes(pg_policy_rel, new_tuple);
+               CatalogTupleUpdate(pg_policy_rel, &new_tuple->t_self, new_tuple);
 
                /* Remove all old dependencies. */
                deleteDependencyRecordsFor(PolicyRelationId, policy_id, false);
@@ -823,10 +820,7 @@ CreatePolicy(CreatePolicyStmt *stmt)
        policy_tuple = heap_form_tuple(RelationGetDescr(pg_policy_rel), values,
                                                                   isnull);
 
-       policy_id = simple_heap_insert(pg_policy_rel, policy_tuple);
-
-       /* Update Indexes */
-       CatalogUpdateIndexes(pg_policy_rel, policy_tuple);
+       policy_id = CatalogTupleInsert(pg_policy_rel, policy_tuple);
 
        /* Record Dependencies */
        target.classId = RelationRelationId;
@@ -1150,10 +1144,7 @@ AlterPolicy(AlterPolicyStmt *stmt)
        new_tuple = heap_modify_tuple(policy_tuple,
                                                                  RelationGetDescr(pg_policy_rel),
                                                                  values, isnull, replaces);
-       simple_heap_update(pg_policy_rel, &new_tuple->t_self, new_tuple);
-
-       /* Update Catalog Indexes */
-       CatalogUpdateIndexes(pg_policy_rel, new_tuple);
+       CatalogTupleUpdate(pg_policy_rel, &new_tuple->t_self, new_tuple);
 
        /* Update Dependencies. */
        deleteDependencyRecordsFor(PolicyRelationId, policy_id, false);
@@ -1287,10 +1278,7 @@ rename_policy(RenameStmt *stmt)
        namestrcpy(&((Form_pg_policy) GETSTRUCT(policy_tuple))->polname,
                           stmt->newname);
 
-       simple_heap_update(pg_policy_rel, &policy_tuple->t_self, policy_tuple);
-
-       /* keep system catalog indexes current */
-       CatalogUpdateIndexes(pg_policy_rel, policy_tuple);
+       CatalogTupleUpdate(pg_policy_rel, &policy_tuple->t_self, policy_tuple);
 
        InvokeObjectPostAlterHook(PolicyRelationId,
                                                          HeapTupleGetOid(policy_tuple), 0);
index b684f413c06465174d17ea8c37213eac757004e3..4c8daa5928926f0ef0e3700aa0eead1d2dc61233 100644 (file)
@@ -378,7 +378,7 @@ create_proc_lang(const char *languageName, bool replace,
 
                /* Okay, do it... */
                tup = heap_modify_tuple(oldtup, tupDesc, values, nulls, replaces);
-               simple_heap_update(rel, &tup->t_self, tup);
+               CatalogTupleUpdate(rel, &tup->t_self, tup);
 
                ReleaseSysCache(oldtup);
                is_update = true;
@@ -387,13 +387,10 @@ create_proc_lang(const char *languageName, bool replace,
        {
                /* Creating a new language */
                tup = heap_form_tuple(tupDesc, values, nulls);
-               simple_heap_insert(rel, tup);
+               CatalogTupleInsert(rel, tup);
                is_update = false;
        }
 
-       /* Need to update indexes for either the insert or update case */
-       CatalogUpdateIndexes(rel, tup);
-
        /*
         * Create dependencies for the new language.  If we are updating an
         * existing language, first delete any existing pg_depend entries.
index 173b0766483717c05f62d3d454163e44c1802725..bc0f65399144ef50e74133a82b2b1e22bd9a6a3f 100644 (file)
@@ -215,8 +215,7 @@ CreatePublication(CreatePublicationStmt *stmt)
        tup = heap_form_tuple(RelationGetDescr(rel), values, nulls);
 
        /* Insert tuple into catalog. */
-       puboid = simple_heap_insert(rel, tup);
-       CatalogUpdateIndexes(rel, tup);
+       puboid = CatalogTupleInsert(rel, tup);
        heap_freetuple(tup);
 
        recordDependencyOnOwner(PublicationRelationId, puboid, GetUserId());
@@ -295,8 +294,7 @@ AlterPublicationOptions(AlterPublicationStmt *stmt, Relation rel,
                                                        replaces);
 
        /* Update the catalog. */
-       simple_heap_update(rel, &tup->t_self, tup);
-       CatalogUpdateIndexes(rel, tup);
+       CatalogTupleUpdate(rel, &tup->t_self, tup);
 
        CommandCounterIncrement();
 
@@ -686,8 +684,7 @@ AlterPublicationOwner_internal(Relation rel, HeapTuple tup, Oid newOwnerId)
                                 errhint("The owner of a publication must be a superuser.")));
 
        form->pubowner = newOwnerId;
-       simple_heap_update(rel, &tup->t_self, tup);
-       CatalogUpdateIndexes(rel, tup);
+       CatalogTupleUpdate(rel, &tup->t_self, tup);
 
        /* Update owner dependency reference */
        changeDependencyOnOwner(PublicationRelationId,
index c3b37b2625901f1a7756b4332c37d856d830b6fc..d14c2698036682c8ef775d2b2e1f7eb50a6b1e4c 100644 (file)
@@ -281,8 +281,7 @@ RenameSchema(const char *oldname, const char *newname)
 
        /* rename */
        namestrcpy(&(((Form_pg_namespace) GETSTRUCT(tup))->nspname), newname);
-       simple_heap_update(rel, &tup->t_self, tup);
-       CatalogUpdateIndexes(rel, tup);
+       CatalogTupleUpdate(rel, &tup->t_self, tup);
 
        InvokeObjectPostAlterHook(NamespaceRelationId, HeapTupleGetOid(tup), 0);
 
@@ -417,8 +416,7 @@ AlterSchemaOwner_internal(HeapTuple tup, Relation rel, Oid newOwnerId)
 
                newtuple = heap_modify_tuple(tup, RelationGetDescr(rel), repl_val, repl_null, repl_repl);
 
-               simple_heap_update(rel, &newtuple->t_self, newtuple);
-               CatalogUpdateIndexes(rel, newtuple);
+               CatalogTupleUpdate(rel, &newtuple->t_self, newtuple);
 
                heap_freetuple(newtuple);
 
index 324f2e7bd9ec8228e86826a8dac749dc8dee3328..506c90f6e25df0de9928140b15ebad24689b6ea9 100644 (file)
@@ -299,7 +299,7 @@ SetSharedSecurityLabel(const ObjectAddress *object,
                        replaces[Anum_pg_shseclabel_label - 1] = true;
                        newtup = heap_modify_tuple(oldtup, RelationGetDescr(pg_shseclabel),
                                                                           values, nulls, replaces);
-                       simple_heap_update(pg_shseclabel, &oldtup->t_self, newtup);
+                       CatalogTupleUpdate(pg_shseclabel, &oldtup->t_self, newtup);
                }
        }
        systable_endscan(scan);
@@ -309,15 +309,11 @@ SetSharedSecurityLabel(const ObjectAddress *object,
        {
                newtup = heap_form_tuple(RelationGetDescr(pg_shseclabel),
                                                                 values, nulls);
-               simple_heap_insert(pg_shseclabel, newtup);
+               CatalogTupleInsert(pg_shseclabel, newtup);
        }
 
-       /* Update indexes, if necessary */
        if (newtup != NULL)
-       {
-               CatalogUpdateIndexes(pg_shseclabel, newtup);
                heap_freetuple(newtup);
-       }
 
        heap_close(pg_shseclabel, RowExclusiveLock);
 }
@@ -390,7 +386,7 @@ SetSecurityLabel(const ObjectAddress *object,
                        replaces[Anum_pg_seclabel_label - 1] = true;
                        newtup = heap_modify_tuple(oldtup, RelationGetDescr(pg_seclabel),
                                                                           values, nulls, replaces);
-                       simple_heap_update(pg_seclabel, &oldtup->t_self, newtup);
+                       CatalogTupleUpdate(pg_seclabel, &oldtup->t_self, newtup);
                }
        }
        systable_endscan(scan);
@@ -400,15 +396,12 @@ SetSecurityLabel(const ObjectAddress *object,
        {
                newtup = heap_form_tuple(RelationGetDescr(pg_seclabel),
                                                                 values, nulls);
-               simple_heap_insert(pg_seclabel, newtup);
+               CatalogTupleInsert(pg_seclabel, newtup);
        }
 
        /* Update indexes, if necessary */
        if (newtup != NULL)
-       {
-               CatalogUpdateIndexes(pg_seclabel, newtup);
                heap_freetuple(newtup);
-       }
 
        heap_close(pg_seclabel, RowExclusiveLock);
 }
index 0c673f5763b18696ded55afb87709096a1b82384..6ac76b1e565618d9fbad2d8c19021a388723e9ae 100644 (file)
@@ -236,8 +236,7 @@ DefineSequence(ParseState *pstate, CreateSeqStmt *seq)
        pgs_values[Anum_pg_sequence_seqcache - 1] = Int64GetDatumFast(seqform.seqcache);
 
        tuple = heap_form_tuple(tupDesc, pgs_values, pgs_nulls);
-       simple_heap_insert(rel, tuple);
-       CatalogUpdateIndexes(rel, tuple);
+       CatalogTupleInsert(rel, tuple);
 
        heap_freetuple(tuple);
        heap_close(rel, RowExclusiveLock);
@@ -504,8 +503,7 @@ AlterSequence(ParseState *pstate, AlterSeqStmt *stmt)
 
        relation_close(seqrel, NoLock);
 
-       simple_heap_update(rel, &tuple->t_self, tuple);
-       CatalogUpdateIndexes(rel, tuple);
+       CatalogTupleUpdate(rel, &tuple->t_self, tuple);
        heap_close(rel, RowExclusiveLock);
 
        return address;
index 41ef7a3aa4ba65ec342b9c4a68785dbdcd98189a..5de999928f338516db97fc0dd87a4ec299699b5f 100644 (file)
@@ -277,8 +277,7 @@ CreateSubscription(CreateSubscriptionStmt *stmt)
        tup = heap_form_tuple(RelationGetDescr(rel), values, nulls);
 
        /* Insert tuple into catalog. */
-       subid = simple_heap_insert(rel, tup);
-       CatalogUpdateIndexes(rel, tup);
+       subid = CatalogTupleInsert(rel, tup);
        heap_freetuple(tup);
 
        recordDependencyOnOwner(SubscriptionRelationId, subid, owner);
@@ -408,8 +407,7 @@ AlterSubscription(AlterSubscriptionStmt *stmt)
                                                        replaces);
 
        /* Update the catalog. */
-       simple_heap_update(rel, &tup->t_self, tup);
-       CatalogUpdateIndexes(rel, tup);
+       CatalogTupleUpdate(rel, &tup->t_self, tup);
 
        ObjectAddressSet(myself, SubscriptionRelationId, subid);
 
@@ -588,8 +586,7 @@ AlterSubscriptionOwner_internal(Relation rel, HeapTuple tup, Oid newOwnerId)
                         errhint("The owner of an subscription must be a superuser.")));
 
        form->subowner = newOwnerId;
-       simple_heap_update(rel, &tup->t_self, tup);
-       CatalogUpdateIndexes(rel, tup);
+       CatalogTupleUpdate(rel, &tup->t_self, tup);
 
        /* Update owner dependency reference */
        changeDependencyOnOwner(SubscriptionRelationId,
index 90f2f7f00e2aa6c9d917689a6cd2bc797fc8ea02..764071bd11b45f969b490aa52deddd19e335479e 100644 (file)
@@ -2308,9 +2308,7 @@ StoreCatalogInheritance1(Oid relationId, Oid parentOid,
 
        tuple = heap_form_tuple(desc, values, nulls);
 
-       simple_heap_insert(inhRelation, tuple);
-
-       CatalogUpdateIndexes(inhRelation, tuple);
+       CatalogTupleInsert(inhRelation, tuple);
 
        heap_freetuple(tuple);
 
@@ -2398,10 +2396,7 @@ SetRelationHasSubclass(Oid relationId, bool relhassubclass)
        if (classtuple->relhassubclass != relhassubclass)
        {
                classtuple->relhassubclass = relhassubclass;
-               simple_heap_update(relationRelation, &tuple->t_self, tuple);
-
-               /* keep the catalog indexes up to date */
-               CatalogUpdateIndexes(relationRelation, tuple);
+               CatalogTupleUpdate(relationRelation, &tuple->t_self, tuple);
        }
        else
        {
@@ -2592,10 +2587,7 @@ renameatt_internal(Oid myrelid,
        /* apply the update */
        namestrcpy(&(attform->attname), newattname);
 
-       simple_heap_update(attrelation, &atttup->t_self, atttup);
-
-       /* keep system catalog indexes current */
-       CatalogUpdateIndexes(attrelation, atttup);
+       CatalogTupleUpdate(attrelation, &atttup->t_self, atttup);
 
        InvokeObjectPostAlterHook(RelationRelationId, myrelid, attnum);
 
@@ -2902,10 +2894,7 @@ RenameRelationInternal(Oid myrelid, const char *newrelname, bool is_internal)
         */
        namestrcpy(&(relform->relname), newrelname);
 
-       simple_heap_update(relrelation, &reltup->t_self, reltup);
-
-       /* keep the system catalog indexes current */
-       CatalogUpdateIndexes(relrelation, reltup);
+       CatalogTupleUpdate(relrelation, &reltup->t_self, reltup);
 
        InvokeObjectPostAlterHookArg(RelationRelationId, myrelid, 0,
                                                                 InvalidOid, is_internal);
@@ -5097,8 +5086,7 @@ ATExecAddColumn(List **wqueue, AlteredTableInfo *tab, Relation rel,
 
                        /* Bump the existing child att's inhcount */
                        childatt->attinhcount++;
-                       simple_heap_update(attrdesc, &tuple->t_self, tuple);
-                       CatalogUpdateIndexes(attrdesc, tuple);
+                       CatalogTupleUpdate(attrdesc, &tuple->t_self, tuple);
 
                        heap_freetuple(tuple);
 
@@ -5191,10 +5179,7 @@ ATExecAddColumn(List **wqueue, AlteredTableInfo *tab, Relation rel,
        else
                ((Form_pg_class) GETSTRUCT(reltup))->relnatts = newattnum;
 
-       simple_heap_update(pgclass, &reltup->t_self, reltup);
-
-       /* keep catalog indexes current */
-       CatalogUpdateIndexes(pgclass, reltup);
+       CatalogTupleUpdate(pgclass, &reltup->t_self, reltup);
 
        heap_freetuple(reltup);
 
@@ -5630,10 +5615,7 @@ ATExecDropNotNull(Relation rel, const char *colName, LOCKMODE lockmode)
        {
                ((Form_pg_attribute) GETSTRUCT(tuple))->attnotnull = FALSE;
 
-               simple_heap_update(attr_rel, &tuple->t_self, tuple);
-
-               /* keep the system catalog indexes current */
-               CatalogUpdateIndexes(attr_rel, tuple);
+               CatalogTupleUpdate(attr_rel, &tuple->t_self, tuple);
 
                ObjectAddressSubSet(address, RelationRelationId,
                                                        RelationGetRelid(rel), attnum);
@@ -5708,10 +5690,7 @@ ATExecSetNotNull(AlteredTableInfo *tab, Relation rel,
        {
                ((Form_pg_attribute) GETSTRUCT(tuple))->attnotnull = TRUE;
 
-               simple_heap_update(attr_rel, &tuple->t_self, tuple);
-
-               /* keep the system catalog indexes current */
-               CatalogUpdateIndexes(attr_rel, tuple);
+               CatalogTupleUpdate(attr_rel, &tuple->t_self, tuple);
 
                /* Tell Phase 3 it needs to test the constraint */
                tab->new_notnull = true;
@@ -5876,10 +5855,7 @@ ATExecSetStatistics(Relation rel, const char *colName, Node *newValue, LOCKMODE
 
        attrtuple->attstattarget = newtarget;
 
-       simple_heap_update(attrelation, &tuple->t_self, tuple);
-
-       /* keep system catalog indexes current */
-       CatalogUpdateIndexes(attrelation, tuple);
+       CatalogTupleUpdate(attrelation, &tuple->t_self, tuple);
 
        InvokeObjectPostAlterHook(RelationRelationId,
                                                          RelationGetRelid(rel),
@@ -5952,8 +5928,7 @@ ATExecSetOptions(Relation rel, const char *colName, Node *options,
                                                                 repl_val, repl_null, repl_repl);
 
        /* Update system catalog. */
-       simple_heap_update(attrelation, &newtuple->t_self, newtuple);
-       CatalogUpdateIndexes(attrelation, newtuple);
+       CatalogTupleUpdate(attrelation, &newtuple->t_self, newtuple);
 
        InvokeObjectPostAlterHook(RelationRelationId,
                                                          RelationGetRelid(rel),
@@ -6036,10 +6011,7 @@ ATExecSetStorage(Relation rel, const char *colName, Node *newValue, LOCKMODE loc
                                 errmsg("column data type %s can only have storage PLAIN",
                                                format_type_be(attrtuple->atttypid))));
 
-       simple_heap_update(attrelation, &tuple->t_self, tuple);
-
-       /* keep system catalog indexes current */
-       CatalogUpdateIndexes(attrelation, tuple);
+       CatalogTupleUpdate(attrelation, &tuple->t_self, tuple);
 
        InvokeObjectPostAlterHook(RelationRelationId,
                                                          RelationGetRelid(rel),
@@ -6277,10 +6249,7 @@ ATExecDropColumn(List **wqueue, Relation rel, const char *colName,
                                        /* Child column must survive my deletion */
                                        childatt->attinhcount--;
 
-                                       simple_heap_update(attr_rel, &tuple->t_self, tuple);
-
-                                       /* keep the system catalog indexes current */
-                                       CatalogUpdateIndexes(attr_rel, tuple);
+                                       CatalogTupleUpdate(attr_rel, &tuple->t_self, tuple);
 
                                        /* Make update visible */
                                        CommandCounterIncrement();
@@ -6296,10 +6265,7 @@ ATExecDropColumn(List **wqueue, Relation rel, const char *colName,
                                childatt->attinhcount--;
                                childatt->attislocal = true;
 
-                               simple_heap_update(attr_rel, &tuple->t_self, tuple);
-
-                               /* keep the system catalog indexes current */
-                               CatalogUpdateIndexes(attr_rel, tuple);
+                               CatalogTupleUpdate(attr_rel, &tuple->t_self, tuple);
 
                                /* Make update visible */
                                CommandCounterIncrement();
@@ -6343,10 +6309,7 @@ ATExecDropColumn(List **wqueue, Relation rel, const char *colName,
                tuple_class = (Form_pg_class) GETSTRUCT(tuple);
 
                tuple_class->relhasoids = false;
-               simple_heap_update(class_rel, &tuple->t_self, tuple);
-
-               /* Keep the catalog indexes up to date */
-               CatalogUpdateIndexes(class_rel, tuple);
+               CatalogTupleUpdate(class_rel, &tuple->t_self, tuple);
 
                heap_close(class_rel, RowExclusiveLock);
 
@@ -7195,8 +7158,7 @@ ATExecAlterConstraint(Relation rel, AlterTableCmd *cmd,
                copy_con = (Form_pg_constraint) GETSTRUCT(copyTuple);
                copy_con->condeferrable = cmdcon->deferrable;
                copy_con->condeferred = cmdcon->initdeferred;
-               simple_heap_update(conrel, &copyTuple->t_self, copyTuple);
-               CatalogUpdateIndexes(conrel, copyTuple);
+               CatalogTupleUpdate(conrel, &copyTuple->t_self, copyTuple);
 
                InvokeObjectPostAlterHook(ConstraintRelationId,
                                                                  HeapTupleGetOid(contuple), 0);
@@ -7249,8 +7211,7 @@ ATExecAlterConstraint(Relation rel, AlterTableCmd *cmd,
 
                        copy_tg->tgdeferrable = cmdcon->deferrable;
                        copy_tg->tginitdeferred = cmdcon->initdeferred;
-                       simple_heap_update(tgrel, &copyTuple->t_self, copyTuple);
-                       CatalogUpdateIndexes(tgrel, copyTuple);
+                       CatalogTupleUpdate(tgrel, &copyTuple->t_self, copyTuple);
 
                        InvokeObjectPostAlterHook(TriggerRelationId,
                                                                          HeapTupleGetOid(tgtuple), 0);
@@ -7436,8 +7397,7 @@ ATExecValidateConstraint(Relation rel, char *constrName, bool recurse,
                copyTuple = heap_copytuple(tuple);
                copy_con = (Form_pg_constraint) GETSTRUCT(copyTuple);
                copy_con->convalidated = true;
-               simple_heap_update(conrel, &copyTuple->t_self, copyTuple);
-               CatalogUpdateIndexes(conrel, copyTuple);
+               CatalogTupleUpdate(conrel, &copyTuple->t_self, copyTuple);
 
                InvokeObjectPostAlterHook(ConstraintRelationId,
                                                                  HeapTupleGetOid(tuple), 0);
@@ -8339,8 +8299,7 @@ ATExecDropConstraint(Relation rel, const char *constrName,
                        {
                                /* Child constraint must survive my deletion */
                                con->coninhcount--;
-                               simple_heap_update(conrel, &copy_tuple->t_self, copy_tuple);
-                               CatalogUpdateIndexes(conrel, copy_tuple);
+                               CatalogTupleUpdate(conrel, &copy_tuple->t_self, copy_tuple);
 
                                /* Make update visible */
                                CommandCounterIncrement();
@@ -8356,8 +8315,7 @@ ATExecDropConstraint(Relation rel, const char *constrName,
                        con->coninhcount--;
                        con->conislocal = true;
 
-                       simple_heap_update(conrel, &copy_tuple->t_self, copy_tuple);
-                       CatalogUpdateIndexes(conrel, copy_tuple);
+                       CatalogTupleUpdate(conrel, &copy_tuple->t_self, copy_tuple);
 
                        /* Make update visible */
                        CommandCounterIncrement();
@@ -9003,10 +8961,7 @@ ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel,
 
        ReleaseSysCache(typeTuple);
 
-       simple_heap_update(attrelation, &heapTup->t_self, heapTup);
-
-       /* keep system catalog indexes current */
-       CatalogUpdateIndexes(attrelation, heapTup);
+       CatalogTupleUpdate(attrelation, &heapTup->t_self, heapTup);
 
        heap_close(attrelation, RowExclusiveLock);
 
@@ -9144,8 +9099,7 @@ ATExecAlterColumnGenericOptions(Relation rel,
        newtuple = heap_modify_tuple(tuple, RelationGetDescr(attrel),
                                                                 repl_val, repl_null, repl_repl);
 
-       simple_heap_update(attrel, &newtuple->t_self, newtuple);
-       CatalogUpdateIndexes(attrel, newtuple);
+       CatalogTupleUpdate(attrel, &newtuple->t_self, newtuple);
 
        InvokeObjectPostAlterHook(RelationRelationId,
                                                          RelationGetRelid(rel),
@@ -9661,8 +9615,7 @@ ATExecChangeOwner(Oid relationOid, Oid newOwnerId, bool recursing, LOCKMODE lock
 
                newtuple = heap_modify_tuple(tuple, RelationGetDescr(class_rel), repl_val, repl_null, repl_repl);
 
-               simple_heap_update(class_rel, &newtuple->t_self, newtuple);
-               CatalogUpdateIndexes(class_rel, newtuple);
+               CatalogTupleUpdate(class_rel, &newtuple->t_self, newtuple);
 
                heap_freetuple(newtuple);
 
@@ -9789,8 +9742,7 @@ change_owner_fix_column_acls(Oid relationOid, Oid oldOwnerId, Oid newOwnerId)
                                                                         RelationGetDescr(attRelation),
                                                                         repl_val, repl_null, repl_repl);
 
-               simple_heap_update(attRelation, &newtuple->t_self, newtuple);
-               CatalogUpdateIndexes(attRelation, newtuple);
+               CatalogTupleUpdate(attRelation, &newtuple->t_self, newtuple);
 
                heap_freetuple(newtuple);
        }
@@ -10067,9 +10019,7 @@ ATExecSetRelOptions(Relation rel, List *defList, AlterTableType operation,
        newtuple = heap_modify_tuple(tuple, RelationGetDescr(pgclass),
                                                                 repl_val, repl_null, repl_repl);
 
-       simple_heap_update(pgclass, &newtuple->t_self, newtuple);
-
-       CatalogUpdateIndexes(pgclass, newtuple);
+       CatalogTupleUpdate(pgclass, &newtuple->t_self, newtuple);
 
        InvokeObjectPostAlterHook(RelationRelationId, RelationGetRelid(rel), 0);
 
@@ -10126,9 +10076,7 @@ ATExecSetRelOptions(Relation rel, List *defList, AlterTableType operation,
                newtuple = heap_modify_tuple(tuple, RelationGetDescr(pgclass),
                                                                         repl_val, repl_null, repl_repl);
 
-               simple_heap_update(pgclass, &newtuple->t_self, newtuple);
-
-               CatalogUpdateIndexes(pgclass, newtuple);
+               CatalogTupleUpdate(pgclass, &newtuple->t_self, newtuple);
 
                InvokeObjectPostAlterHookArg(RelationRelationId,
                                                                         RelationGetRelid(toastrel), 0,
@@ -10289,8 +10237,7 @@ ATExecSetTableSpace(Oid tableOid, Oid newTableSpace, LOCKMODE lockmode)
        /* update the pg_class row */
        rd_rel->reltablespace = (newTableSpace == MyDatabaseTableSpace) ? InvalidOid : newTableSpace;
        rd_rel->relfilenode = newrelfilenode;
-       simple_heap_update(pg_class, &tuple->t_self, tuple);
-       CatalogUpdateIndexes(pg_class, tuple);
+       CatalogTupleUpdate(pg_class, &tuple->t_self, tuple);
 
        InvokeObjectPostAlterHook(RelationRelationId, RelationGetRelid(rel), 0);
 
@@ -10940,8 +10887,7 @@ MergeAttributesIntoExisting(Relation child_rel, Relation parent_rel)
                                childatt->attislocal = false;
                        }
 
-                       simple_heap_update(attrrel, &tuple->t_self, tuple);
-                       CatalogUpdateIndexes(attrrel, tuple);
+                       CatalogTupleUpdate(attrrel, &tuple->t_self, tuple);
                        heap_freetuple(tuple);
                }
                else
@@ -10980,8 +10926,7 @@ MergeAttributesIntoExisting(Relation child_rel, Relation parent_rel)
                                childatt->attislocal = false;
                        }
 
-                       simple_heap_update(attrrel, &tuple->t_self, tuple);
-                       CatalogUpdateIndexes(attrrel, tuple);
+                       CatalogTupleUpdate(attrrel, &tuple->t_self, tuple);
                        heap_freetuple(tuple);
                }
                else
@@ -11118,8 +11063,7 @@ MergeConstraintsIntoExisting(Relation child_rel, Relation parent_rel)
                                child_con->conislocal = false;
                        }
 
-                       simple_heap_update(catalog_relation, &child_copy->t_self, child_copy);
-                       CatalogUpdateIndexes(catalog_relation, child_copy);
+                       CatalogTupleUpdate(catalog_relation, &child_copy->t_self, child_copy);
                        heap_freetuple(child_copy);
 
                        found = true;
@@ -11289,8 +11233,7 @@ RemoveInheritance(Relation child_rel, Relation parent_rel)
                        if (copy_att->attinhcount == 0)
                                copy_att->attislocal = true;
 
-                       simple_heap_update(catalogRelation, &copyTuple->t_self, copyTuple);
-                       CatalogUpdateIndexes(catalogRelation, copyTuple);
+                       CatalogTupleUpdate(catalogRelation, &copyTuple->t_self, copyTuple);
                        heap_freetuple(copyTuple);
                }
        }
@@ -11364,8 +11307,7 @@ RemoveInheritance(Relation child_rel, Relation parent_rel)
                        if (copy_con->coninhcount == 0)
                                copy_con->conislocal = true;
 
-                       simple_heap_update(catalogRelation, &copyTuple->t_self, copyTuple);
-                       CatalogUpdateIndexes(catalogRelation, copyTuple);
+                       CatalogTupleUpdate(catalogRelation, &copyTuple->t_self, copyTuple);
                        heap_freetuple(copyTuple);
                }
        }
@@ -11565,8 +11507,7 @@ ATExecAddOf(Relation rel, const TypeName *ofTypename, LOCKMODE lockmode)
        if (!HeapTupleIsValid(classtuple))
                elog(ERROR, "cache lookup failed for relation %u", relid);
        ((Form_pg_class) GETSTRUCT(classtuple))->reloftype = typeid;
-       simple_heap_update(relationRelation, &classtuple->t_self, classtuple);
-       CatalogUpdateIndexes(relationRelation, classtuple);
+       CatalogTupleUpdate(relationRelation, &classtuple->t_self, classtuple);
 
        InvokeObjectPostAlterHook(RelationRelationId, relid, 0);
 
@@ -11610,8 +11551,7 @@ ATExecDropOf(Relation rel, LOCKMODE lockmode)
        if (!HeapTupleIsValid(tuple))
                elog(ERROR, "cache lookup failed for relation %u", relid);
        ((Form_pg_class) GETSTRUCT(tuple))->reloftype = InvalidOid;
-       simple_heap_update(relationRelation, &tuple->t_self, tuple);
-       CatalogUpdateIndexes(relationRelation, tuple);
+       CatalogTupleUpdate(relationRelation, &tuple->t_self, tuple);
 
        InvokeObjectPostAlterHook(RelationRelationId, relid, 0);
 
@@ -11651,8 +11591,7 @@ relation_mark_replica_identity(Relation rel, char ri_type, Oid indexOid,
        if (pg_class_form->relreplident != ri_type)
        {
                pg_class_form->relreplident = ri_type;
-               simple_heap_update(pg_class, &pg_class_tuple->t_self, pg_class_tuple);
-               CatalogUpdateIndexes(pg_class, pg_class_tuple);
+               CatalogTupleUpdate(pg_class, &pg_class_tuple->t_self, pg_class_tuple);
        }
        heap_close(pg_class, RowExclusiveLock);
        heap_freetuple(pg_class_tuple);
@@ -11711,8 +11650,7 @@ relation_mark_replica_identity(Relation rel, char ri_type, Oid indexOid,
 
                if (dirty)
                {
-                       simple_heap_update(pg_index, &pg_index_tuple->t_self, pg_index_tuple);
-                       CatalogUpdateIndexes(pg_index, pg_index_tuple);
+                       CatalogTupleUpdate(pg_index, &pg_index_tuple->t_self, pg_index_tuple);
                        InvokeObjectPostAlterHookArg(IndexRelationId, thisIndexOid, 0,
                                                                                 InvalidOid, is_internal);
                }
@@ -11861,10 +11799,7 @@ ATExecEnableRowSecurity(Relation rel)
                elog(ERROR, "cache lookup failed for relation %u", relid);
 
        ((Form_pg_class) GETSTRUCT(tuple))->relrowsecurity = true;
-       simple_heap_update(pg_class, &tuple->t_self, tuple);
-
-       /* keep catalog indexes current */
-       CatalogUpdateIndexes(pg_class, tuple);
+       CatalogTupleUpdate(pg_class, &tuple->t_self, tuple);
 
        heap_close(pg_class, RowExclusiveLock);
        heap_freetuple(tuple);
@@ -11888,10 +11823,7 @@ ATExecDisableRowSecurity(Relation rel)
                elog(ERROR, "cache lookup failed for relation %u", relid);
 
        ((Form_pg_class) GETSTRUCT(tuple))->relrowsecurity = false;
-       simple_heap_update(pg_class, &tuple->t_self, tuple);
-
-       /* keep catalog indexes current */
-       CatalogUpdateIndexes(pg_class, tuple);
+       CatalogTupleUpdate(pg_class, &tuple->t_self, tuple);
 
        heap_close(pg_class, RowExclusiveLock);
        heap_freetuple(tuple);
@@ -11917,10 +11849,7 @@ ATExecForceNoForceRowSecurity(Relation rel, bool force_rls)
                elog(ERROR, "cache lookup failed for relation %u", relid);
 
        ((Form_pg_class) GETSTRUCT(tuple))->relforcerowsecurity = force_rls;
-       simple_heap_update(pg_class, &tuple->t_self, tuple);
-
-       /* keep catalog indexes current */
-       CatalogUpdateIndexes(pg_class, tuple);
+       CatalogTupleUpdate(pg_class, &tuple->t_self, tuple);
 
        heap_close(pg_class, RowExclusiveLock);
        heap_freetuple(tuple);
@@ -11988,8 +11917,7 @@ ATExecGenericOptions(Relation rel, List *options)
        tuple = heap_modify_tuple(tuple, RelationGetDescr(ftrel),
                                                          repl_val, repl_null, repl_repl);
 
-       simple_heap_update(ftrel, &tuple->t_self, tuple);
-       CatalogUpdateIndexes(ftrel, tuple);
+       CatalogTupleUpdate(ftrel, &tuple->t_self, tuple);
 
        /*
         * Invalidate relcache so that all sessions will refresh any cached plans
@@ -12284,8 +12212,7 @@ AlterRelationNamespaceInternal(Relation classRel, Oid relOid,
                /* classTup is a copy, so OK to scribble on */
                classForm->relnamespace = newNspOid;
 
-               simple_heap_update(classRel, &classTup->t_self, classTup);
-               CatalogUpdateIndexes(classRel, classTup);
+               CatalogTupleUpdate(classRel, &classTup->t_self, classTup);
 
                /* Update dependency on schema if caller said so */
                if (hasDependEntry &&
@@ -13520,8 +13447,7 @@ ATExecDetachPartition(Relation rel, RangeVar *name)
                                                                 new_val, new_null, new_repl);
 
        ((Form_pg_class) GETSTRUCT(newtuple))->relispartition = false;
-       simple_heap_update(classRel, &newtuple->t_self, newtuple);
-       CatalogUpdateIndexes(classRel, newtuple);
+       CatalogTupleUpdate(classRel, &newtuple->t_self, newtuple);
        heap_freetuple(newtuple);
        heap_close(classRel, RowExclusiveLock);
 
index 651e1b303aa6d5564311e282cb689cb74b5d67d8..6e652aa66bdc4890ac4dcfe0ffd4ab3e67ef6376 100644 (file)
@@ -344,9 +344,7 @@ CreateTableSpace(CreateTableSpaceStmt *stmt)
 
        tuple = heap_form_tuple(rel->rd_att, values, nulls);
 
-       tablespaceoid = simple_heap_insert(rel, tuple);
-
-       CatalogUpdateIndexes(rel, tuple);
+       tablespaceoid = CatalogTupleInsert(rel, tuple);
 
        heap_freetuple(tuple);
 
@@ -971,8 +969,7 @@ RenameTableSpace(const char *oldname, const char *newname)
        /* OK, update the entry */
        namestrcpy(&(newform->spcname), newname);
 
-       simple_heap_update(rel, &newtuple->t_self, newtuple);
-       CatalogUpdateIndexes(rel, newtuple);
+       CatalogTupleUpdate(rel, &newtuple->t_self, newtuple);
 
        InvokeObjectPostAlterHook(TableSpaceRelationId, tspId, 0);
 
@@ -1044,8 +1041,7 @@ AlterTableSpaceOptions(AlterTableSpaceOptionsStmt *stmt)
                                                                 repl_null, repl_repl);
 
        /* Update system catalog. */
-       simple_heap_update(rel, &newtuple->t_self, newtuple);
-       CatalogUpdateIndexes(rel, newtuple);
+       CatalogTupleUpdate(rel, &newtuple->t_self, newtuple);
 
        InvokeObjectPostAlterHook(TableSpaceRelationId, HeapTupleGetOid(tup), 0);
 
index f067d0a7bb939f3412a568c8c413e434611e00fd..b3e89a44f72f6fffcf46b52a7d149503ee6451f3 100644 (file)
@@ -773,9 +773,7 @@ CreateTrigger(CreateTrigStmt *stmt, const char *queryString,
        /*
         * Insert tuple into pg_trigger.
         */
-       simple_heap_insert(tgrel, tuple);
-
-       CatalogUpdateIndexes(tgrel, tuple);
+       CatalogTupleInsert(tgrel, tuple);
 
        heap_freetuple(tuple);
        heap_close(tgrel, RowExclusiveLock);
@@ -802,9 +800,7 @@ CreateTrigger(CreateTrigStmt *stmt, const char *queryString,
 
        ((Form_pg_class) GETSTRUCT(tuple))->relhastriggers = true;
 
-       simple_heap_update(pgrel, &tuple->t_self, tuple);
-
-       CatalogUpdateIndexes(pgrel, tuple);
+       CatalogTupleUpdate(pgrel, &tuple->t_self, tuple);
 
        heap_freetuple(tuple);
        heap_close(pgrel, RowExclusiveLock);
@@ -1444,10 +1440,7 @@ renametrig(RenameStmt *stmt)
                namestrcpy(&((Form_pg_trigger) GETSTRUCT(tuple))->tgname,
                                   stmt->newname);
 
-               simple_heap_update(tgrel, &tuple->t_self, tuple);
-
-               /* keep system catalog indexes current */
-               CatalogUpdateIndexes(tgrel, tuple);
+               CatalogTupleUpdate(tgrel, &tuple->t_self, tuple);
 
                InvokeObjectPostAlterHook(TriggerRelationId,
                                                                  HeapTupleGetOid(tuple), 0);
@@ -1560,10 +1553,7 @@ EnableDisableTrigger(Relation rel, const char *tgname,
 
                        newtrig->tgenabled = fires_when;
 
-                       simple_heap_update(tgrel, &newtup->t_self, newtup);
-
-                       /* Keep catalog indexes current */
-                       CatalogUpdateIndexes(tgrel, newtup);
+                       CatalogTupleUpdate(tgrel, &newtup->t_self, newtup);
 
                        heap_freetuple(newtup);
 
index 479a160815b2117f17e61d2bbbf8db0ded9b8280..988930b1c553e92bcddcfb992dfb1d45000b7fc1 100644 (file)
@@ -271,9 +271,7 @@ DefineTSParser(List *names, List *parameters)
 
        tup = heap_form_tuple(prsRel->rd_att, values, nulls);
 
-       prsOid = simple_heap_insert(prsRel, tup);
-
-       CatalogUpdateIndexes(prsRel, tup);
+       prsOid = CatalogTupleInsert(prsRel, tup);
 
        address = makeParserDependencies(tup);
 
@@ -482,9 +480,7 @@ DefineTSDictionary(List *names, List *parameters)
 
        tup = heap_form_tuple(dictRel->rd_att, values, nulls);
 
-       dictOid = simple_heap_insert(dictRel, tup);
-
-       CatalogUpdateIndexes(dictRel, tup);
+       dictOid = CatalogTupleInsert(dictRel, tup);
 
        address = makeDictionaryDependencies(tup);
 
@@ -620,9 +616,7 @@ AlterTSDictionary(AlterTSDictionaryStmt *stmt)
        newtup = heap_modify_tuple(tup, RelationGetDescr(rel),
                                                           repl_val, repl_null, repl_repl);
 
-       simple_heap_update(rel, &newtup->t_self, newtup);
-
-       CatalogUpdateIndexes(rel, newtup);
+       CatalogTupleUpdate(rel, &newtup->t_self, newtup);
 
        InvokeObjectPostAlterHook(TSDictionaryRelationId, dictId, 0);
 
@@ -806,9 +800,7 @@ DefineTSTemplate(List *names, List *parameters)
 
        tup = heap_form_tuple(tmplRel->rd_att, values, nulls);
 
-       tmplOid = simple_heap_insert(tmplRel, tup);
-
-       CatalogUpdateIndexes(tmplRel, tup);
+       tmplOid = CatalogTupleInsert(tmplRel, tup);
 
        address = makeTSTemplateDependencies(tup);
 
@@ -1066,9 +1058,7 @@ DefineTSConfiguration(List *names, List *parameters, ObjectAddress *copied)
 
        tup = heap_form_tuple(cfgRel->rd_att, values, nulls);
 
-       cfgOid = simple_heap_insert(cfgRel, tup);
-
-       CatalogUpdateIndexes(cfgRel, tup);
+       cfgOid = CatalogTupleInsert(cfgRel, tup);
 
        if (OidIsValid(sourceOid))
        {
@@ -1106,9 +1096,7 @@ DefineTSConfiguration(List *names, List *parameters, ObjectAddress *copied)
 
                        newmaptup = heap_form_tuple(mapRel->rd_att, mapvalues, mapnulls);
 
-                       simple_heap_insert(mapRel, newmaptup);
-
-                       CatalogUpdateIndexes(mapRel, newmaptup);
+                       CatalogTupleInsert(mapRel, newmaptup);
 
                        heap_freetuple(newmaptup);
                }
@@ -1409,9 +1397,7 @@ MakeConfigurationMapping(AlterTSConfigurationStmt *stmt,
                                newtup = heap_modify_tuple(maptup,
                                                                                   RelationGetDescr(relMap),
                                                                                   repl_val, repl_null, repl_repl);
-                               simple_heap_update(relMap, &newtup->t_self, newtup);
-
-                               CatalogUpdateIndexes(relMap, newtup);
+                               CatalogTupleUpdate(relMap, &newtup->t_self, newtup);
                        }
                }
 
@@ -1436,8 +1422,7 @@ MakeConfigurationMapping(AlterTSConfigurationStmt *stmt,
                                values[Anum_pg_ts_config_map_mapdict - 1] = ObjectIdGetDatum(dictIds[j]);
 
                                tup = heap_form_tuple(relMap->rd_att, values, nulls);
-                               simple_heap_insert(relMap, tup);
-                               CatalogUpdateIndexes(relMap, tup);
+                               CatalogTupleInsert(relMap, tup);
 
                                heap_freetuple(tup);
                        }
index 4c33d5548444d2bd536d9e9aceee3b6aa2ec0f0b..b848389ab856826534964ef246646734a179d845 100644 (file)
@@ -2221,9 +2221,7 @@ AlterDomainDefault(List *names, Node *defaultRaw)
                                                                 new_record, new_record_nulls,
                                                                 new_record_repl);
 
-       simple_heap_update(rel, &tup->t_self, newtuple);
-
-       CatalogUpdateIndexes(rel, newtuple);
+       CatalogTupleUpdate(rel, &tup->t_self, newtuple);
 
        /* Rebuild dependencies */
        GenerateTypeDependencies(typTup->typnamespace,
@@ -2360,9 +2358,7 @@ AlterDomainNotNull(List *names, bool notNull)
         */
        typTup->typnotnull = notNull;
 
-       simple_heap_update(typrel, &tup->t_self, tup);
-
-       CatalogUpdateIndexes(typrel, tup);
+       CatalogTupleUpdate(typrel, &tup->t_self, tup);
 
        InvokeObjectPostAlterHook(TypeRelationId, domainoid, 0);
 
@@ -2662,8 +2658,7 @@ AlterDomainValidateConstraint(List *names, char *constrName)
        copyTuple = heap_copytuple(tuple);
        copy_con = (Form_pg_constraint) GETSTRUCT(copyTuple);
        copy_con->convalidated = true;
-       simple_heap_update(conrel, &copyTuple->t_self, copyTuple);
-       CatalogUpdateIndexes(conrel, copyTuple);
+       CatalogTupleUpdate(conrel, &copyTuple->t_self, copyTuple);
 
        InvokeObjectPostAlterHook(ConstraintRelationId,
                                                          HeapTupleGetOid(copyTuple), 0);
@@ -3404,9 +3399,7 @@ AlterTypeOwnerInternal(Oid typeOid, Oid newOwnerId)
        tup = heap_modify_tuple(tup, RelationGetDescr(rel), repl_val, repl_null,
                                                        repl_repl);
 
-       simple_heap_update(rel, &tup->t_self, tup);
-
-       CatalogUpdateIndexes(rel, tup);
+       CatalogTupleUpdate(rel, &tup->t_self, tup);
 
        /* If it has an array type, update that too */
        if (OidIsValid(typTup->typarray))
@@ -3566,8 +3559,7 @@ AlterTypeNamespaceInternal(Oid typeOid, Oid nspOid,
                /* tup is a copy, so we can scribble directly on it */
                typform->typnamespace = nspOid;
 
-               simple_heap_update(rel, &tup->t_self, tup);
-               CatalogUpdateIndexes(rel, tup);
+               CatalogTupleUpdate(rel, &tup->t_self, tup);
        }
 
        /*
index b746982d2ee39b5790981f72e8a5a47c0242cf66..4422fadd524432426d746e21ce75a1f27bc10cda 100644 (file)
@@ -433,8 +433,7 @@ CreateRole(ParseState *pstate, CreateRoleStmt *stmt)
        /*
         * Insert new record in the pg_authid table
         */
-       roleid = simple_heap_insert(pg_authid_rel, tuple);
-       CatalogUpdateIndexes(pg_authid_rel, tuple);
+       roleid = CatalogTupleInsert(pg_authid_rel, tuple);
 
        /*
         * Advance command counter so we can see new record; else tests in
@@ -838,10 +837,7 @@ AlterRole(AlterRoleStmt *stmt)
 
        new_tuple = heap_modify_tuple(tuple, pg_authid_dsc, new_record,
                                                                  new_record_nulls, new_record_repl);
-       simple_heap_update(pg_authid_rel, &tuple->t_self, new_tuple);
-
-       /* Update indexes */
-       CatalogUpdateIndexes(pg_authid_rel, new_tuple);
+       CatalogTupleUpdate(pg_authid_rel, &tuple->t_self, new_tuple);
 
        InvokeObjectPostAlterHook(AuthIdRelationId, roleid, 0);
 
@@ -1243,9 +1239,7 @@ RenameRole(const char *oldname, const char *newname)
        }
 
        newtuple = heap_modify_tuple(oldtuple, dsc, repl_val, repl_null, repl_repl);
-       simple_heap_update(rel, &oldtuple->t_self, newtuple);
-
-       CatalogUpdateIndexes(rel, newtuple);
+       CatalogTupleUpdate(rel, &oldtuple->t_self, newtuple);
 
        InvokeObjectPostAlterHook(AuthIdRelationId, roleid, 0);
 
@@ -1530,16 +1524,14 @@ AddRoleMems(const char *rolename, Oid roleid,
                        tuple = heap_modify_tuple(authmem_tuple, pg_authmem_dsc,
                                                                          new_record,
                                                                          new_record_nulls, new_record_repl);
-                       simple_heap_update(pg_authmem_rel, &tuple->t_self, tuple);
-                       CatalogUpdateIndexes(pg_authmem_rel, tuple);
+                       CatalogTupleUpdate(pg_authmem_rel, &tuple->t_self, tuple);
                        ReleaseSysCache(authmem_tuple);
                }
                else
                {
                        tuple = heap_form_tuple(pg_authmem_dsc,
                                                                        new_record, new_record_nulls);
-                       simple_heap_insert(pg_authmem_rel, tuple);
-                       CatalogUpdateIndexes(pg_authmem_rel, tuple);
+                       CatalogTupleInsert(pg_authmem_rel, tuple);
                }
 
                /* CCI after each change, in case there are duplicates in list */
@@ -1647,8 +1639,7 @@ DelRoleMems(const char *rolename, Oid roleid,
                        tuple = heap_modify_tuple(authmem_tuple, pg_authmem_dsc,
                                                                          new_record,
                                                                          new_record_nulls, new_record_repl);
-                       simple_heap_update(pg_authmem_rel, &tuple->t_self, tuple);
-                       CatalogUpdateIndexes(pg_authmem_rel, tuple);
+                       CatalogTupleUpdate(pg_authmem_rel, &tuple->t_self, tuple);
                }
 
                ReleaseSysCache(authmem_tuple);
index d7dda6a7b83378b9539a7572dcec978b5cf95503..7e88f97f086e4f0adbd0fa417637786b9950cc16 100644 (file)
@@ -299,8 +299,7 @@ replorigin_create(char *roname)
                        values[Anum_pg_replication_origin_roname - 1] = roname_d;
 
                        tuple = heap_form_tuple(RelationGetDescr(rel), values, nulls);
-                       simple_heap_insert(rel, tuple);
-                       CatalogUpdateIndexes(rel, tuple);
+                       CatalogTupleInsert(rel, tuple);
                        CommandCounterIncrement();
                        break;
                }
index 481868bf53d5dbfc95ab745aae1388f91450917a..396c36f18145b82dad182a8b18beee85bc6837e4 100644 (file)
@@ -124,7 +124,7 @@ InsertRule(char *rulname,
                tup = heap_modify_tuple(oldtup, RelationGetDescr(pg_rewrite_desc),
                                                                values, nulls, replaces);
 
-               simple_heap_update(pg_rewrite_desc, &tup->t_self, tup);
+               CatalogTupleUpdate(pg_rewrite_desc, &tup->t_self, tup);
 
                ReleaseSysCache(oldtup);
 
@@ -135,11 +135,9 @@ InsertRule(char *rulname,
        {
                tup = heap_form_tuple(pg_rewrite_desc->rd_att, values, nulls);
 
-               rewriteObjectId = simple_heap_insert(pg_rewrite_desc, tup);
+               rewriteObjectId = CatalogTupleInsert(pg_rewrite_desc, tup);
        }
 
-       /* Need to update indexes in either case */
-       CatalogUpdateIndexes(pg_rewrite_desc, tup);
 
        heap_freetuple(tup);
 
@@ -613,8 +611,7 @@ DefineQueryRewrite(char *rulename,
                classForm->relminmxid = InvalidMultiXactId;
                classForm->relreplident = REPLICA_IDENTITY_NOTHING;
 
-               simple_heap_update(relationRelation, &classTup->t_self, classTup);
-               CatalogUpdateIndexes(relationRelation, classTup);
+               CatalogTupleUpdate(relationRelation, &classTup->t_self, classTup);
 
                heap_freetuple(classTup);
                heap_close(relationRelation, RowExclusiveLock);
@@ -866,10 +863,7 @@ EnableDisableRule(Relation rel, const char *rulename,
        {
                ((Form_pg_rewrite) GETSTRUCT(ruletup))->ev_enabled =
                        CharGetDatum(fires_when);
-               simple_heap_update(pg_rewrite_desc, &ruletup->t_self, ruletup);
-
-               /* keep system catalog indexes current */
-               CatalogUpdateIndexes(pg_rewrite_desc, ruletup);
+               CatalogTupleUpdate(pg_rewrite_desc, &ruletup->t_self, ruletup);
 
                changed = true;
        }
@@ -985,10 +979,7 @@ RenameRewriteRule(RangeVar *relation, const char *oldName,
        /* OK, do the update */
        namestrcpy(&(ruleform->rulename), newName);
 
-       simple_heap_update(pg_rewrite_desc, &ruletup->t_self, ruletup);
-
-       /* keep system catalog indexes current */
-       CatalogUpdateIndexes(pg_rewrite_desc, ruletup);
+       CatalogTupleUpdate(pg_rewrite_desc, &ruletup->t_self, ruletup);
 
        heap_freetuple(ruletup);
        heap_close(pg_rewrite_desc, RowExclusiveLock);
index 0154072db13d1193b6b4a692ddf6fbbd33079ab2..c4d05d26d462cfe4713d2a1a0a41e84e6bbc434f 100644 (file)
@@ -72,10 +72,7 @@ SetRelationRuleStatus(Oid relationId, bool relHasRules)
                /* Do the update */
                classForm->relhasrules = relHasRules;
 
-               simple_heap_update(relationRelation, &tuple->t_self, tuple);
-
-               /* Keep the catalog indexes up to date */
-               CatalogUpdateIndexes(relationRelation, tuple);
+               CatalogTupleUpdate(relationRelation, &tuple->t_self, tuple);
        }
        else
        {
index 262b0b271aebd422bcad338f7d1c88b56a0f1027..15e1b15483e6591c0e654d33847fd9d7d119b077 100644 (file)
@@ -678,8 +678,7 @@ inv_write(LargeObjectDesc *obj_desc, const char *buf, int nbytes)
                        replace[Anum_pg_largeobject_data - 1] = true;
                        newtup = heap_modify_tuple(oldtuple, RelationGetDescr(lo_heap_r),
                                                                           values, nulls, replace);
-                       simple_heap_update(lo_heap_r, &newtup->t_self, newtup);
-                       CatalogIndexInsert(indstate, newtup);
+                       CatalogTupleUpdate(lo_heap_r, &newtup->t_self, newtup);
                        heap_freetuple(newtup);
 
                        /*
@@ -721,8 +720,7 @@ inv_write(LargeObjectDesc *obj_desc, const char *buf, int nbytes)
                        values[Anum_pg_largeobject_pageno - 1] = Int32GetDatum(pageno);
                        values[Anum_pg_largeobject_data - 1] = PointerGetDatum(&workbuf);
                        newtup = heap_form_tuple(lo_heap_r->rd_att, values, nulls);
-                       simple_heap_insert(lo_heap_r, newtup);
-                       CatalogIndexInsert(indstate, newtup);
+                       CatalogTupleInsert(lo_heap_r, newtup);
                        heap_freetuple(newtup);
                }
                pageno++;
@@ -850,8 +848,7 @@ inv_truncate(LargeObjectDesc *obj_desc, int64 len)
                replace[Anum_pg_largeobject_data - 1] = true;
                newtup = heap_modify_tuple(oldtuple, RelationGetDescr(lo_heap_r),
                                                                   values, nulls, replace);
-               simple_heap_update(lo_heap_r, &newtup->t_self, newtup);
-               CatalogIndexInsert(indstate, newtup);
+               CatalogTupleUpdate(lo_heap_r, &newtup->t_self, newtup);
                heap_freetuple(newtup);
        }
        else
@@ -888,8 +885,7 @@ inv_truncate(LargeObjectDesc *obj_desc, int64 len)
                values[Anum_pg_largeobject_pageno - 1] = Int32GetDatum(pageno);
                values[Anum_pg_largeobject_data - 1] = PointerGetDatum(&workbuf);
                newtup = heap_form_tuple(lo_heap_r->rd_att, values, nulls);
-               simple_heap_insert(lo_heap_r, newtup);
-               CatalogIndexInsert(indstate, newtup);
+               CatalogTupleInsert(lo_heap_r, newtup);
                heap_freetuple(newtup);
        }
 
index 26ff7e187a24ecec104f22ca80b38764c05f15ea..8a7c560e46c0ff7544baede33ea727206bf70f67 100644 (file)
@@ -3484,8 +3484,7 @@ RelationSetNewRelfilenode(Relation relation, char persistence,
        classform->relminmxid = minmulti;
        classform->relpersistence = persistence;
 
-       simple_heap_update(pg_class, &tuple->t_self, tuple);
-       CatalogUpdateIndexes(pg_class, tuple);
+       CatalogTupleUpdate(pg_class, &tuple->t_self, tuple);
 
        heap_freetuple(tuple);
 
index a3635a4d0560289b587113cbbfa37291636c4e35..977dc9c7ca26b9d32ec3bc9b944b07a9e6d67ffc 100644 (file)
@@ -32,7 +32,9 @@ extern CatalogIndexState CatalogOpenIndexes(Relation heapRel);
 extern void CatalogCloseIndexes(CatalogIndexState indstate);
 extern void CatalogIndexInsert(CatalogIndexState indstate,
                                   HeapTuple heapTuple);
-extern void CatalogUpdateIndexes(Relation heapRel, HeapTuple heapTuple);
+extern Oid CatalogTupleInsert(Relation heapRel, HeapTuple tup);
+extern void CatalogTupleUpdate(Relation heapRel, ItemPointer otid,
+                                  HeapTuple tup);
 
 
 /*