You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@impala.apache.org by "Peter Rozsa (Code Review)" <ge...@cloudera.org> on 2024/10/29 13:41:35 UTC

[Impala-ASF-CR] IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement

Peter Rozsa has uploaded this change for review. ( http://gerrit.cloudera.org:8080/21988


Change subject: IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement
......................................................................

IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement

This change adds support for a new MERGE clause that covers the
condition when the source statements rows do not match the target
tables rows. Example: MERGE INTO target t using source s on t.id = s.id
WHEN NOT MATCHED BY SOURCE THEN UPDATE set t.column = "a";

This change also adds support to use WHEN NOT MATCHED BY TARGET
explicitly, this is equivalent to  WHEN NOT MATCHED.

Tests:
 - Parser tests for the new language elements.
 - Analyzer and planner test for WHEN NOT MATCHED BY SOURCE/TARGET
   clauses.
 - E2E tests for WHEN NOT MATCHED BY SOURCE clause.

Change-Id: Ia0e0607682a616ef6ad9eccf499dc0c5c9278c5f
---
M be/src/exec/iceberg-merge-node.cc
M be/src/exec/iceberg-merge-node.h
M common/thrift/PlanNodes.thrift
M fe/src/main/cup/sql-parser.cup
M fe/src/main/java/org/apache/impala/analysis/MergeCase.java
M fe/src/main/java/org/apache/impala/analysis/MergeDelete.java
M fe/src/main/java/org/apache/impala/analysis/MergeInsert.java
M fe/src/main/java/org/apache/impala/analysis/MergeStmt.java
M fe/src/main/java/org/apache/impala/analysis/MergeUpdate.java
M fe/src/main/java/org/apache/impala/planner/IcebergMergeNode.java
M fe/src/test/java/org/apache/impala/analysis/AnalyzeModifyStmtsTest.java
M fe/src/test/java/org/apache/impala/analysis/ParserTest.java
M testdata/workloads/functional-planner/queries/PlannerTest/iceberg-merge.test
M testdata/workloads/functional-query/queries/QueryTest/iceberg-merge.test
14 files changed, 360 insertions(+), 105 deletions(-)



  git pull ssh://gerrit.cloudera.org:29418/Impala-ASF refs/changes/88/21988/1
-- 
To view, visit http://gerrit.cloudera.org:8080/21988
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia0e0607682a616ef6ad9eccf499dc0c5c9278c5f
Gerrit-Change-Number: 21988
Gerrit-PatchSet: 1
Gerrit-Owner: Peter Rozsa <pr...@cloudera.com>

[Impala-ASF-CR] IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement

Posted by "Impala Public Jenkins (Code Review)" <ge...@cloudera.org>.
Impala Public Jenkins has posted comments on this change. ( http://gerrit.cloudera.org:8080/21988 )

Change subject: IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement
......................................................................


Patch Set 5: Code-Review+2


-- 
To view, visit http://gerrit.cloudera.org:8080/21988
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ia0e0607682a616ef6ad9eccf499dc0c5c9278c5f
Gerrit-Change-Number: 21988
Gerrit-PatchSet: 5
Gerrit-Owner: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Impala Public Jenkins <im...@cloudera.com>
Gerrit-Reviewer: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Zoltan Borok-Nagy <bo...@cloudera.com>
Gerrit-Comment-Date: Thu, 02 Jan 2025 09:23:06 +0000
Gerrit-HasComments: No

[Impala-ASF-CR] IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement

Posted by "Peter Rozsa (Code Review)" <ge...@cloudera.org>.
Peter Rozsa has posted comments on this change. ( http://gerrit.cloudera.org:8080/21988 )

Change subject: IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement
......................................................................


Patch Set 4: Code-Review+2

(2 comments)

Carrying Zoltan's +2

http://gerrit.cloudera.org:8080/#/c/21988/3/be/src/exec/iceberg-merge-node.h
File be/src/exec/iceberg-merge-node.h:

http://gerrit.cloudera.org:8080/#/c/21988/3/be/src/exec/iceberg-merge-node.h@102
PS3, Line 102: '
> nit: double closing parentheses
Done


http://gerrit.cloudera.org:8080/#/c/21988/3/be/src/exec/iceberg-merge-node.h@102
PS3, Line 102: n
> nit: no need for capital 'I'
Done



-- 
To view, visit http://gerrit.cloudera.org:8080/21988
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ia0e0607682a616ef6ad9eccf499dc0c5c9278c5f
Gerrit-Change-Number: 21988
Gerrit-PatchSet: 4
Gerrit-Owner: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Impala Public Jenkins <im...@cloudera.com>
Gerrit-Reviewer: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Zoltan Borok-Nagy <bo...@cloudera.com>
Gerrit-Comment-Date: Thu, 02 Jan 2025 08:54:12 +0000
Gerrit-HasComments: Yes

[Impala-ASF-CR] IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement

Posted by "Impala Public Jenkins (Code Review)" <ge...@cloudera.org>.
Impala Public Jenkins has posted comments on this change. ( http://gerrit.cloudera.org:8080/21988 )

Change subject: IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement
......................................................................


Patch Set 1:

(1 comment)

gerrit-auto-critic failed. You can reproduce it locally using command:

  python2 bin/jenkins/critique-gerrit-review.py --dryrun

To run it, you might need a virtual env with virtualenv installed.

http://gerrit.cloudera.org:8080/#/c/21988/1/fe/src/main/java/org/apache/impala/planner/IcebergMergeNode.java
File fe/src/main/java/org/apache/impala/planner/IcebergMergeNode.java:

http://gerrit.cloudera.org:8080/#/c/21988/1/fe/src/main/java/org/apache/impala/planner/IcebergMergeNode.java@71
PS1, Line 71:           Expr.treesToThrift(mergeCase.getResultExprs()), mergeCase.caseType(), mergeCase.matchType());
line too long (103 > 90)



-- 
To view, visit http://gerrit.cloudera.org:8080/21988
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ia0e0607682a616ef6ad9eccf499dc0c5c9278c5f
Gerrit-Change-Number: 21988
Gerrit-PatchSet: 1
Gerrit-Owner: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Impala Public Jenkins <im...@cloudera.com>
Gerrit-Comment-Date: Tue, 29 Oct 2024 13:42:49 +0000
Gerrit-HasComments: Yes

[Impala-ASF-CR] IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement

Posted by "Peter Rozsa (Code Review)" <ge...@cloudera.org>.
Peter Rozsa has uploaded a new patch set (#4). ( http://gerrit.cloudera.org:8080/21988 )

Change subject: IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement
......................................................................

IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement

This change adds support for a new MERGE clause that covers the
condition when the source statement's rows do not match the target
tables rows. Example: MERGE INTO target t using source s on t.id = s.id
WHEN NOT MATCHED BY SOURCE THEN UPDATE set t.column = "a";

This change also adds support to use WHEN NOT MATCHED BY TARGET
explicitly, this is equivalent to  WHEN NOT MATCHED.

Tests:
 - Parser tests for the new language elements.
 - Analyzer and planner test for WHEN NOT MATCHED BY SOURCE/TARGET
   clauses.
 - E2E tests for WHEN NOT MATCHED BY SOURCE clause.

Change-Id: Ia0e0607682a616ef6ad9eccf499dc0c5c9278c5f
---
M be/src/exec/iceberg-merge-node.cc
M be/src/exec/iceberg-merge-node.h
M common/thrift/PlanNodes.thrift
M fe/src/main/cup/sql-parser.cup
M fe/src/main/java/org/apache/impala/analysis/MergeCase.java
M fe/src/main/java/org/apache/impala/analysis/MergeDelete.java
M fe/src/main/java/org/apache/impala/analysis/MergeInsert.java
M fe/src/main/java/org/apache/impala/analysis/MergeStmt.java
M fe/src/main/java/org/apache/impala/analysis/MergeUpdate.java
M fe/src/main/java/org/apache/impala/planner/IcebergMergeNode.java
M fe/src/test/java/org/apache/impala/analysis/AnalyzeModifyStmtsTest.java
M fe/src/test/java/org/apache/impala/analysis/ParserTest.java
M testdata/workloads/functional-planner/queries/PlannerTest/iceberg-merge.test
A testdata/workloads/functional-query/queries/QueryTest/iceberg-merge-partition-sort.test
A testdata/workloads/functional-query/queries/QueryTest/iceberg-merge-partition.test
M testdata/workloads/functional-query/queries/QueryTest/iceberg-merge.test
M tests/query_test/test_iceberg.py
17 files changed, 745 insertions(+), 329 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/Impala-ASF refs/changes/88/21988/4
-- 
To view, visit http://gerrit.cloudera.org:8080/21988
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ia0e0607682a616ef6ad9eccf499dc0c5c9278c5f
Gerrit-Change-Number: 21988
Gerrit-PatchSet: 4
Gerrit-Owner: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Impala Public Jenkins <im...@cloudera.com>
Gerrit-Reviewer: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Zoltan Borok-Nagy <bo...@cloudera.com>

[Impala-ASF-CR] IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement

Posted by "Zoltan Borok-Nagy (Code Review)" <ge...@cloudera.org>.
Zoltan Borok-Nagy has posted comments on this change. ( http://gerrit.cloudera.org:8080/21988 )

Change subject: IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement
......................................................................


Patch Set 3: Code-Review+2

(2 comments)

Thanks for applying the changes!

http://gerrit.cloudera.org:8080/#/c/21988/3/be/src/exec/iceberg-merge-node.h
File be/src/exec/iceberg-merge-node.h:

http://gerrit.cloudera.org:8080/#/c/21988/3/be/src/exec/iceberg-merge-node.h@102
PS3, Line 102: I
nit: no need for capital 'I'


http://gerrit.cloudera.org:8080/#/c/21988/3/be/src/exec/iceberg-merge-node.h@102
PS3, Line 102: )
nit: double closing parentheses



-- 
To view, visit http://gerrit.cloudera.org:8080/21988
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ia0e0607682a616ef6ad9eccf499dc0c5c9278c5f
Gerrit-Change-Number: 21988
Gerrit-PatchSet: 3
Gerrit-Owner: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Impala Public Jenkins <im...@cloudera.com>
Gerrit-Reviewer: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Zoltan Borok-Nagy <bo...@cloudera.com>
Gerrit-Comment-Date: Fri, 20 Dec 2024 13:45:59 +0000
Gerrit-HasComments: Yes

[Impala-ASF-CR] IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement

Posted by "Impala Public Jenkins (Code Review)" <ge...@cloudera.org>.
Impala Public Jenkins has posted comments on this change. ( http://gerrit.cloudera.org:8080/21988 )

Change subject: IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement
......................................................................


Patch Set 5: Verified+1


-- 
To view, visit http://gerrit.cloudera.org:8080/21988
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ia0e0607682a616ef6ad9eccf499dc0c5c9278c5f
Gerrit-Change-Number: 21988
Gerrit-PatchSet: 5
Gerrit-Owner: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Impala Public Jenkins <im...@cloudera.com>
Gerrit-Reviewer: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Zoltan Borok-Nagy <bo...@cloudera.com>
Gerrit-Comment-Date: Thu, 02 Jan 2025 15:02:19 +0000
Gerrit-HasComments: No

[Impala-ASF-CR] IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement

Posted by "Impala Public Jenkins (Code Review)" <ge...@cloudera.org>.
Impala Public Jenkins has posted comments on this change. ( http://gerrit.cloudera.org:8080/21988 )

Change subject: IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement
......................................................................


Patch Set 1:

Build Successful 

https://jenkins.impala.io/job/gerrit-code-review-checks/17290/ : Initial code review checks passed. Use gerrit-verify-dryrun-external or gerrit-verify-dryrun to run full precommit tests.


-- 
To view, visit http://gerrit.cloudera.org:8080/21988
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ia0e0607682a616ef6ad9eccf499dc0c5c9278c5f
Gerrit-Change-Number: 21988
Gerrit-PatchSet: 1
Gerrit-Owner: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Impala Public Jenkins <im...@cloudera.com>
Gerrit-Comment-Date: Tue, 29 Oct 2024 14:06:57 +0000
Gerrit-HasComments: No

[Impala-ASF-CR] IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement

Posted by "Impala Public Jenkins (Code Review)" <ge...@cloudera.org>.
Impala Public Jenkins has posted comments on this change. ( http://gerrit.cloudera.org:8080/21988 )

Change subject: IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement
......................................................................


Patch Set 3:

Build Successful 

https://jenkins.impala.io/job/gerrit-code-review-checks/17725/ : Initial code review checks passed. Use gerrit-verify-dryrun-external or gerrit-verify-dryrun to run full precommit tests.


-- 
To view, visit http://gerrit.cloudera.org:8080/21988
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ia0e0607682a616ef6ad9eccf499dc0c5c9278c5f
Gerrit-Change-Number: 21988
Gerrit-PatchSet: 3
Gerrit-Owner: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Impala Public Jenkins <im...@cloudera.com>
Gerrit-Reviewer: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Zoltan Borok-Nagy <bo...@cloudera.com>
Gerrit-Comment-Date: Wed, 18 Dec 2024 17:46:32 +0000
Gerrit-HasComments: No

[Impala-ASF-CR] IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement

Posted by "Zoltan Borok-Nagy (Code Review)" <ge...@cloudera.org>.
Zoltan Borok-Nagy has posted comments on this change. ( http://gerrit.cloudera.org:8080/21988 )

Change subject: IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement
......................................................................


Patch Set 2:

(6 comments)

The code looks great, I only found a few nits. Some additional tests could be useful.

http://gerrit.cloudera.org:8080/#/c/21988/2//COMMIT_MSG
Commit Message:

http://gerrit.cloudera.org:8080/#/c/21988/2//COMMIT_MSG@10
PS2, Line 10: statements
nit: statement's


http://gerrit.cloudera.org:8080/#/c/21988/2/be/src/exec/iceberg-merge-node.cc
File be/src/exec/iceberg-merge-node.cc:

http://gerrit.cloudera.org:8080/#/c/21988/2/be/src/exec/iceberg-merge-node.cc@211
PS2, Line 211:   
nit: too much indent


http://gerrit.cloudera.org:8080/#/c/21988/2/be/src/exec/iceberg-merge-node.cc@227
PS2, Line 227:           
nit: indentation is off


http://gerrit.cloudera.org:8080/#/c/21988/2/fe/src/main/cup/sql-parser.cup
File fe/src/main/cup/sql-parser.cup:

http://gerrit.cloudera.org:8080/#/c/21988/2/fe/src/main/cup/sql-parser.cup@1063
PS2, Line 1063:     if (target_or_source.equals("SOURCE")) {
              :       parser.parseError("SOURCE", SqlParserSymbols.KW_INSERT, "UPDATE, DELETE");
              :     }
Could you please add comment, e.g. "User wrote WHEN NOT MATCHED BY SOURCE with INSERT operation which doesn't make sense, as there is nothing to insert."


http://gerrit.cloudera.org:8080/#/c/21988/2/fe/src/main/cup/sql-parser.cup@1073
PS2, Line 1073:       int kw = SqlParserSymbols.KW_DELETE;
              :       if (matched.caseType().equals(TMergeCaseType.UPDATE)) {
              :         kw = SqlParserSymbols.KW_UPDATE;
              :       }
              :       parser.parseError("TARGET", kw, "INSERT");
Could you please add comment, e.g. "User wrote WHEN NOT MATCHED BY TARGET with DELETE/UPDATE operation which doesn't make sense, as there is nothing to delete/update."


http://gerrit.cloudera.org:8080/#/c/21988/2/testdata/workloads/functional-query/queries/QueryTest/iceberg-merge.test
File testdata/workloads/functional-query/queries/QueryTest/iceberg-merge.test:

http://gerrit.cloudera.org:8080/#/c/21988/2/testdata/workloads/functional-query/queries/QueryTest/iceberg-merge.test@360
PS2, Line 360: ====
Maybe a few additional tests could be useful, just to check we don't miss anything

- target table is non-partitioned
- NOT MATCHED BY SOURCE without any predicates then DELETE/UPDATE
- NOT MATCHED BY SOURCE with multiple predicates then DELETE/UPDATE
- MERGE statement with many cases



-- 
To view, visit http://gerrit.cloudera.org:8080/21988
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ia0e0607682a616ef6ad9eccf499dc0c5c9278c5f
Gerrit-Change-Number: 21988
Gerrit-PatchSet: 2
Gerrit-Owner: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Impala Public Jenkins <im...@cloudera.com>
Gerrit-Reviewer: Zoltan Borok-Nagy <bo...@cloudera.com>
Gerrit-Comment-Date: Thu, 21 Nov 2024 20:27:13 +0000
Gerrit-HasComments: Yes

[Impala-ASF-CR] IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement

Posted by "Impala Public Jenkins (Code Review)" <ge...@cloudera.org>.
Impala Public Jenkins has posted comments on this change. ( http://gerrit.cloudera.org:8080/21988 )

Change subject: IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement
......................................................................


Patch Set 5:

Build started: https://jenkins.impala.io/job/gerrit-verify-dryrun/11267/ DRY_RUN=false


-- 
To view, visit http://gerrit.cloudera.org:8080/21988
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ia0e0607682a616ef6ad9eccf499dc0c5c9278c5f
Gerrit-Change-Number: 21988
Gerrit-PatchSet: 5
Gerrit-Owner: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Impala Public Jenkins <im...@cloudera.com>
Gerrit-Reviewer: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Zoltan Borok-Nagy <bo...@cloudera.com>
Gerrit-Comment-Date: Thu, 02 Jan 2025 09:23:06 +0000
Gerrit-HasComments: No

[Impala-ASF-CR] IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement

Posted by "Impala Public Jenkins (Code Review)" <ge...@cloudera.org>.
Impala Public Jenkins has submitted this change and it was merged. ( http://gerrit.cloudera.org:8080/21988 )

Change subject: IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement
......................................................................

IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement

This change adds support for a new MERGE clause that covers the
condition when the source statement's rows do not match the target
tables rows. Example: MERGE INTO target t using source s on t.id = s.id
WHEN NOT MATCHED BY SOURCE THEN UPDATE set t.column = "a";

This change also adds support to use WHEN NOT MATCHED BY TARGET
explicitly, this is equivalent to  WHEN NOT MATCHED.

Tests:
 - Parser tests for the new language elements.
 - Analyzer and planner test for WHEN NOT MATCHED BY SOURCE/TARGET
   clauses.
 - E2E tests for WHEN NOT MATCHED BY SOURCE clause.

Change-Id: Ia0e0607682a616ef6ad9eccf499dc0c5c9278c5f
Reviewed-on: http://gerrit.cloudera.org:8080/21988
Reviewed-by: Impala Public Jenkins <im...@cloudera.com>
Tested-by: Impala Public Jenkins <im...@cloudera.com>
---
M be/src/exec/iceberg-merge-node.cc
M be/src/exec/iceberg-merge-node.h
M common/thrift/PlanNodes.thrift
M fe/src/main/cup/sql-parser.cup
M fe/src/main/java/org/apache/impala/analysis/MergeCase.java
M fe/src/main/java/org/apache/impala/analysis/MergeDelete.java
M fe/src/main/java/org/apache/impala/analysis/MergeInsert.java
M fe/src/main/java/org/apache/impala/analysis/MergeStmt.java
M fe/src/main/java/org/apache/impala/analysis/MergeUpdate.java
M fe/src/main/java/org/apache/impala/planner/IcebergMergeNode.java
M fe/src/test/java/org/apache/impala/analysis/AnalyzeModifyStmtsTest.java
M fe/src/test/java/org/apache/impala/analysis/ParserTest.java
M testdata/workloads/functional-planner/queries/PlannerTest/iceberg-merge.test
A testdata/workloads/functional-query/queries/QueryTest/iceberg-merge-partition-sort.test
A testdata/workloads/functional-query/queries/QueryTest/iceberg-merge-partition.test
M testdata/workloads/functional-query/queries/QueryTest/iceberg-merge.test
M tests/query_test/test_iceberg.py
17 files changed, 745 insertions(+), 329 deletions(-)

Approvals:
  Impala Public Jenkins: Looks good to me, approved; Verified

-- 
To view, visit http://gerrit.cloudera.org:8080/21988
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: Ia0e0607682a616ef6ad9eccf499dc0c5c9278c5f
Gerrit-Change-Number: 21988
Gerrit-PatchSet: 6
Gerrit-Owner: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Impala Public Jenkins <im...@cloudera.com>
Gerrit-Reviewer: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Zoltan Borok-Nagy <bo...@cloudera.com>

[Impala-ASF-CR] IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement

Posted by "Impala Public Jenkins (Code Review)" <ge...@cloudera.org>.
Impala Public Jenkins has posted comments on this change. ( http://gerrit.cloudera.org:8080/21988 )

Change subject: IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement
......................................................................


Patch Set 4:

Build Successful 

https://jenkins.impala.io/job/gerrit-code-review-checks/17821/ : Initial code review checks passed. Use gerrit-verify-dryrun-external or gerrit-verify-dryrun to run full precommit tests.


-- 
To view, visit http://gerrit.cloudera.org:8080/21988
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ia0e0607682a616ef6ad9eccf499dc0c5c9278c5f
Gerrit-Change-Number: 21988
Gerrit-PatchSet: 4
Gerrit-Owner: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Impala Public Jenkins <im...@cloudera.com>
Gerrit-Reviewer: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Zoltan Borok-Nagy <bo...@cloudera.com>
Gerrit-Comment-Date: Thu, 02 Jan 2025 09:18:07 +0000
Gerrit-HasComments: No

[Impala-ASF-CR] IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement

Posted by "Peter Rozsa (Code Review)" <ge...@cloudera.org>.
Peter Rozsa has uploaded a new patch set (#2). ( http://gerrit.cloudera.org:8080/21988 )

Change subject: IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement
......................................................................

IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement

This change adds support for a new MERGE clause that covers the
condition when the source statements rows do not match the target
tables rows. Example: MERGE INTO target t using source s on t.id = s.id
WHEN NOT MATCHED BY SOURCE THEN UPDATE set t.column = "a";

This change also adds support to use WHEN NOT MATCHED BY TARGET
explicitly, this is equivalent to  WHEN NOT MATCHED.

Tests:
 - Parser tests for the new language elements.
 - Analyzer and planner test for WHEN NOT MATCHED BY SOURCE/TARGET
   clauses.
 - E2E tests for WHEN NOT MATCHED BY SOURCE clause.

Change-Id: Ia0e0607682a616ef6ad9eccf499dc0c5c9278c5f
---
M be/src/exec/iceberg-merge-node.cc
M be/src/exec/iceberg-merge-node.h
M common/thrift/PlanNodes.thrift
M fe/src/main/cup/sql-parser.cup
M fe/src/main/java/org/apache/impala/analysis/MergeCase.java
M fe/src/main/java/org/apache/impala/analysis/MergeDelete.java
M fe/src/main/java/org/apache/impala/analysis/MergeInsert.java
M fe/src/main/java/org/apache/impala/analysis/MergeStmt.java
M fe/src/main/java/org/apache/impala/analysis/MergeUpdate.java
M fe/src/main/java/org/apache/impala/planner/IcebergMergeNode.java
M fe/src/test/java/org/apache/impala/analysis/AnalyzeModifyStmtsTest.java
M fe/src/test/java/org/apache/impala/analysis/ParserTest.java
M testdata/workloads/functional-planner/queries/PlannerTest/iceberg-merge.test
M testdata/workloads/functional-query/queries/QueryTest/iceberg-merge.test
14 files changed, 361 insertions(+), 105 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/Impala-ASF refs/changes/88/21988/2
-- 
To view, visit http://gerrit.cloudera.org:8080/21988
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ia0e0607682a616ef6ad9eccf499dc0c5c9278c5f
Gerrit-Change-Number: 21988
Gerrit-PatchSet: 2
Gerrit-Owner: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Impala Public Jenkins <im...@cloudera.com>

[Impala-ASF-CR] IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement

Posted by "Impala Public Jenkins (Code Review)" <ge...@cloudera.org>.
Impala Public Jenkins has posted comments on this change. ( http://gerrit.cloudera.org:8080/21988 )

Change subject: IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement
......................................................................


Patch Set 2:

Build Successful 

https://jenkins.impala.io/job/gerrit-code-review-checks/17291/ : Initial code review checks passed. Use gerrit-verify-dryrun-external or gerrit-verify-dryrun to run full precommit tests.


-- 
To view, visit http://gerrit.cloudera.org:8080/21988
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Ia0e0607682a616ef6ad9eccf499dc0c5c9278c5f
Gerrit-Change-Number: 21988
Gerrit-PatchSet: 2
Gerrit-Owner: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Impala Public Jenkins <im...@cloudera.com>
Gerrit-Comment-Date: Tue, 29 Oct 2024 14:12:05 +0000
Gerrit-HasComments: No

[Impala-ASF-CR] IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement

Posted by "Peter Rozsa (Code Review)" <ge...@cloudera.org>.
Peter Rozsa has uploaded a new patch set (#3). ( http://gerrit.cloudera.org:8080/21988 )

Change subject: IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement
......................................................................

IMPALA-13362: Implement WHEN NOT MATCHED BY SOURCE syntax for MERGE statement

This change adds support for a new MERGE clause that covers the
condition when the source statement's rows do not match the target
tables rows. Example: MERGE INTO target t using source s on t.id = s.id
WHEN NOT MATCHED BY SOURCE THEN UPDATE set t.column = "a";

This change also adds support to use WHEN NOT MATCHED BY TARGET
explicitly, this is equivalent to  WHEN NOT MATCHED.

Tests:
 - Parser tests for the new language elements.
 - Analyzer and planner test for WHEN NOT MATCHED BY SOURCE/TARGET
   clauses.
 - E2E tests for WHEN NOT MATCHED BY SOURCE clause.

Change-Id: Ia0e0607682a616ef6ad9eccf499dc0c5c9278c5f
---
M be/src/exec/iceberg-merge-node.cc
M be/src/exec/iceberg-merge-node.h
M common/thrift/PlanNodes.thrift
M fe/src/main/cup/sql-parser.cup
M fe/src/main/java/org/apache/impala/analysis/MergeCase.java
M fe/src/main/java/org/apache/impala/analysis/MergeDelete.java
M fe/src/main/java/org/apache/impala/analysis/MergeInsert.java
M fe/src/main/java/org/apache/impala/analysis/MergeStmt.java
M fe/src/main/java/org/apache/impala/analysis/MergeUpdate.java
M fe/src/main/java/org/apache/impala/planner/IcebergMergeNode.java
M fe/src/test/java/org/apache/impala/analysis/AnalyzeModifyStmtsTest.java
M fe/src/test/java/org/apache/impala/analysis/ParserTest.java
M testdata/workloads/functional-planner/queries/PlannerTest/iceberg-merge.test
A testdata/workloads/functional-query/queries/QueryTest/iceberg-merge-partition-sort.test
A testdata/workloads/functional-query/queries/QueryTest/iceberg-merge-partition.test
M testdata/workloads/functional-query/queries/QueryTest/iceberg-merge.test
M tests/query_test/test_iceberg.py
17 files changed, 745 insertions(+), 329 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/Impala-ASF refs/changes/88/21988/3
-- 
To view, visit http://gerrit.cloudera.org:8080/21988
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ia0e0607682a616ef6ad9eccf499dc0c5c9278c5f
Gerrit-Change-Number: 21988
Gerrit-PatchSet: 3
Gerrit-Owner: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Impala Public Jenkins <im...@cloudera.com>
Gerrit-Reviewer: Peter Rozsa <pr...@cloudera.com>
Gerrit-Reviewer: Zoltan Borok-Nagy <bo...@cloudera.com>