aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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 72a97b8b7a2..dd63c7e1296 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -1237,6 +1237,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 e57809427af..dae3af322b9 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -849,6 +849,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);