summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/catalog/heap.c7
-rw-r--r--src/backend/catalog/index.c6
2 files changed, 13 insertions, 0 deletions
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index 1d1e395d6f7..9efef447785 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -1374,6 +1374,13 @@ heap_drop_with_catalog(Oid relid)
rel = relation_open(relid, AccessExclusiveLock);
/*
+ * There can no longer be anyone *else* touching the relation, but we
+ * might still have open queries or cursors, or pending trigger events,
+ * in our own session.
+ */
+ CheckTableNotInUse(rel, "DROP TABLE");
+
+ /*
* Schedule unlinking of the relation's physical file at commit.
*/
if (rel->rd_rel->relkind != RELKIND_VIEW &&
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 96cd5f29692..0f33de7b60d 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -882,6 +882,12 @@ index_drop(Oid indexId)
userIndexRelation = index_open(indexId, AccessExclusiveLock);
/*
+ * There can no longer be anyone *else* touching the index, but we
+ * might still have open queries using it in our own session.
+ */
+ CheckTableNotInUse(userIndexRelation, "DROP INDEX");
+
+ /*
* Schedule physical removal of the file
*/
RelationOpenSmgr(userIndexRelation);