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 @@ -1373,6 +1373,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 96cd5f29692..0f33de7b60d 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -881,6 +881,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 */