diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/catalog/heap.c | 7 | ||||
-rw-r--r-- | src/backend/catalog/index.c | 6 |
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); |