diff options
Diffstat (limited to 'src/backend/utils/cache/plancache.c')
-rw-r--r-- | src/backend/utils/cache/plancache.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/backend/utils/cache/plancache.c b/src/backend/utils/cache/plancache.c index 77c2ba3f8f4..87210fcf627 100644 --- a/src/backend/utils/cache/plancache.c +++ b/src/backend/utils/cache/plancache.c @@ -1846,6 +1846,14 @@ ScanQueryForLocks(Query *parsetree, bool acquire) break; case RTE_SUBQUERY: + /* If this was a view, must lock/unlock the view */ + if (OidIsValid(rte->relid)) + { + if (acquire) + LockRelationOid(rte->relid, rte->rellockmode); + else + UnlockRelationOid(rte->relid, rte->rellockmode); + } /* Recurse into subquery-in-FROM */ ScanQueryForLocks(rte->subquery, acquire); break; |