diff --git a/src/backend/distributed/planner/merge_planner.c b/src/backend/distributed/planner/merge_planner.c index 92fea1c9d..fc6e4fd06 100644 --- a/src/backend/distributed/planner/merge_planner.c +++ b/src/backend/distributed/planner/merge_planner.c @@ -857,11 +857,8 @@ ConvertRelationRTEIntoSubquery(Query *mergeQuery, RangeTblEntry *sourceRte, /* set the FROM expression to the subquery */ newRangeTableRef->rtindex = SINGLE_RTE_INDEX; sourceResultsQuery->jointree = makeFromExpr(list_make1(newRangeTableRef), NULL); - - bool isMergeQuery = true; - sourceResultsQuery->targetList = - CreateAllTargetListForRelation(sourceRte->relid, requiredAttributes, - isMergeQuery); + sourceResultsQuery->targetList = CreateAllTargetListForRelation(sourceRte->relid, + requiredAttributes); List *restrictionList = GetRestrictInfoListForRelation(sourceRte, plannerRestrictionContext); List *copyRestrictionList = copyObject(restrictionList); diff --git a/src/backend/distributed/planner/query_colocation_checker.c b/src/backend/distributed/planner/query_colocation_checker.c index 6c34d01a8..d7fb8e868 100644 --- a/src/backend/distributed/planner/query_colocation_checker.c +++ b/src/backend/distributed/planner/query_colocation_checker.c @@ -325,14 +325,13 @@ WrapRteRelationIntoSubquery(RangeTblEntry *rteRelation, * as a NULL column. */ List * -CreateAllTargetListForRelation(Oid relationId, List *requiredAttributes, bool - isMergeQuery) +CreateAllTargetListForRelation(Oid relationId, List *requiredAttributes) { Relation relation = relation_open(relationId, AccessShareLock); int numberOfAttributes = RelationGetNumberOfAttributes(relation); List *targetList = NIL; - int colAppendIdx = 1; + int varAttrNo = 1; for (int attrNum = 1; attrNum <= numberOfAttributes; attrNum++) { @@ -362,9 +361,8 @@ CreateAllTargetListForRelation(Oid relationId, List *requiredAttributes, bool } else { - int varAttNum = isMergeQuery ? attrNum : colAppendIdx++; TargetEntry *targetEntry = - CreateTargetEntryForColumn(attributeTuple, SINGLE_RTE_INDEX, varAttNum, + CreateTargetEntryForColumn(attributeTuple, SINGLE_RTE_INDEX, varAttrNo, resNo); targetList = lappend(targetList, targetEntry); } diff --git a/src/backend/distributed/planner/recursive_planning.c b/src/backend/distributed/planner/recursive_planning.c index f624ce8f6..9f520fa5f 100644 --- a/src/backend/distributed/planner/recursive_planning.c +++ b/src/backend/distributed/planner/recursive_planning.c @@ -1767,10 +1767,8 @@ ReplaceRTERelationWithRteSubquery(RangeTblEntry *rangeTableEntry, { Query *subquery = WrapRteRelationIntoSubquery(rangeTableEntry, requiredAttrNumbers, perminfo); - bool isMergeQuery = false; List *outerQueryTargetList = CreateAllTargetListForRelation(rangeTableEntry->relid, - requiredAttrNumbers, - isMergeQuery); + requiredAttrNumbers); List *restrictionList = GetRestrictInfoListForRelation(rangeTableEntry, diff --git a/src/include/distributed/query_colocation_checker.h b/src/include/distributed/query_colocation_checker.h index ae6062e27..2a46d364c 100644 --- a/src/include/distributed/query_colocation_checker.h +++ b/src/include/distributed/query_colocation_checker.h @@ -38,7 +38,6 @@ extern bool SubqueryColocated(Query *subquery, ColocatedJoinChecker *context); extern Query * WrapRteRelationIntoSubquery(RangeTblEntry *rteRelation, List *requiredAttributes, RTEPermissionInfo *perminfo); -extern List * CreateAllTargetListForRelation(Oid relationId, List *requiredAttributes, - bool isMergeQuery); +extern List * CreateAllTargetListForRelation(Oid relationId, List *requiredAttributes); #endif /* QUERY_COLOCATION_CHECKER_H */ diff --git a/src/test/regress/expected/merge_vcore.out b/src/test/regress/expected/merge_vcore.out index d2f15ee46..03f6f8820 100644 --- a/src/test/regress/expected/merge_vcore.out +++ b/src/test/regress/expected/merge_vcore.out @@ -476,41 +476,6 @@ WHEN MATCHED THEN DO NOTHING; Filter: ('2'::bigint = id) (11 rows) -DROP TABLE IF EXISTS source; -DROP TABLE IF EXISTS target; --- Bug Fix Test as part of this PR -CREATE TABLE source ( - id int, - age int, - salary int -); -CREATE TABLE target ( - id int, - age int, - salary int -); -SELECT create_distributed_table('source', 'id', colocate_with=>'none'); - create_distributed_table ---------------------------------------------------------------------- - -(1 row) - -SELECT create_distributed_table('target', 'id', colocate_with=>'none'); - create_distributed_table ---------------------------------------------------------------------- - -(1 row) - -INSERT INTO source (id, age, salary) VALUES (1,30, 100000); -MERGE INTO ONLY target USING source ON (source.id = target.id) -WHEN NOT MATCHED THEN -INSERT (id, salary) VALUES (source.id, source.salary); -SELECT * FROM TARGET; - id | age | salary ---------------------------------------------------------------------- - 1 | | 100000 -(1 row) - DROP TABLE IF EXISTS source; DROP TABLE IF EXISTS target; DROP SCHEMA IF EXISTS merge_vcore_schema CASCADE; diff --git a/src/test/regress/sql/merge_vcore.sql b/src/test/regress/sql/merge_vcore.sql index 5f1e112b6..472bbfe91 100644 --- a/src/test/regress/sql/merge_vcore.sql +++ b/src/test/regress/sql/merge_vcore.sql @@ -312,32 +312,6 @@ WHEN MATCHED THEN DO NOTHING; DROP TABLE IF EXISTS source; DROP TABLE IF EXISTS target; --- Bug Fix Test as part of this PR -CREATE TABLE source ( - id int, - age int, - salary int -); - -CREATE TABLE target ( - id int, - age int, - salary int -); - -SELECT create_distributed_table('source', 'id', colocate_with=>'none'); -SELECT create_distributed_table('target', 'id', colocate_with=>'none'); - -INSERT INTO source (id, age, salary) VALUES (1,30, 100000); - -MERGE INTO ONLY target USING source ON (source.id = target.id) -WHEN NOT MATCHED THEN -INSERT (id, salary) VALUES (source.id, source.salary); - -SELECT * FROM TARGET; -DROP TABLE IF EXISTS source; -DROP TABLE IF EXISTS target; - DROP SCHEMA IF EXISTS merge_vcore_schema CASCADE;