Evgeny Stanilovsky created IGNITE-21129:
-------------------------------------------
Summary: Sql. Statement#closeOnCompletion correct implementation.
Key: IGNITE-21129
URL: https://issues.apache.org/jira/browse/IGNITE-21129
Project: Ignite
Issue Type: Bug
Components: sql
Affects Versions: 3.0.0-beta1
Reporter: Evgeny Stanilovsky
Now it`s impossible to support method invariant in part of :
{noformat}
Specifies that this Statement will be closed when all its dependent result sets
are closed.
{noformat}
if we have "mixed" statement like: query;dml|ddl;query we need to know final
result set position. Appropriate tests:
{code:java}
public void testCloseOnCompletionFirstRsClosed(boolean closeOnCompletion)
throws Exception {
stmt.execute("SELECT 1; DROP TABLE IF EXISTS TEST_TX; SELECT 1; ");
ResultSet rs = stmt.getResultSet();
if (closeOnCompletion) {
stmt.closeOnCompletion();
}
rs.close();
assertFalse(stmt.isClosed());
stmt.getMoreResults();
rs = stmt.getResultSet();
stmt.getMoreResults();
rs = stmt.getResultSet();
rs.close();
if (closeOnCompletion) {
assertTrue(stmt.isClosed());
} else {
assertFalse(stmt.isClosed());
}
}
{code}
{code:java}
@ParameterizedTest(name = "closeOnCompletion = {0}")
@ValueSource(booleans = {true, false})
public void testCloseOnCompletionFirstRsClosed2(boolean closeOnCompletion)
throws Exception {
stmt.execute("SELECT 1; DROP TABLE IF EXISTS TEST_TX;");
ResultSet rs = stmt.getResultSet();
if (closeOnCompletion) {
stmt.closeOnCompletion();
}
rs.close();
if (closeOnCompletion) {
assertTrue(stmt.isClosed());
} else {
assertFalse(stmt.isClosed());
}
}
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)