mirror of
https://github.com/postgres/postgres.git
synced 2025-08-21 10:42:50 +03:00
Fix LATERAL references to target table of UPDATE/DELETE.
I failed to think much about UPDATE/DELETE when implementing LATERAL :-(. The implemented behavior ended up being that subqueries in the FROM or USING clause (respectively) could access the update/delete target table as though it were a lateral reference; which seems fine if they said LATERAL, but certainly ought to draw an error if they didn't. Fix it so you get a suitable error when you omit LATERAL. Per report from Emre Hasegeli.
This commit is contained in:
@@ -1730,6 +1730,10 @@ isLockedRefname(ParseState *pstate, const char *refname)
|
||||
* and/or namespace list. (We assume caller has checked for any
|
||||
* namespace conflicts.) The RTE is always marked as unconditionally
|
||||
* visible, that is, not LATERAL-only.
|
||||
*
|
||||
* Note: some callers know that they can find the new ParseNamespaceItem
|
||||
* at the end of the pstate->p_namespace list. This is a bit ugly but not
|
||||
* worth complicating this function's signature for.
|
||||
*/
|
||||
void
|
||||
addRTEtoQuery(ParseState *pstate, RangeTblEntry *rte,
|
||||
|
Reference in New Issue
Block a user