diff options
Diffstat (limited to 'src/backend/parser/analyze.c')
-rw-r--r-- | src/backend/parser/analyze.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c index d243e0284a5..9f59b4af357 100644 --- a/src/backend/parser/analyze.c +++ b/src/backend/parser/analyze.c @@ -2809,6 +2809,15 @@ transformLockingClause(ParseState *pstate, Query *qry, LockingClause *lc, ++i; if (!rte->inFromCl) continue; + + /* + * A join RTE without an alias is not visible as a relation + * name and needs to be skipped (otherwise it might hide a + * base relation with the same name). + */ + if (rte->rtekind == RTE_JOIN && rte->alias == NULL) + continue; + if (strcmp(rte->eref->aliasname, thisrel->relname) == 0) { switch (rte->rtekind) |