diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c index 00a9aea556..e73226dc81 100644 --- a/src/backend/catalog/aclchk.c +++ b/src/backend/catalog/aclchk.c @@ -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); } } diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c index 7ce9115832..cb6b6eb46c 100644 --- a/src/backend/catalog/heap.c +++ b/src/backend/catalog/heap.c @@ -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); diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c index 26cbc0e06a..618e170b6b 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -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 diff --git a/src/backend/catalog/indexing.c b/src/backend/catalog/indexing.c index 1915ca3779..c26765ab00 100644 --- a/src/backend/catalog/indexing.c +++ b/src/backend/catalog/indexing.c @@ -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); } diff --git a/src/backend/catalog/pg_aggregate.c b/src/backend/catalog/pg_aggregate.c index 3a4e22f0d6..ac06823999 100644 --- a/src/backend/catalog/pg_aggregate.c +++ b/src/backend/catalog/pg_aggregate.c @@ -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); diff --git a/src/backend/catalog/pg_collation.c b/src/backend/catalog/pg_collation.c index 694c0f67f5..686d392123 100644 --- a/src/backend/catalog/pg_collation.c +++ b/src/backend/catalog/pg_collation.c @@ -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; diff --git a/src/backend/catalog/pg_constraint.c b/src/backend/catalog/pg_constraint.c index b5a0ce95c1..cf43f7e29b 100644 --- a/src/backend/catalog/pg_constraint.c +++ b/src/backend/catalog/pg_constraint.c @@ -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 diff --git a/src/backend/catalog/pg_conversion.c b/src/backend/catalog/pg_conversion.c index adaf7b8ee6..d1e2b93086 100644 --- a/src/backend/catalog/pg_conversion.c +++ b/src/backend/catalog/pg_conversion.c @@ -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); diff --git a/src/backend/catalog/pg_db_role_setting.c b/src/backend/catalog/pg_db_role_setting.c index 117cc8d1eb..3dfe9ac5a7 100644 --- a/src/backend/catalog/pg_db_role_setting.c +++ b/src/backend/catalog/pg_db_role_setting.c @@ -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, diff --git a/src/backend/catalog/pg_depend.c b/src/backend/catalog/pg_depend.c index b71fa1b981..e114a9cdfe 100644 --- a/src/backend/catalog/pg_depend.c +++ b/src/backend/catalog/pg_depend.c @@ -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); } diff --git a/src/backend/catalog/pg_enum.c b/src/backend/catalog/pg_enum.c index 089a9a0a65..1fc6f7c6b4 100644 --- a/src/backend/catalog/pg_enum.c +++ b/src/backend/catalog/pg_enum.c @@ -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); diff --git a/src/backend/catalog/pg_largeobject.c b/src/backend/catalog/pg_largeobject.c index 24edf6a6b6..754ad9f79c 100644 --- a/src/backend/catalog/pg_largeobject.c +++ b/src/backend/catalog/pg_largeobject.c @@ -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); diff --git a/src/backend/catalog/pg_namespace.c b/src/backend/catalog/pg_namespace.c index f048ad4207..5672536d31 100644 --- a/src/backend/catalog/pg_namespace.c +++ b/src/backend/catalog/pg_namespace.c @@ -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 */ diff --git a/src/backend/catalog/pg_operator.c b/src/backend/catalog/pg_operator.c index 556f9fef13..b5cbc04889 100644 --- a/src/backend/catalog/pg_operator.c +++ b/src/backend/catalog/pg_operator.c @@ -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. diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c index 6ab849c6ef..ae27848116 100644 --- a/src/backend/catalog/pg_proc.c +++ b/src/backend/catalog/pg_proc.c @@ -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); diff --git a/src/backend/catalog/pg_publication.c b/src/backend/catalog/pg_publication.c index 00ed28f0b2..0f784690ce 100644 --- a/src/backend/catalog/pg_publication.c +++ b/src/backend/catalog/pg_publication.c @@ -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); diff --git a/src/backend/catalog/pg_range.c b/src/backend/catalog/pg_range.c index d3a4c264b3..fcbf374bd6 100644 --- a/src/backend/catalog/pg_range.c +++ b/src/backend/catalog/pg_range.c @@ -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 */ diff --git a/src/backend/catalog/pg_shdepend.c b/src/backend/catalog/pg_shdepend.c index 60ed957655..4b68e05e51 100644 --- a/src/backend/catalog/pg_shdepend.c +++ b/src/backend/catalog/pg_shdepend.c @@ -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); diff --git a/src/backend/catalog/pg_type.c b/src/backend/catalog/pg_type.c index 6d9a3247a9..04c10c6347 100644 --- a/src/backend/catalog/pg_type.c +++ b/src/backend/catalog/pg_type.c @@ -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); diff --git a/src/backend/catalog/toasting.c b/src/backend/catalog/toasting.c index ee4a182e35..e5f773d51d 100644 --- a/src/backend/catalog/toasting.c +++ b/src/backend/catalog/toasting.c @@ -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 { diff --git a/src/backend/commands/alter.c b/src/backend/commands/alter.c index 768fcc82dd..d6195e49f5 100644 --- a/src/backend/commands/alter.c +++ b/src/backend/commands/alter.c @@ -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) diff --git a/src/backend/commands/amcmds.c b/src/backend/commands/amcmds.c index 29061b888a..b6e60469f3 100644 --- a/src/backend/commands/amcmds.c +++ b/src/backend/commands/amcmds.c @@ -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; diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c index c9f6afeb1a..ed3acb1673 100644 --- a/src/backend/commands/analyze.c +++ b/src/backend/commands/analyze.c @@ -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); } diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c index f9309fcf47..e60e613315 100644 --- a/src/backend/commands/cluster.c +++ b/src/backend/commands/cluster.c @@ -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); } diff --git a/src/backend/commands/comment.c b/src/backend/commands/comment.c index ada0b0356a..8a437de815 100644 --- a/src/backend/commands/comment.c +++ b/src/backend/commands/comment.c @@ -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 */ diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c index 6ad8fd77b1..c3eb3c79df 100644 --- a/src/backend/commands/dbcommands.c +++ b/src/backend/commands/dbcommands.c @@ -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); diff --git a/src/backend/commands/event_trigger.c b/src/backend/commands/event_trigger.c index 8125537361..94c4ea5dd2 100644 --- a/src/backend/commands/event_trigger.c +++ b/src/backend/commands/event_trigger.c @@ -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, diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c index f23c6977cb..14738ea584 100644 --- a/src/backend/commands/extension.c +++ b/src/backend/commands/extension.c @@ -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); diff --git a/src/backend/commands/foreigncmds.c b/src/backend/commands/foreigncmds.c index 6ff8b6998b..ad8ca2d8eb 100644 --- a/src/backend/commands/foreigncmds.c +++ b/src/backend/commands/foreigncmds.c @@ -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); diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c index ec833c382d..f4fa8d35a4 100644 --- a/src/backend/commands/functioncmds.c +++ b/src/backend/commands/functioncmds.c @@ -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); diff --git a/src/backend/commands/matview.c b/src/backend/commands/matview.c index b7daf1ca0a..a18c917336 100644 --- a/src/backend/commands/matview.c +++ b/src/backend/commands/matview.c @@ -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); diff --git a/src/backend/commands/opclasscmds.c b/src/backend/commands/opclasscmds.c index bc43483b94..99a39bdd74 100644 --- a/src/backend/commands/opclasscmds.c +++ b/src/backend/commands/opclasscmds.c @@ -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); diff --git a/src/backend/commands/operatorcmds.c b/src/backend/commands/operatorcmds.c index a273376e21..66d2452dbe 100644 --- a/src/backend/commands/operatorcmds.c +++ b/src/backend/commands/operatorcmds.c @@ -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); diff --git a/src/backend/commands/policy.c b/src/backend/commands/policy.c index 5d9d3a6a05..da2b1ae0e7 100644 --- a/src/backend/commands/policy.c +++ b/src/backend/commands/policy.c @@ -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); diff --git a/src/backend/commands/proclang.c b/src/backend/commands/proclang.c index b684f413c0..4c8daa5928 100644 --- a/src/backend/commands/proclang.c +++ b/src/backend/commands/proclang.c @@ -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. diff --git a/src/backend/commands/publicationcmds.c b/src/backend/commands/publicationcmds.c index 173b076648..bc0f653991 100644 --- a/src/backend/commands/publicationcmds.c +++ b/src/backend/commands/publicationcmds.c @@ -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, diff --git a/src/backend/commands/schemacmds.c b/src/backend/commands/schemacmds.c index c3b37b2625..d14c269803 100644 --- a/src/backend/commands/schemacmds.c +++ b/src/backend/commands/schemacmds.c @@ -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); diff --git a/src/backend/commands/seclabel.c b/src/backend/commands/seclabel.c index 324f2e7bd9..506c90f6e2 100644 --- a/src/backend/commands/seclabel.c +++ b/src/backend/commands/seclabel.c @@ -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); } diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c index 0c673f5763..6ac76b1e56 100644 --- a/src/backend/commands/sequence.c +++ b/src/backend/commands/sequence.c @@ -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; diff --git a/src/backend/commands/subscriptioncmds.c b/src/backend/commands/subscriptioncmds.c index 41ef7a3aa4..5de999928f 100644 --- a/src/backend/commands/subscriptioncmds.c +++ b/src/backend/commands/subscriptioncmds.c @@ -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, diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 90f2f7f00e..764071bd11 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -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, ©Tuple->t_self, copyTuple); - CatalogUpdateIndexes(conrel, copyTuple); + CatalogTupleUpdate(conrel, ©Tuple->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, ©Tuple->t_self, copyTuple); - CatalogUpdateIndexes(tgrel, copyTuple); + CatalogTupleUpdate(tgrel, ©Tuple->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, ©Tuple->t_self, copyTuple); - CatalogUpdateIndexes(conrel, copyTuple); + CatalogTupleUpdate(conrel, ©Tuple->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, ©_tuple->t_self, copy_tuple); - CatalogUpdateIndexes(conrel, copy_tuple); + CatalogTupleUpdate(conrel, ©_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, ©_tuple->t_self, copy_tuple); - CatalogUpdateIndexes(conrel, copy_tuple); + CatalogTupleUpdate(conrel, ©_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, ©Tuple->t_self, copyTuple); - CatalogUpdateIndexes(catalogRelation, copyTuple); + CatalogTupleUpdate(catalogRelation, ©Tuple->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, ©Tuple->t_self, copyTuple); - CatalogUpdateIndexes(catalogRelation, copyTuple); + CatalogTupleUpdate(catalogRelation, ©Tuple->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); diff --git a/src/backend/commands/tablespace.c b/src/backend/commands/tablespace.c index 651e1b303a..6e652aa66b 100644 --- a/src/backend/commands/tablespace.c +++ b/src/backend/commands/tablespace.c @@ -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); diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index f067d0a7bb..b3e89a44f7 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -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); diff --git a/src/backend/commands/tsearchcmds.c b/src/backend/commands/tsearchcmds.c index 479a160815..988930b1c5 100644 --- a/src/backend/commands/tsearchcmds.c +++ b/src/backend/commands/tsearchcmds.c @@ -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); } diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c index 4c33d55484..b848389ab8 100644 --- a/src/backend/commands/typecmds.c +++ b/src/backend/commands/typecmds.c @@ -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, ©Tuple->t_self, copyTuple); - CatalogUpdateIndexes(conrel, copyTuple); + CatalogTupleUpdate(conrel, ©Tuple->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); } /* diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c index b746982d2e..4422fadd52 100644 --- a/src/backend/commands/user.c +++ b/src/backend/commands/user.c @@ -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); diff --git a/src/backend/replication/logical/origin.c b/src/backend/replication/logical/origin.c index d7dda6a7b8..7e88f97f08 100644 --- a/src/backend/replication/logical/origin.c +++ b/src/backend/replication/logical/origin.c @@ -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; } diff --git a/src/backend/rewrite/rewriteDefine.c b/src/backend/rewrite/rewriteDefine.c index 481868bf53..396c36f181 100644 --- a/src/backend/rewrite/rewriteDefine.c +++ b/src/backend/rewrite/rewriteDefine.c @@ -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); diff --git a/src/backend/rewrite/rewriteSupport.c b/src/backend/rewrite/rewriteSupport.c index 0154072db1..c4d05d26d4 100644 --- a/src/backend/rewrite/rewriteSupport.c +++ b/src/backend/rewrite/rewriteSupport.c @@ -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 { diff --git a/src/backend/storage/large_object/inv_api.c b/src/backend/storage/large_object/inv_api.c index 262b0b271a..15e1b15483 100644 --- a/src/backend/storage/large_object/inv_api.c +++ b/src/backend/storage/large_object/inv_api.c @@ -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); } diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index 26ff7e187a..8a7c560e46 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -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); diff --git a/src/include/catalog/indexing.h b/src/include/catalog/indexing.h index a3635a4d05..977dc9c7ca 100644 --- a/src/include/catalog/indexing.h +++ b/src/include/catalog/indexing.h @@ -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); /*