Aleksey Plekhanov created IGNITE-28925:
------------------------------------------
Summary: Calcite engine. SortAggregateNode can call
downstream().end() twice
Key: IGNITE-28925
URL: https://issues.apache.org/jira/browse/IGNITE-28925
Project: Ignite
Issue Type: Bug
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov
Requested rows count is not reset on downstream end, this can lead to
assertions when invariant "not waiting rows, but got rows or end event" is
validated.
For example:
{code:java}
sql("CREATE TABLE t(a INTEGER PRIMARY KEY, b INTEGER) WITH
template=replicated," + atomicity());
for (int i = 0; i < 512; i++)
sql("INSERT INTO t VALUES (?, ?)", i, i);
assertQuery("SELECT t1.a FROM t AS t1 JOIN (SELECT a, count(a) FROM t GROUP BY
a) AS t2 ON t1.a = t2.a")
.resultSize(512)
.check(); {code}
Fails with:
{noformat}
Caused by: java.lang.AssertionError
at
org.apache.ignite.internal.processors.query.calcite.exec.rel.MergeJoinNode.endRight(MergeJoinNode.java:216)
at
org.apache.ignite.internal.processors.query.calcite.exec.rel.MergeJoinNode$2.end(MergeJoinNode.java:165)
at
org.apache.ignite.internal.processors.query.calcite.exec.rel.SortAggregateNode.end(SortAggregateNode.java:167)
at
org.apache.ignite.internal.processors.query.calcite.exec.rel.ScanNode.processNextBatch(ScanNode.java:203)
at
org.apache.ignite.internal.processors.query.calcite.exec.rel.ScanStorageNode.processNextBatch(ScanStorageNode.java:70)
at
org.apache.ignite.internal.processors.query.calcite.exec.rel.ScanNode.push(ScanNode.java:142)
{noformat}
First time MergeJoinNode is ended on {{SortAggregateNode.end ->
SortAggregateNode.doPush -> MergeJoinNode.pushRight -> MergeJoinNode.join ->
MergeJoinNode.tryToRequestInputs -> SortAggregateNode.request}}
Second time MergeJoinNode is ended in the same {{SortAggregateNode.end}} call
after {{SortAggregateNode.doPush}}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)