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)

Reply via email to