mirror of
https://github.com/postgres/postgres.git
synced 2025-07-17 06:41:09 +03:00
Update some comments that should've covered MERGE
Oversight in 7103ebb7aa
. Backpatch to 15.
Author: Richard Guo <guofenglinux@gmail.com>
Discussion: https://postgr.es/m/CAMbWs48gnDjZXq3-b56dVpQCNUJ5hD9kdtWN4QFwKCEapspNsA@mail.gmail.com
This commit is contained in:
@ -153,7 +153,7 @@ transformFromClause(ParseState *pstate, List *frmList)
|
||||
|
||||
/*
|
||||
* setTargetTable
|
||||
* Add the target relation of INSERT/UPDATE/DELETE to the range table,
|
||||
* Add the target relation of INSERT/UPDATE/DELETE/MERGE to the range table,
|
||||
* and make the special links to it in the ParseState.
|
||||
*
|
||||
* We also open the target relation and acquire a write lock on it.
|
||||
@ -163,7 +163,9 @@ transformFromClause(ParseState *pstate, List *frmList)
|
||||
*
|
||||
* If alsoSource is true, add the target to the query's joinlist and
|
||||
* namespace. For INSERT, we don't want the target to be joined to;
|
||||
* it's a destination of tuples, not a source. For UPDATE/DELETE,
|
||||
* it's a destination of tuples, not a source. MERGE is actually
|
||||
* both, but we'll add it separately to joinlist and namespace, so
|
||||
* doing nothing (like INSERT) is correct here. For UPDATE/DELETE,
|
||||
* we do need to scan or join the target. (NOTE: we do not bother
|
||||
* to check for namespace conflict; we assume that the namespace was
|
||||
* initially empty in these cases.)
|
||||
|
@ -1679,8 +1679,8 @@ transformSubLink(ParseState *pstate, SubLink *sublink)
|
||||
|
||||
/*
|
||||
* Check to see if the sublink is in an invalid place within the query. We
|
||||
* allow sublinks everywhere in SELECT/INSERT/UPDATE/DELETE, but generally
|
||||
* not in utility statements.
|
||||
* allow sublinks everywhere in SELECT/INSERT/UPDATE/DELETE/MERGE, but
|
||||
* generally not in utility statements.
|
||||
*/
|
||||
err = NULL;
|
||||
switch (pstate->p_expr_kind)
|
||||
|
@ -163,7 +163,11 @@ transformMergeStmt(ParseState *pstate, MergeStmt *stmt)
|
||||
errmsg("unreachable WHEN clause specified after unconditional WHEN clause")));
|
||||
}
|
||||
|
||||
/* Set up the MERGE target table. */
|
||||
/*
|
||||
* Set up the MERGE target table. The target table is added to the
|
||||
* namespace below and to joinlist in transform_MERGE_to_join, so don't
|
||||
* do it here.
|
||||
*/
|
||||
qry->resultRelation = setTargetTable(pstate, stmt->relation,
|
||||
stmt->relation->inh,
|
||||
false, targetPerms);
|
||||
|
Reference in New Issue
Block a user