[
https://issues.apache.org/jira/browse/IGNITE-16580?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Evgeny Stanilovsky updated IGNITE-16580:
----------------------------------------
Description:
{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, ]]
was:
{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 (a, b) VALUES (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, ]]
> 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
> 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)