[ 
https://issues.apache.org/jira/browse/IGNITE-12778?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nikolay Izhikov resolved IGNITE-12778.
--------------------------------------
    Resolution: Invalid

Repdocuer is incorrect because the Next page for SQL query is fetched on the 
last record read.
Following test succeed on current master:

{code:java}
public class KillQuerySelfTest extends GridCommonAbstractTest {
    /** Page size. */
    public static final int PAGE_SZ = 10;

    /** Tests that query cursor don't fetch records from server after query was 
canceled. */
    @Test
    public void testCancelSQLQuery() throws Exception {
        try (IgniteEx srv = startGrid(0); IgniteEx cli = startClientGrid(1)) {
            IgniteCache<Object, Object> cache = cli.getOrCreateCache(new 
CacheConfiguration<>(DEFAULT_CACHE_NAME)
                .setIndexedTypes(Integer.class, Integer.class));

            for (int i = 0; i < PAGE_SZ * PAGE_SZ; i++)
                cache.put(i, i);

            String qryStr = "SELECT * FROM \"default\".Integer";

            SqlFieldsQuery qry = new 
SqlFieldsQuery(qryStr).setPageSize(PAGE_SZ);
            Iterator<List<?>> iter = queryProcessor(cli).querySqlFields(qry, 
true).iterator();

            assertNotNull(iter.next());

            List<List<?>> sqlQries = SqlViewExporterSpiTest.execute(cli,
                "SELECT QUERY_ID, SQL FROM SYS.SQL_QUERIES ORDER BY QUERY_ID");
            assertEquals(2, sqlQries.size());

            String qryId = (String)sqlQries.get(0).get(0);
            assertEquals(qryStr, sqlQries.get(0).get(1));

            SqlViewExporterSpiTest.execute(cli, "KILL QUERY '" + qryId + "'");

            for (int i = 0; i < PAGE_SZ - 2; i++)
                assertNotNull(iter.next());

            GridTestUtils.assertThrowsWithCause(iter::next, 
CacheException.class);
        }
    }
}

{code}

> KILL QUERY command doesn't close already fetched cursor
> -------------------------------------------------------
>
>                 Key: IGNITE-12778
>                 URL: https://issues.apache.org/jira/browse/IGNITE-12778
>             Project: Ignite
>          Issue Type: Bug
>          Components: sql
>    Affects Versions: 2.8
>            Reporter: Nikolay Izhikov
>            Assignee: Nikolay Izhikov
>            Priority: Major
>             Fix For: 2.9
>
>
> KILL QUERY doesn't close already fetched cursor.
> Reproducer:
> {code:java}
>     public void testCancelSQLQuery() throws Exception {
>         startGrids(NODES_CNT);
>         IgniteEx client = startClientGrid("client");
>         client.cluster().state(ACTIVE);
>         IgniteCache<Object, Object> cache = client.getOrCreateCache(
>             new 
> CacheConfiguration<>(DEFAULT_CACHE_NAME).setIndexedTypes(Integer.class, 
> Integer.class));
>         for (int i = 0; i < PAGE_SZ * PAGE_SZ; i++)
>             cache.put(i, i);
>         SqlFieldsQuery qry = new SqlFieldsQuery("SELECT _KEY, _VAL FROM 
> INTEGER").setSchema("default").setPageSize(10);
>         Iterator<List<?>> iter = queryProcessor(client).querySqlFields(qry, 
> true).iterator();
>         assertNotNull(iter.next());
>         List<List<?>> sqlQries = SqlViewExporterSpiTest.execute(client,
>             "SELECT * FROM SYS.SQL_QUERIES ORDER BY START_TIME");
>         assertEquals(2, sqlQries.size());
>         String qryId = (String)sqlQries.get(0).get(0);
>         assertEquals("SELECT _KEY, _VAL FROM INTEGER", 
> sqlQries.get(0).get(1));
>         SqlViewExporterSpiTest.execute(client, "KILL QUERY '" + qryId + "'");
>         while(iter.hasNext())
>             assertNotNull(iter.next());
>         fail("You shouldn't be here!"); //Fails here for now. but should 
> fails on iter.next call.
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to