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 @@ -1236,6 +1236,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. */ 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 @@ -848,6 +848,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 */