aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/catalog/aclchk.c6
-rw-r--r--src/backend/catalog/dependency.c4
-rw-r--r--src/backend/catalog/heap.c18
-rw-r--r--src/backend/catalog/index.c2
-rw-r--r--src/backend/catalog/indexing.c16
-rw-r--r--src/backend/catalog/pg_collation.c2
-rw-r--r--src/backend/catalog/pg_constraint.c2
-rw-r--r--src/backend/catalog/pg_conversion.c2
-rw-r--r--src/backend/catalog/pg_db_role_setting.c6
-rw-r--r--src/backend/catalog/pg_depend.c6
-rw-r--r--src/backend/catalog/pg_enum.c2
-rw-r--r--src/backend/catalog/pg_largeobject.c4
-rw-r--r--src/backend/catalog/pg_range.c2
-rw-r--r--src/backend/catalog/pg_shdepend.c6
-rw-r--r--src/backend/commands/amcmds.c2
-rw-r--r--src/backend/commands/comment.c8
-rw-r--r--src/backend/commands/dbcommands.c2
-rw-r--r--src/backend/commands/event_trigger.c2
-rw-r--r--src/backend/commands/extension.c2
-rw-r--r--src/backend/commands/foreigncmds.c6
-rw-r--r--src/backend/commands/functioncmds.c8
-rw-r--r--src/backend/commands/opclasscmds.c8
-rw-r--r--src/backend/commands/operatorcmds.c2
-rw-r--r--src/backend/commands/policy.c2
-rw-r--r--src/backend/commands/proclang.c2
-rw-r--r--src/backend/commands/publicationcmds.c5
-rw-r--r--src/backend/commands/schemacmds.c2
-rw-r--r--src/backend/commands/seclabel.c8
-rw-r--r--src/backend/commands/sequence.c2
-rw-r--r--src/backend/commands/subscriptioncmds.c2
-rw-r--r--src/backend/commands/tablecmds.c6
-rw-r--r--src/backend/commands/tablespace.c2
-rw-r--r--src/backend/commands/trigger.c2
-rw-r--r--src/backend/commands/tsearchcmds.c14
-rw-r--r--src/backend/commands/typecmds.c2
-rw-r--r--src/backend/commands/user.c8
-rw-r--r--src/backend/replication/logical/origin.c2
-rw-r--r--src/backend/rewrite/rewriteRemove.c2
-rw-r--r--src/backend/storage/large_object/inv_api.c4
-rw-r--r--src/include/catalog/indexing.h1
40 files changed, 101 insertions, 83 deletions
diff --git a/src/backend/catalog/aclchk.c b/src/backend/catalog/aclchk.c
index e73226dc813..79b7fd5370b 100644
--- a/src/backend/catalog/aclchk.c
+++ b/src/backend/catalog/aclchk.c
@@ -1470,7 +1470,7 @@ RemoveDefaultACLById(Oid defaclOid)
if (!HeapTupleIsValid(tuple))
elog(ERROR, "could not find tuple for default ACL %u", defaclOid);
- simple_heap_delete(rel, &tuple->t_self);
+ CatalogTupleDelete(rel, &tuple->t_self);
systable_endscan(scan);
heap_close(rel, RowExclusiveLock);
@@ -5718,8 +5718,10 @@ recordExtensionInitPrivWorker(Oid objoid, Oid classoid, int objsubid, Acl *new_a
CatalogTupleUpdate(relation, &oldtuple->t_self, oldtuple);
}
else
+ {
/* new_acl is NULL, so delete the entry we found. */
- simple_heap_delete(relation, &oldtuple->t_self);
+ CatalogTupleDelete(relation, &oldtuple->t_self);
+ }
}
else
{
diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c
index 1c43af6effb..fc088b21658 100644
--- a/src/backend/catalog/dependency.c
+++ b/src/backend/catalog/dependency.c
@@ -1062,7 +1062,7 @@ deleteOneObject(const ObjectAddress *object, Relation *depRel, int flags)
while (HeapTupleIsValid(tup = systable_getnext(scan)))
{
- simple_heap_delete(*depRel, &tup->t_self);
+ CatalogTupleDelete(*depRel, &tup->t_self);
}
systable_endscan(scan);
@@ -2467,7 +2467,7 @@ DeleteInitPrivs(const ObjectAddress *object)
NULL, 3, key);
while (HeapTupleIsValid(oldtuple = systable_getnext(scan)))
- simple_heap_delete(relation, &oldtuple->t_self);
+ CatalogTupleDelete(relation, &oldtuple->t_self);
systable_endscan(scan);
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index cb6b6eb46cd..a674401e464 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -1417,7 +1417,7 @@ RelationRemoveInheritance(Oid relid)
NULL, 1, &key);
while (HeapTupleIsValid(tuple = systable_getnext(scan)))
- simple_heap_delete(catalogRelation, &tuple->t_self);
+ CatalogTupleDelete(catalogRelation, &tuple->t_self);
systable_endscan(scan);
heap_close(catalogRelation, RowExclusiveLock);
@@ -1445,7 +1445,7 @@ DeleteRelationTuple(Oid relid)
elog(ERROR, "cache lookup failed for relation %u", relid);
/* delete the relation tuple from pg_class, and finish up */
- simple_heap_delete(pg_class_desc, &tup->t_self);
+ CatalogTupleDelete(pg_class_desc, &tup->t_self);
ReleaseSysCache(tup);
@@ -1482,7 +1482,7 @@ DeleteAttributeTuples(Oid relid)
/* Delete all the matching tuples */
while ((atttup = systable_getnext(scan)) != NULL)
- simple_heap_delete(attrel, &atttup->t_self);
+ CatalogTupleDelete(attrel, &atttup->t_self);
/* Clean up after the scan */
systable_endscan(scan);
@@ -1523,7 +1523,7 @@ DeleteSystemAttributeTuples(Oid relid)
/* Delete all the matching tuples */
while ((atttup = systable_getnext(scan)) != NULL)
- simple_heap_delete(attrel, &atttup->t_self);
+ CatalogTupleDelete(attrel, &atttup->t_self);
/* Clean up after the scan */
systable_endscan(scan);
@@ -1570,7 +1570,7 @@ RemoveAttributeById(Oid relid, AttrNumber attnum)
{
/* System attribute (probably OID) ... just delete the row */
- simple_heap_delete(attr_rel, &tuple->t_self);
+ CatalogTupleDelete(attr_rel, &tuple->t_self);
}
else
{
@@ -1715,7 +1715,7 @@ RemoveAttrDefaultById(Oid attrdefId)
myrel = relation_open(myrelid, AccessExclusiveLock);
/* Now we can delete the pg_attrdef row */
- simple_heap_delete(attrdef_rel, &tuple->t_self);
+ CatalogTupleDelete(attrdef_rel, &tuple->t_self);
systable_endscan(scan);
heap_close(attrdef_rel, RowExclusiveLock);
@@ -1809,7 +1809,7 @@ heap_drop_with_catalog(Oid relid)
if (!HeapTupleIsValid(tuple))
elog(ERROR, "cache lookup failed for foreign table %u", relid);
- simple_heap_delete(rel, &tuple->t_self);
+ CatalogTupleDelete(rel, &tuple->t_self);
ReleaseSysCache(tuple);
heap_close(rel, RowExclusiveLock);
@@ -2764,7 +2764,7 @@ RemoveStatistics(Oid relid, AttrNumber attnum)
/* we must loop even when attnum != 0, in case of inherited stats */
while (HeapTupleIsValid(tuple = systable_getnext(scan)))
- simple_heap_delete(pgstatistic, &tuple->t_self);
+ CatalogTupleDelete(pgstatistic, &tuple->t_self);
systable_endscan(scan);
@@ -3196,7 +3196,7 @@ RemovePartitionKeyByRelId(Oid relid)
elog(ERROR, "cache lookup failed for partition key of relation %u",
relid);
- simple_heap_delete(rel, &tuple->t_self);
+ CatalogTupleDelete(rel, &tuple->t_self);
ReleaseSysCache(tuple);
heap_close(rel, RowExclusiveLock);
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 618e170b6bf..815a694cfcd 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -1573,7 +1573,7 @@ index_drop(Oid indexId, bool concurrent)
hasexprs = !heap_attisnull(tuple, Anum_pg_index_indexprs);
- simple_heap_delete(indexRelation, &tuple->t_self);
+ CatalogTupleDelete(indexRelation, &tuple->t_self);
ReleaseSysCache(tuple);
heap_close(indexRelation, RowExclusiveLock);
diff --git a/src/backend/catalog/indexing.c b/src/backend/catalog/indexing.c
index c26765ab00e..02f64813ec5 100644
--- a/src/backend/catalog/indexing.c
+++ b/src/backend/catalog/indexing.c
@@ -192,3 +192,19 @@ CatalogTupleUpdate(Relation heapRel, ItemPointer otid, HeapTuple tup)
CatalogIndexInsert(indstate, tup);
CatalogCloseIndexes(indstate);
}
+
+/*
+ * CatalogTupleDelete - do heap and indexing work for deleting a catalog tuple
+ *
+ * Delete the tuple identified by tid in the specified catalog.
+ *
+ * With Postgres heaps, there is no index work to do at deletion time;
+ * cleanup will be done later by VACUUM. However, callers of this function
+ * shouldn't have to know that; we'd like a uniform abstraction for all
+ * catalog tuple changes. Hence, provide this currently-trivial wrapper.
+ */
+void
+CatalogTupleDelete(Relation heapRel, ItemPointer tid)
+{
+ simple_heap_delete(heapRel, tid);
+}
diff --git a/src/backend/catalog/pg_collation.c b/src/backend/catalog/pg_collation.c
index 686d392123a..65b6051c0d1 100644
--- a/src/backend/catalog/pg_collation.c
+++ b/src/backend/catalog/pg_collation.c
@@ -191,7 +191,7 @@ RemoveCollationById(Oid collationOid)
tuple = systable_getnext(scandesc);
if (HeapTupleIsValid(tuple))
- simple_heap_delete(rel, &tuple->t_self);
+ CatalogTupleDelete(rel, &tuple->t_self);
else
elog(ERROR, "could not find tuple for collation %u", collationOid);
diff --git a/src/backend/catalog/pg_constraint.c b/src/backend/catalog/pg_constraint.c
index cf43f7e29b0..62be80d800e 100644
--- a/src/backend/catalog/pg_constraint.c
+++ b/src/backend/catalog/pg_constraint.c
@@ -604,7 +604,7 @@ RemoveConstraintById(Oid conId)
elog(ERROR, "constraint %u is not of a known type", conId);
/* Fry the constraint itself */
- simple_heap_delete(conDesc, &tup->t_self);
+ CatalogTupleDelete(conDesc, &tup->t_self);
/* Clean up */
ReleaseSysCache(tup);
diff --git a/src/backend/catalog/pg_conversion.c b/src/backend/catalog/pg_conversion.c
index d1e2b93086c..5746dc349af 100644
--- a/src/backend/catalog/pg_conversion.c
+++ b/src/backend/catalog/pg_conversion.c
@@ -165,7 +165,7 @@ RemoveConversionById(Oid conversionOid)
/* search for the target tuple */
if (HeapTupleIsValid(tuple = heap_getnext(scan, ForwardScanDirection)))
- simple_heap_delete(rel, &tuple->t_self);
+ CatalogTupleDelete(rel, &tuple->t_self);
else
elog(ERROR, "could not find tuple for conversion %u", conversionOid);
heap_endscan(scan);
diff --git a/src/backend/catalog/pg_db_role_setting.c b/src/backend/catalog/pg_db_role_setting.c
index 3dfe9ac5a7d..323471bc83a 100644
--- a/src/backend/catalog/pg_db_role_setting.c
+++ b/src/backend/catalog/pg_db_role_setting.c
@@ -91,7 +91,7 @@ AlterSetting(Oid databaseid, Oid roleid, VariableSetStmt *setstmt)
CatalogTupleUpdate(rel, &tuple->t_self, newtuple);
}
else
- simple_heap_delete(rel, &tuple->t_self);
+ CatalogTupleDelete(rel, &tuple->t_self);
}
}
else if (HeapTupleIsValid(tuple))
@@ -129,7 +129,7 @@ AlterSetting(Oid databaseid, Oid roleid, VariableSetStmt *setstmt)
CatalogTupleUpdate(rel, &tuple->t_self, newtuple);
}
else
- simple_heap_delete(rel, &tuple->t_self);
+ CatalogTupleDelete(rel, &tuple->t_self);
}
else if (valuestr)
{
@@ -199,7 +199,7 @@ DropSetting(Oid databaseid, Oid roleid)
scan = heap_beginscan_catalog(relsetting, numkeys, keys);
while (HeapTupleIsValid(tup = heap_getnext(scan, ForwardScanDirection)))
{
- simple_heap_delete(relsetting, &tup->t_self);
+ CatalogTupleDelete(relsetting, &tup->t_self);
}
heap_endscan(scan);
diff --git a/src/backend/catalog/pg_depend.c b/src/backend/catalog/pg_depend.c
index e114a9cdfef..722df67bda0 100644
--- a/src/backend/catalog/pg_depend.c
+++ b/src/backend/catalog/pg_depend.c
@@ -219,7 +219,7 @@ deleteDependencyRecordsFor(Oid classId, Oid objectId,
((Form_pg_depend) GETSTRUCT(tup))->deptype == DEPENDENCY_EXTENSION)
continue;
- simple_heap_delete(depRel, &tup->t_self);
+ CatalogTupleDelete(depRel, &tup->t_self);
count++;
}
@@ -269,7 +269,7 @@ deleteDependencyRecordsForClass(Oid classId, Oid objectId,
if (depform->refclassid == refclassId && depform->deptype == deptype)
{
- simple_heap_delete(depRel, &tup->t_self);
+ CatalogTupleDelete(depRel, &tup->t_self);
count++;
}
}
@@ -353,7 +353,7 @@ changeDependencyFor(Oid classId, Oid objectId,
depform->refobjid == oldRefObjectId)
{
if (newIsPinned)
- simple_heap_delete(depRel, &tup->t_self);
+ CatalogTupleDelete(depRel, &tup->t_self);
else
{
/* make a modifiable copy */
diff --git a/src/backend/catalog/pg_enum.c b/src/backend/catalog/pg_enum.c
index 1fc6f7c6b4e..a7d933663ee 100644
--- a/src/backend/catalog/pg_enum.c
+++ b/src/backend/catalog/pg_enum.c
@@ -161,7 +161,7 @@ EnumValuesDelete(Oid enumTypeOid)
while (HeapTupleIsValid(tup = systable_getnext(scan)))
{
- simple_heap_delete(pg_enum, &tup->t_self);
+ CatalogTupleDelete(pg_enum, &tup->t_self);
}
systable_endscan(scan);
diff --git a/src/backend/catalog/pg_largeobject.c b/src/backend/catalog/pg_largeobject.c
index 754ad9f79c2..fc4f4f8c9ba 100644
--- a/src/backend/catalog/pg_largeobject.c
+++ b/src/backend/catalog/pg_largeobject.c
@@ -110,7 +110,7 @@ LargeObjectDrop(Oid loid)
(errcode(ERRCODE_UNDEFINED_OBJECT),
errmsg("large object %u does not exist", loid)));
- simple_heap_delete(pg_lo_meta, &tuple->t_self);
+ CatalogTupleDelete(pg_lo_meta, &tuple->t_self);
systable_endscan(scan);
@@ -127,7 +127,7 @@ LargeObjectDrop(Oid loid)
NULL, 1, skey);
while (HeapTupleIsValid(tuple = systable_getnext(scan)))
{
- simple_heap_delete(pg_largeobject, &tuple->t_self);
+ CatalogTupleDelete(pg_largeobject, &tuple->t_self);
}
systable_endscan(scan);
diff --git a/src/backend/catalog/pg_range.c b/src/backend/catalog/pg_range.c
index fcbf374bd67..a3b0fb88384 100644
--- a/src/backend/catalog/pg_range.c
+++ b/src/backend/catalog/pg_range.c
@@ -129,7 +129,7 @@ RangeDelete(Oid rangeTypeOid)
while (HeapTupleIsValid(tup = systable_getnext(scan)))
{
- simple_heap_delete(pg_range, &tup->t_self);
+ CatalogTupleDelete(pg_range, &tup->t_self);
}
systable_endscan(scan);
diff --git a/src/backend/catalog/pg_shdepend.c b/src/backend/catalog/pg_shdepend.c
index 4b68e05e519..ef50b854d4d 100644
--- a/src/backend/catalog/pg_shdepend.c
+++ b/src/backend/catalog/pg_shdepend.c
@@ -249,7 +249,7 @@ shdepChangeDep(Relation sdepRel,
{
/* No new entry needed, so just delete existing entry if any */
if (oldtup)
- simple_heap_delete(sdepRel, &oldtup->t_self);
+ CatalogTupleDelete(sdepRel, &oldtup->t_self);
}
else if (oldtup)
{
@@ -795,7 +795,7 @@ dropDatabaseDependencies(Oid databaseId)
while (HeapTupleIsValid(tup = systable_getnext(scan)))
{
- simple_heap_delete(sdepRel, &tup->t_self);
+ CatalogTupleDelete(sdepRel, &tup->t_self);
}
systable_endscan(scan);
@@ -948,7 +948,7 @@ shdepDropDependency(Relation sdepRel,
continue;
/* OK, delete it */
- simple_heap_delete(sdepRel, &tup->t_self);
+ CatalogTupleDelete(sdepRel, &tup->t_self);
}
systable_endscan(scan);
diff --git a/src/backend/commands/amcmds.c b/src/backend/commands/amcmds.c
index b6e60469f39..225e6f636ca 100644
--- a/src/backend/commands/amcmds.c
+++ b/src/backend/commands/amcmds.c
@@ -128,7 +128,7 @@ RemoveAccessMethodById(Oid amOid)
if (!HeapTupleIsValid(tup))
elog(ERROR, "cache lookup failed for access method %u", amOid);
- simple_heap_delete(relation, &tup->t_self);
+ CatalogTupleDelete(relation, &tup->t_self);
ReleaseSysCache(tup);
diff --git a/src/backend/commands/comment.c b/src/backend/commands/comment.c
index 8a437de8154..87ca62f2403 100644
--- a/src/backend/commands/comment.c
+++ b/src/backend/commands/comment.c
@@ -194,7 +194,7 @@ CreateComments(Oid oid, Oid classoid, int32 subid, char *comment)
/* Found the old tuple, so delete or update it */
if (comment == NULL)
- simple_heap_delete(description, &oldtuple->t_self);
+ CatalogTupleDelete(description, &oldtuple->t_self);
else
{
newtuple = heap_modify_tuple(oldtuple, RelationGetDescr(description), values,
@@ -284,7 +284,7 @@ CreateSharedComments(Oid oid, Oid classoid, char *comment)
/* Found the old tuple, so delete or update it */
if (comment == NULL)
- simple_heap_delete(shdescription, &oldtuple->t_self);
+ CatalogTupleDelete(shdescription, &oldtuple->t_self);
else
{
newtuple = heap_modify_tuple(oldtuple, RelationGetDescr(shdescription),
@@ -358,7 +358,7 @@ DeleteComments(Oid oid, Oid classoid, int32 subid)
NULL, nkeys, skey);
while ((oldtuple = systable_getnext(sd)) != NULL)
- simple_heap_delete(description, &oldtuple->t_self);
+ CatalogTupleDelete(description, &oldtuple->t_self);
/* Done */
@@ -394,7 +394,7 @@ DeleteSharedComments(Oid oid, Oid classoid)
NULL, 2, skey);
while ((oldtuple = systable_getnext(sd)) != NULL)
- simple_heap_delete(shdescription, &oldtuple->t_self);
+ CatalogTupleDelete(shdescription, &oldtuple->t_self);
/* Done */
diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c
index c3eb3c79df4..30000a1eeb8 100644
--- a/src/backend/commands/dbcommands.c
+++ b/src/backend/commands/dbcommands.c
@@ -895,7 +895,7 @@ dropdb(const char *dbname, bool missing_ok)
if (!HeapTupleIsValid(tup))
elog(ERROR, "cache lookup failed for database %u", db_id);
- simple_heap_delete(pgdbrel, &tup->t_self);
+ CatalogTupleDelete(pgdbrel, &tup->t_self);
ReleaseSysCache(tup);
diff --git a/src/backend/commands/event_trigger.c b/src/backend/commands/event_trigger.c
index 94c4ea5dd21..346b347ae17 100644
--- a/src/backend/commands/event_trigger.c
+++ b/src/backend/commands/event_trigger.c
@@ -484,7 +484,7 @@ RemoveEventTriggerById(Oid trigOid)
if (!HeapTupleIsValid(tup))
elog(ERROR, "cache lookup failed for event trigger %u", trigOid);
- simple_heap_delete(tgrel, &tup->t_self);
+ CatalogTupleDelete(tgrel, &tup->t_self);
ReleaseSysCache(tup);
diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c
index 14738ea584c..325f5b74b81 100644
--- a/src/backend/commands/extension.c
+++ b/src/backend/commands/extension.c
@@ -1854,7 +1854,7 @@ RemoveExtensionById(Oid extId)
/* We assume that there can be at most one matching tuple */
if (HeapTupleIsValid(tuple))
- simple_heap_delete(rel, &tuple->t_self);
+ CatalogTupleDelete(rel, &tuple->t_self);
systable_endscan(scandesc);
diff --git a/src/backend/commands/foreigncmds.c b/src/backend/commands/foreigncmds.c
index ad8ca2d8eba..d5d40e62392 100644
--- a/src/backend/commands/foreigncmds.c
+++ b/src/backend/commands/foreigncmds.c
@@ -846,7 +846,7 @@ RemoveForeignDataWrapperById(Oid fdwId)
if (!HeapTupleIsValid(tp))
elog(ERROR, "cache lookup failed for foreign-data wrapper %u", fdwId);
- simple_heap_delete(rel, &tp->t_self);
+ CatalogTupleDelete(rel, &tp->t_self);
ReleaseSysCache(tp);
@@ -1080,7 +1080,7 @@ RemoveForeignServerById(Oid srvId)
if (!HeapTupleIsValid(tp))
elog(ERROR, "cache lookup failed for foreign server %u", srvId);
- simple_heap_delete(rel, &tp->t_self);
+ CatalogTupleDelete(rel, &tp->t_self);
ReleaseSysCache(tp);
@@ -1403,7 +1403,7 @@ RemoveUserMappingById(Oid umId)
if (!HeapTupleIsValid(tp))
elog(ERROR, "cache lookup failed for user mapping %u", umId);
- simple_heap_delete(rel, &tp->t_self);
+ CatalogTupleDelete(rel, &tp->t_self);
ReleaseSysCache(tp);
diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c
index f4fa8d35a4e..dd83858b3dd 100644
--- a/src/backend/commands/functioncmds.c
+++ b/src/backend/commands/functioncmds.c
@@ -1131,7 +1131,7 @@ RemoveFunctionById(Oid funcOid)
isagg = ((Form_pg_proc) GETSTRUCT(tup))->proisagg;
- simple_heap_delete(relation, &tup->t_self);
+ CatalogTupleDelete(relation, &tup->t_self);
ReleaseSysCache(tup);
@@ -1148,7 +1148,7 @@ RemoveFunctionById(Oid funcOid)
if (!HeapTupleIsValid(tup)) /* should not happen */
elog(ERROR, "cache lookup failed for pg_aggregate tuple for function %u", funcOid);
- simple_heap_delete(relation, &tup->t_self);
+ CatalogTupleDelete(relation, &tup->t_self);
ReleaseSysCache(tup);
@@ -1735,7 +1735,7 @@ DropCastById(Oid castOid)
tuple = systable_getnext(scan);
if (!HeapTupleIsValid(tuple))
elog(ERROR, "could not find tuple for cast %u", castOid);
- simple_heap_delete(relation, &tuple->t_self);
+ CatalogTupleDelete(relation, &tuple->t_self);
systable_endscan(scan);
heap_close(relation, RowExclusiveLock);
@@ -2021,7 +2021,7 @@ DropTransformById(Oid transformOid)
tuple = systable_getnext(scan);
if (!HeapTupleIsValid(tuple))
elog(ERROR, "could not find tuple for transform %u", transformOid);
- simple_heap_delete(relation, &tuple->t_self);
+ CatalogTupleDelete(relation, &tuple->t_self);
systable_endscan(scan);
heap_close(relation, RowExclusiveLock);
diff --git a/src/backend/commands/opclasscmds.c b/src/backend/commands/opclasscmds.c
index 99a39bdd742..5f2364bccf6 100644
--- a/src/backend/commands/opclasscmds.c
+++ b/src/backend/commands/opclasscmds.c
@@ -1571,7 +1571,7 @@ RemoveOpFamilyById(Oid opfamilyOid)
if (!HeapTupleIsValid(tup)) /* should not happen */
elog(ERROR, "cache lookup failed for opfamily %u", opfamilyOid);
- simple_heap_delete(rel, &tup->t_self);
+ CatalogTupleDelete(rel, &tup->t_self);
ReleaseSysCache(tup);
@@ -1590,7 +1590,7 @@ RemoveOpClassById(Oid opclassOid)
if (!HeapTupleIsValid(tup)) /* should not happen */
elog(ERROR, "cache lookup failed for opclass %u", opclassOid);
- simple_heap_delete(rel, &tup->t_self);
+ CatalogTupleDelete(rel, &tup->t_self);
ReleaseSysCache(tup);
@@ -1620,7 +1620,7 @@ RemoveAmOpEntryById(Oid entryOid)
if (!HeapTupleIsValid(tup))
elog(ERROR, "could not find tuple for amop entry %u", entryOid);
- simple_heap_delete(rel, &tup->t_self);
+ CatalogTupleDelete(rel, &tup->t_self);
systable_endscan(scan);
heap_close(rel, RowExclusiveLock);
@@ -1649,7 +1649,7 @@ RemoveAmProcEntryById(Oid entryOid)
if (!HeapTupleIsValid(tup))
elog(ERROR, "could not find tuple for amproc entry %u", entryOid);
- simple_heap_delete(rel, &tup->t_self);
+ CatalogTupleDelete(rel, &tup->t_self);
systable_endscan(scan);
heap_close(rel, RowExclusiveLock);
diff --git a/src/backend/commands/operatorcmds.c b/src/backend/commands/operatorcmds.c
index 66d2452dbe2..b063467bbde 100644
--- a/src/backend/commands/operatorcmds.c
+++ b/src/backend/commands/operatorcmds.c
@@ -368,7 +368,7 @@ RemoveOperatorById(Oid operOid)
}
}
- simple_heap_delete(relation, &tup->t_self);
+ CatalogTupleDelete(relation, &tup->t_self);
ReleaseSysCache(tup);
diff --git a/src/backend/commands/policy.c b/src/backend/commands/policy.c
index da2b1ae0e7e..4a758426c39 100644
--- a/src/backend/commands/policy.c
+++ b/src/backend/commands/policy.c
@@ -397,7 +397,7 @@ RemovePolicyById(Oid policy_id)
errmsg("permission denied: \"%s\" is a system catalog",
RelationGetRelationName(rel))));
- simple_heap_delete(pg_policy_rel, &tuple->t_self);
+ CatalogTupleDelete(pg_policy_rel, &tuple->t_self);
systable_endscan(sscan);
diff --git a/src/backend/commands/proclang.c b/src/backend/commands/proclang.c
index 4c8daa59289..a4fbc05a122 100644
--- a/src/backend/commands/proclang.c
+++ b/src/backend/commands/proclang.c
@@ -536,7 +536,7 @@ DropProceduralLanguageById(Oid langOid)
if (!HeapTupleIsValid(langTup)) /* should not happen */
elog(ERROR, "cache lookup failed for language %u", langOid);
- simple_heap_delete(rel, &langTup->t_self);
+ CatalogTupleDelete(rel, &langTup->t_self);
ReleaseSysCache(langTup);
diff --git a/src/backend/commands/publicationcmds.c b/src/backend/commands/publicationcmds.c
index bc0f6539914..3fe1d15052d 100644
--- a/src/backend/commands/publicationcmds.c
+++ b/src/backend/commands/publicationcmds.c
@@ -461,7 +461,7 @@ RemovePublicationById(Oid pubid)
if (!HeapTupleIsValid(tup))
elog(ERROR, "cache lookup failed for publication %u", pubid);
- simple_heap_delete(rel, &tup->t_self);
+ CatalogTupleDelete(rel, &tup->t_self);
ReleaseSysCache(tup);
@@ -486,13 +486,12 @@ RemovePublicationRelById(Oid proid)
elog(ERROR, "cache lookup failed for publication table %u",
proid);
-
pubrel = (Form_pg_publication_rel) GETSTRUCT(tup);
/* Invalidate relcache so that publication info is rebuilt. */
CacheInvalidateRelcacheByRelid(pubrel->prrelid);
- simple_heap_delete(rel, &tup->t_self);
+ CatalogTupleDelete(rel, &tup->t_self);
ReleaseSysCache(tup);
diff --git a/src/backend/commands/schemacmds.c b/src/backend/commands/schemacmds.c
index d14c2698036..722b965d65d 100644
--- a/src/backend/commands/schemacmds.c
+++ b/src/backend/commands/schemacmds.c
@@ -226,7 +226,7 @@ RemoveSchemaById(Oid schemaOid)
if (!HeapTupleIsValid(tup)) /* should not happen */
elog(ERROR, "cache lookup failed for namespace %u", schemaOid);
- simple_heap_delete(relation, &tup->t_self);
+ CatalogTupleDelete(relation, &tup->t_self);
ReleaseSysCache(tup);
diff --git a/src/backend/commands/seclabel.c b/src/backend/commands/seclabel.c
index 506c90f6e25..422da8b6b06 100644
--- a/src/backend/commands/seclabel.c
+++ b/src/backend/commands/seclabel.c
@@ -293,7 +293,7 @@ SetSharedSecurityLabel(const ObjectAddress *object,
if (HeapTupleIsValid(oldtup))
{
if (label == NULL)
- simple_heap_delete(pg_shseclabel, &oldtup->t_self);
+ CatalogTupleDelete(pg_shseclabel, &oldtup->t_self);
else
{
replaces[Anum_pg_shseclabel_label - 1] = true;
@@ -380,7 +380,7 @@ SetSecurityLabel(const ObjectAddress *object,
if (HeapTupleIsValid(oldtup))
{
if (label == NULL)
- simple_heap_delete(pg_seclabel, &oldtup->t_self);
+ CatalogTupleDelete(pg_seclabel, &oldtup->t_self);
else
{
replaces[Anum_pg_seclabel_label - 1] = true;
@@ -432,7 +432,7 @@ DeleteSharedSecurityLabel(Oid objectId, Oid classId)
scan = systable_beginscan(pg_shseclabel, SharedSecLabelObjectIndexId, true,
NULL, 2, skey);
while (HeapTupleIsValid(oldtup = systable_getnext(scan)))
- simple_heap_delete(pg_shseclabel, &oldtup->t_self);
+ CatalogTupleDelete(pg_shseclabel, &oldtup->t_self);
systable_endscan(scan);
heap_close(pg_shseclabel, RowExclusiveLock);
@@ -483,7 +483,7 @@ DeleteSecurityLabel(const ObjectAddress *object)
scan = systable_beginscan(pg_seclabel, SecLabelObjectIndexId, true,
NULL, nkeys, skey);
while (HeapTupleIsValid(oldtup = systable_getnext(scan)))
- simple_heap_delete(pg_seclabel, &oldtup->t_self);
+ CatalogTupleDelete(pg_seclabel, &oldtup->t_self);
systable_endscan(scan);
heap_close(pg_seclabel, RowExclusiveLock);
diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c
index 6ac76b1e565..c148b09cd72 100644
--- a/src/backend/commands/sequence.c
+++ b/src/backend/commands/sequence.c
@@ -521,7 +521,7 @@ DeleteSequenceTuple(Oid relid)
if (!HeapTupleIsValid(tuple))
elog(ERROR, "cache lookup failed for sequence %u", relid);
- simple_heap_delete(rel, &tuple->t_self);
+ CatalogTupleDelete(rel, &tuple->t_self);
ReleaseSysCache(tuple);
heap_close(rel, RowExclusiveLock);
diff --git a/src/backend/commands/subscriptioncmds.c b/src/backend/commands/subscriptioncmds.c
index 5de999928f3..3b708075653 100644
--- a/src/backend/commands/subscriptioncmds.c
+++ b/src/backend/commands/subscriptioncmds.c
@@ -501,7 +501,7 @@ DropSubscription(DropSubscriptionStmt *stmt)
EventTriggerSQLDropAddObject(&myself, true, true);
/* Remove the tuple from catalog. */
- simple_heap_delete(rel, &tup->t_self);
+ CatalogTupleDelete(rel, &tup->t_self);
ReleaseSysCache(tup);
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 764071bd11b..878b48d39ef 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -8939,7 +8939,7 @@ ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel,
foundDep->refobjid == attTup->attcollation))
elog(ERROR, "found unexpected dependency for column");
- simple_heap_delete(depRel, &depTup->t_self);
+ CatalogTupleDelete(depRel, &depTup->t_self);
}
systable_endscan(scan);
@@ -11177,7 +11177,7 @@ RemoveInheritance(Relation child_rel, Relation parent_rel)
inhparent = ((Form_pg_inherits) GETSTRUCT(inheritsTuple))->inhparent;
if (inhparent == RelationGetRelid(parent_rel))
{
- simple_heap_delete(catalogRelation, &inheritsTuple->t_self);
+ CatalogTupleDelete(catalogRelation, &inheritsTuple->t_self);
found = true;
break;
}
@@ -11370,7 +11370,7 @@ drop_parent_dependency(Oid relid, Oid refclassid, Oid refobjid)
dep->refobjid == refobjid &&
dep->refobjsubid == 0 &&
dep->deptype == DEPENDENCY_NORMAL)
- simple_heap_delete(catalogRelation, &depTuple->t_self);
+ CatalogTupleDelete(catalogRelation, &depTuple->t_self);
}
systable_endscan(scan);
diff --git a/src/backend/commands/tablespace.c b/src/backend/commands/tablespace.c
index 6e652aa66bd..80515bae19c 100644
--- a/src/backend/commands/tablespace.c
+++ b/src/backend/commands/tablespace.c
@@ -460,7 +460,7 @@ DropTableSpace(DropTableSpaceStmt *stmt)
/*
* Remove the pg_tablespace tuple (this will roll back if we fail below)
*/
- simple_heap_delete(rel, &tuple->t_self);
+ CatalogTupleDelete(rel, &tuple->t_self);
heap_endscan(scandesc);
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index b3e89a44f72..d80bff671c0 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -1238,7 +1238,7 @@ RemoveTriggerById(Oid trigOid)
/*
* Delete the pg_trigger tuple.
*/
- simple_heap_delete(tgrel, &tup->t_self);
+ CatalogTupleDelete(tgrel, &tup->t_self);
systable_endscan(tgscan);
heap_close(tgrel, RowExclusiveLock);
diff --git a/src/backend/commands/tsearchcmds.c b/src/backend/commands/tsearchcmds.c
index 988930b1c55..49668be0d70 100644
--- a/src/backend/commands/tsearchcmds.c
+++ b/src/backend/commands/tsearchcmds.c
@@ -301,7 +301,7 @@ RemoveTSParserById(Oid prsId)
if (!HeapTupleIsValid(tup))
elog(ERROR, "cache lookup failed for text search parser %u", prsId);
- simple_heap_delete(relation, &tup->t_self);
+ CatalogTupleDelete(relation, &tup->t_self);
ReleaseSysCache(tup);
@@ -511,7 +511,7 @@ RemoveTSDictionaryById(Oid dictId)
elog(ERROR, "cache lookup failed for text search dictionary %u",
dictId);
- simple_heap_delete(relation, &tup->t_self);
+ CatalogTupleDelete(relation, &tup->t_self);
ReleaseSysCache(tup);
@@ -831,7 +831,7 @@ RemoveTSTemplateById(Oid tmplId)
elog(ERROR, "cache lookup failed for text search template %u",
tmplId);
- simple_heap_delete(relation, &tup->t_self);
+ CatalogTupleDelete(relation, &tup->t_self);
ReleaseSysCache(tup);
@@ -1139,7 +1139,7 @@ RemoveTSConfigurationById(Oid cfgId)
elog(ERROR, "cache lookup failed for text search dictionary %u",
cfgId);
- simple_heap_delete(relCfg, &tup->t_self);
+ CatalogTupleDelete(relCfg, &tup->t_self);
ReleaseSysCache(tup);
@@ -1158,7 +1158,7 @@ RemoveTSConfigurationById(Oid cfgId)
while (HeapTupleIsValid((tup = systable_getnext(scan))))
{
- simple_heap_delete(relMap, &tup->t_self);
+ CatalogTupleDelete(relMap, &tup->t_self);
}
systable_endscan(scan);
@@ -1317,7 +1317,7 @@ MakeConfigurationMapping(AlterTSConfigurationStmt *stmt,
while (HeapTupleIsValid((maptup = systable_getnext(scan))))
{
- simple_heap_delete(relMap, &maptup->t_self);
+ CatalogTupleDelete(relMap, &maptup->t_self);
}
systable_endscan(scan);
@@ -1472,7 +1472,7 @@ DropConfigurationMapping(AlterTSConfigurationStmt *stmt,
while (HeapTupleIsValid((maptup = systable_getnext(scan))))
{
- simple_heap_delete(relMap, &maptup->t_self);
+ CatalogTupleDelete(relMap, &maptup->t_self);
found = true;
}
diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c
index b848389ab85..d8bd8a50dd8 100644
--- a/src/backend/commands/typecmds.c
+++ b/src/backend/commands/typecmds.c
@@ -697,7 +697,7 @@ RemoveTypeById(Oid typeOid)
if (!HeapTupleIsValid(tup))
elog(ERROR, "cache lookup failed for type %u", typeOid);
- simple_heap_delete(relation, &tup->t_self);
+ CatalogTupleDelete(relation, &tup->t_self);
/*
* If it is an enum, delete the pg_enum entries too; we don't bother with
diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c
index f2ec3b2d0d8..994c093250b 100644
--- a/src/backend/commands/user.c
+++ b/src/backend/commands/user.c
@@ -1044,7 +1044,7 @@ DropRole(DropRoleStmt *stmt)
/*
* Remove the role from the pg_authid table
*/
- simple_heap_delete(pg_authid_rel, &tuple->t_self);
+ CatalogTupleDelete(pg_authid_rel, &tuple->t_self);
ReleaseSysCache(tuple);
@@ -1064,7 +1064,7 @@ DropRole(DropRoleStmt *stmt)
while (HeapTupleIsValid(tmp_tuple = systable_getnext(sscan)))
{
- simple_heap_delete(pg_auth_members_rel, &tmp_tuple->t_self);
+ CatalogTupleDelete(pg_auth_members_rel, &tmp_tuple->t_self);
}
systable_endscan(sscan);
@@ -1079,7 +1079,7 @@ DropRole(DropRoleStmt *stmt)
while (HeapTupleIsValid(tmp_tuple = systable_getnext(sscan)))
{
- simple_heap_delete(pg_auth_members_rel, &tmp_tuple->t_self);
+ CatalogTupleDelete(pg_auth_members_rel, &tmp_tuple->t_self);
}
systable_endscan(sscan);
@@ -1606,7 +1606,7 @@ DelRoleMems(const char *rolename, Oid roleid,
if (!admin_opt)
{
/* Remove the entry altogether */
- simple_heap_delete(pg_authmem_rel, &authmem_tuple->t_self);
+ CatalogTupleDelete(pg_authmem_rel, &authmem_tuple->t_self);
}
else
{
diff --git a/src/backend/replication/logical/origin.c b/src/backend/replication/logical/origin.c
index 7e88f97f086..ade80d407fe 100644
--- a/src/backend/replication/logical/origin.c
+++ b/src/backend/replication/logical/origin.c
@@ -377,7 +377,7 @@ replorigin_drop(RepOriginId roident)
elog(ERROR, "cache lookup failed for replication origin with oid %u",
roident);
- simple_heap_delete(rel, &tuple->t_self);
+ CatalogTupleDelete(rel, &tuple->t_self);
ReleaseSysCache(tuple);
CommandCounterIncrement();
diff --git a/src/backend/rewrite/rewriteRemove.c b/src/backend/rewrite/rewriteRemove.c
index 659a3110177..e6f5ed575f9 100644
--- a/src/backend/rewrite/rewriteRemove.c
+++ b/src/backend/rewrite/rewriteRemove.c
@@ -76,7 +76,7 @@ RemoveRewriteRuleById(Oid ruleOid)
/*
* Now delete the pg_rewrite tuple for the rule
*/
- simple_heap_delete(RewriteRelation, &tuple->t_self);
+ CatalogTupleDelete(RewriteRelation, &tuple->t_self);
systable_endscan(rcscan);
diff --git a/src/backend/storage/large_object/inv_api.c b/src/backend/storage/large_object/inv_api.c
index 15e1b15483e..8eb5b3b08e3 100644
--- a/src/backend/storage/large_object/inv_api.c
+++ b/src/backend/storage/large_object/inv_api.c
@@ -861,7 +861,7 @@ inv_truncate(LargeObjectDesc *obj_desc, int64 len)
if (olddata != NULL)
{
Assert(olddata->pageno > pageno);
- simple_heap_delete(lo_heap_r, &oldtuple->t_self);
+ CatalogTupleDelete(lo_heap_r, &oldtuple->t_self);
}
/*
@@ -897,7 +897,7 @@ inv_truncate(LargeObjectDesc *obj_desc, int64 len)
{
while ((oldtuple = systable_getnext_ordered(sd, ForwardScanDirection)) != NULL)
{
- simple_heap_delete(lo_heap_r, &oldtuple->t_self);
+ CatalogTupleDelete(lo_heap_r, &oldtuple->t_self);
}
}
diff --git a/src/include/catalog/indexing.h b/src/include/catalog/indexing.h
index 977dc9c7ca2..9d02666ed1b 100644
--- a/src/include/catalog/indexing.h
+++ b/src/include/catalog/indexing.h
@@ -35,6 +35,7 @@ extern void CatalogIndexInsert(CatalogIndexState indstate,
extern Oid CatalogTupleInsert(Relation heapRel, HeapTuple tup);
extern void CatalogTupleUpdate(Relation heapRel, ItemPointer otid,
HeapTuple tup);
+extern void CatalogTupleDelete(Relation heapRel, ItemPointer tid);
/*