diff options
| author | Simon Riggs <simon@2ndQuadrant.com> | 2018-04-02 21:12:47 +0100 |
|---|---|---|
| committer | Simon Riggs <simon@2ndQuadrant.com> | 2018-04-02 21:12:47 +0100 |
| commit | 354f13855e6381d288dfaa52bcd4f2cb0fd4a5eb (patch) | |
| tree | 92710660450acee59be62dea485cc26ab147f332 /src/backend/executor/README | |
| parent | e6597dc3533946b98acba7871bd4ca1f7a3d4c1d (diff) | |
Modified files for MERGE
Diffstat (limited to 'src/backend/executor/README')
| -rw-r--r-- | src/backend/executor/README | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/backend/executor/README b/src/backend/executor/README index 0d7cd552eb6..05769772b77 100644 --- a/src/backend/executor/README +++ b/src/backend/executor/README @@ -37,6 +37,16 @@ the plan tree returns the computed tuples to be updated, plus a "junk" one. For DELETE, the plan tree need only deliver a CTID column, and the ModifyTable node visits each of those rows and marks the row deleted. +MERGE runs one generic plan that returns candidate target rows. Each row +consists of a super-row that contains all the columns needed by any of the +individual actions, plus a CTID and a TABLEOID junk columns. The CTID column is +required to know if a matching target row was found or not and the TABLEOID +column is needed to find the underlying target partition, in case when the +target table is a partition table. If the CTID column is set we attempt to +activate WHEN MATCHED actions, or if it is NULL then we will attempt to +activate WHEN NOT MATCHED actions. Once we know which action is activated we +form the final result row and apply only those changes. + XXX a great deal more documentation needs to be written here... |
