1
0
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:
Alvaro Herrera
2022-10-24 12:52:43 +02:00
parent 8328a15f8f
commit 3b2db22fe2
14 changed files with 42 additions and 34 deletions

View File

@ -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.)

View File

@ -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)

View File

@ -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);