aboutsummaryrefslogtreecommitdiff
path: root/src/backend/optimizer
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/optimizer')
-rw-r--r--src/backend/optimizer/path/indxpath.c13
-rw-r--r--src/backend/optimizer/plan/planmain.c2
-rw-r--r--src/backend/optimizer/plan/planner.c4
-rw-r--r--src/backend/optimizer/util/appendinfo.c6
-rw-r--r--src/backend/optimizer/util/inherit.c2
-rw-r--r--src/backend/optimizer/util/pathnode.c3
-rw-r--r--src/backend/optimizer/util/relnode.c2
7 files changed, 17 insertions, 15 deletions
diff --git a/src/backend/optimizer/path/indxpath.c b/src/backend/optimizer/path/indxpath.c
index c31fcc917df..77f3f81bcb6 100644
--- a/src/backend/optimizer/path/indxpath.c
+++ b/src/backend/optimizer/path/indxpath.c
@@ -3393,12 +3393,13 @@ check_index_predicates(PlannerInfo *root, RelOptInfo *rel)
* Normally we remove quals that are implied by a partial index's
* predicate from indrestrictinfo, indicating that they need not be
* checked explicitly by an indexscan plan using this index. However, if
- * the rel is a target relation of UPDATE/DELETE/SELECT FOR UPDATE, we
- * cannot remove such quals from the plan, because they need to be in the
- * plan so that they will be properly rechecked by EvalPlanQual testing.
- * Some day we might want to remove such quals from the main plan anyway
- * and pass them through to EvalPlanQual via a side channel; but for now,
- * we just don't remove implied quals at all for target relations.
+ * the rel is a target relation of UPDATE/DELETE/MERGE/SELECT FOR UPDATE,
+ * we cannot remove such quals from the plan, because they need to be in
+ * the plan so that they will be properly rechecked by EvalPlanQual
+ * testing. Some day we might want to remove such quals from the main
+ * plan anyway and pass them through to EvalPlanQual via a side channel;
+ * but for now, we just don't remove implied quals at all for target
+ * relations.
*/
is_target_rel = (bms_is_member(rel->relid, root->all_result_relids) ||
get_plan_rowmark(root->rowMarks, rel->relid) != NULL);
diff --git a/src/backend/optimizer/plan/planmain.c b/src/backend/optimizer/plan/planmain.c
index 248cde4d9bd..63deed27c95 100644
--- a/src/backend/optimizer/plan/planmain.c
+++ b/src/backend/optimizer/plan/planmain.c
@@ -266,7 +266,7 @@ query_planner(PlannerInfo *root,
add_other_rels_to_query(root);
/*
- * Distribute any UPDATE/DELETE row identity variables to the target
+ * Distribute any UPDATE/DELETE/MERGE row identity variables to the target
* relations. This can't be done till we've finished expansion of
* appendrels.
*/
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c
index 5d0fd6e072f..78a81745348 100644
--- a/src/backend/optimizer/plan/planner.c
+++ b/src/backend/optimizer/plan/planner.c
@@ -1749,7 +1749,7 @@ grouping_planner(PlannerInfo *root, double tuple_fraction)
if (bms_membership(root->all_result_relids) == BMS_MULTIPLE)
{
- /* Inherited UPDATE/DELETE */
+ /* Inherited UPDATE/DELETE/MERGE */
RelOptInfo *top_result_rel = find_base_rel(root,
parse->resultRelation);
int resultRelation = -1;
@@ -1876,7 +1876,7 @@ grouping_planner(PlannerInfo *root, double tuple_fraction)
}
else
{
- /* Single-relation INSERT/UPDATE/DELETE. */
+ /* Single-relation INSERT/UPDATE/DELETE/MERGE. */
resultRelations = list_make1_int(parse->resultRelation);
if (parse->commandType == CMD_UPDATE)
updateColnosLists = list_make1(root->update_colnos);
diff --git a/src/backend/optimizer/util/appendinfo.c b/src/backend/optimizer/util/appendinfo.c
index 62cccf9d87c..f6fc62aa5de 100644
--- a/src/backend/optimizer/util/appendinfo.c
+++ b/src/backend/optimizer/util/appendinfo.c
@@ -730,7 +730,7 @@ find_appinfos_by_relids(PlannerInfo *root, Relids relids, int *nappinfos)
/*
* add_row_identity_var
- * Register a row-identity column to be used in UPDATE/DELETE.
+ * Register a row-identity column to be used in UPDATE/DELETE/MERGE.
*
* The Var must be equal(), aside from varno, to any other row-identity
* column with the same rowid_name. Thus, for example, "wholerow"
@@ -909,8 +909,8 @@ add_row_identity_columns(PlannerInfo *root, Index rtindex,
* distribute_row_identity_vars
*
* After we have finished identifying all the row identity columns
- * needed by an inherited UPDATE/DELETE query, make sure that these
- * columns will be generated by all the target relations.
+ * needed by an inherited UPDATE/DELETE/MERGE query, make sure that
+ * these columns will be generated by all the target relations.
*
* This is more or less like what build_base_rel_tlists() does,
* except that it would not understand what to do with ROWID_VAR Vars.
diff --git a/src/backend/optimizer/util/inherit.c b/src/backend/optimizer/util/inherit.c
index cf7691a4743..3d270e91d66 100644
--- a/src/backend/optimizer/util/inherit.c
+++ b/src/backend/optimizer/util/inherit.c
@@ -609,7 +609,7 @@ expand_single_inheritance_child(PlannerInfo *root, RangeTblEntry *parentrte,
/*
* If we are creating a child of the query target relation (only possible
- * in UPDATE/DELETE), add it to all_result_relids, as well as
+ * in UPDATE/DELETE/MERGE), add it to all_result_relids, as well as
* leaf_result_relids if appropriate, and make sure that we generate
* required row-identity data.
*/
diff --git a/src/backend/optimizer/util/pathnode.c b/src/backend/optimizer/util/pathnode.c
index 70f61ae7b1c..6dd11329fb5 100644
--- a/src/backend/optimizer/util/pathnode.c
+++ b/src/backend/optimizer/util/pathnode.c
@@ -3630,7 +3630,8 @@ create_lockrows_path(PlannerInfo *root, RelOptInfo *rel,
/*
* create_modifytable_path
- * Creates a pathnode that represents performing INSERT/UPDATE/DELETE mods
+ * Creates a pathnode that represents performing INSERT/UPDATE/DELETE/MERGE
+ * mods
*
* 'rel' is the parent relation associated with the result
* 'subpath' is a Path producing source data
diff --git a/src/backend/optimizer/util/relnode.c b/src/backend/optimizer/util/relnode.c
index edcdd0a3603..1786a3daddc 100644
--- a/src/backend/optimizer/util/relnode.c
+++ b/src/backend/optimizer/util/relnode.c
@@ -1013,7 +1013,7 @@ build_joinrel_tlist(PlannerInfo *root, RelOptInfo *joinrel,
if (var->varno == ROWID_VAR)
{
- /* UPDATE/DELETE row identity vars are always needed */
+ /* UPDATE/DELETE/MERGE row identity vars are always needed */
RowIdentityVarInfo *ridinfo = (RowIdentityVarInfo *)
list_nth(root->row_identity_vars, var->varattno - 1);