[ 
https://issues.apache.org/jira/browse/IGNITE-16580?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17495353#comment-17495353
 ] 

Aleksey Plekhanov commented on IGNITE-16580:
--------------------------------------------

[~zstan], I've checked the query and it returns the correct result. The result 
is not the same as you expect in code since column "c" is not inserted and its 
value is {{null}} for the '222, 222' row (also k2 is inserted into k1 column, 
but it does not affect the result). Result will be as expected if something 
like this will be used as an insert statement: {{{}INSERT (k1, k2, a, b, c) 
VALUES (src.k1, src.k2, src.a, src.b, src.c){}}}.

> Calcite. Merge returns unexpected results.
> ------------------------------------------
>
>                 Key: IGNITE-16580
>                 URL: https://issues.apache.org/jira/browse/IGNITE-16580
>             Project: Ignite
>          Issue Type: Bug
>          Components: sql
>            Reporter: Evgeny Stanilovsky
>            Assignee: Aleksey Plekhanov
>            Priority: Major
>              Labels: calcite, calcite2-required
>
> {noformat}
>     @Test
>     public void testMerge0() {
>         sql("CREATE TABLE test1 (k1 int, k2 int, a int, b varchar, c varchar, 
> CONSTRAINT PK PRIMARY KEY (k1, k2))");
>         sql("INSERT INTO test1 VALUES (111, 111, 0, 'a', '0')");
>         sql("INSERT INTO test1 VALUES (222, 222, 1, 'b', '1')");
>         sql("CREATE TABLE test2 (k1 int, k2 int, a int, b varchar, c varchar, 
> CONSTRAINT PK PRIMARY KEY (k1, k2))");
>         sql("INSERT INTO test2 VALUES (333, 333, 0, '100', '')");
>         sql("INSERT INTO test2 VALUES (444, 444, 2, '200', '')");
>         String sql = "MERGE INTO test2 dst USING test1 src ON (dst.a = src.a) 
> " +
>             "WHEN MATCHED THEN UPDATE SET b = src.b " +
>             "WHEN NOT MATCHED THEN INSERT (k1, k2, a, b) VALUES (src.k2, 
> src.k2, src.a, src.b)";
>         
> assertQuery(sql).matches(QueryChecker.containsSubPlan("IgniteTableSpool")).check();
>         assertQuery("SELECT * FROM test2 ORDER BY k1")
>             .returns(222, 222, 1, "b", "1")
>             .returns(333, 333, 0, "a", "")
>             .returns(444, 444, 2, "200", "")
>             .check();
>     }
> {noformat}
> java.lang.AssertionError: Collections sizes are not equal:
> Expected: [[222, 222, 1, b, 1], [333, 333, 0, a, ], [444, 444, 2, 200, ]]
> Actual:   [[333, 333, 0, 100, ], [444, 444, 2, 200, ]]



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to