Pavel Pereslegin created IGNITE-21873:
-----------------------------------------
Summary: Sql. The insertion fails if the execution node buffer
size is set to 1
Key: IGNITE-21873
URL: https://issues.apache.org/jira/browse/IGNITE-21873
Project: Ignite
Issue Type: Bug
Components: sql
Reporter: Pavel Pereslegin
This seems like a degenerate case, but it may still be worth addressing the
issue.
To reproduce this issue you need to set {{Commons.IN_BUFFER_SIZE = 1}}.
And execute DML query, for example:
{code:java}
sql("CREATE TABLE test(id INT PRIMARY KEY)");
sql("INSERT INTO test VALUES (0), (1) ");
{code}
Result:
{noformat}
Caused by: java.lang.AssertionError
at
org.apache.ignite.internal.sql.engine.exec.rel.ModifyNode.request(ModifyNode.java:130)
~[main/:?]
at
org.apache.ignite.internal.sql.engine.exec.rel.Outbox.flush(Outbox.java:326)
~[main/:?]
at
org.apache.ignite.internal.sql.engine.exec.rel.Outbox.push(Outbox.java:166)
~[main/:?]
at
org.apache.ignite.internal.sql.engine.exec.rel.ModifyNode.tryEnd(ModifyNode.java:206)
~[main/:?]
at
org.apache.ignite.internal.sql.engine.exec.rel.ModifyNode.lambda$flushTuples$1(ModifyNode.java:282)
~[main/:?]
at
org.apache.ignite.internal.sql.engine.exec.ExecutionContext.lambda$execute$0(ExecutionContext.java:325)
~[main/:?]
{noformat}
The problem can be solved by swapping the following lines in the
{{ModifyNode#tryEnd}} method.
{code:java}
downstream().push(context().rowHandler().factory(MODIFY_RESULT).create(updatedRows));
requested = 0; // must come before the 'push()' call
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)