diff options
Diffstat (limited to 'src/backend/optimizer')
-rw-r--r-- | src/backend/optimizer/path/indxpath.c | 13 | ||||
-rw-r--r-- | src/backend/optimizer/plan/planmain.c | 2 | ||||
-rw-r--r-- | src/backend/optimizer/plan/planner.c | 4 | ||||
-rw-r--r-- | src/backend/optimizer/util/appendinfo.c | 6 | ||||
-rw-r--r-- | src/backend/optimizer/util/inherit.c | 2 | ||||
-rw-r--r-- | src/backend/optimizer/util/pathnode.c | 3 | ||||
-rw-r--r-- | src/backend/optimizer/util/relnode.c | 2 |
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); |