You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by am...@apache.org on 2022/10/17 14:47:48 UTC

[ignite] branch master updated: IGNITE-17870 SQL. Do not yield separate query result for comments (#10303)

This is an automated email from the ASF dual-hosted git repository.

amashenkov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 5c1fbd8d652 IGNITE-17870 SQL. Do not yield separate query result for comments (#10303)
5c1fbd8d652 is described below

commit 5c1fbd8d6522ed1df83bbcfb1d4dc02ffa91f7ed
Author: Andrew V. Mashenkov <AM...@users.noreply.github.com>
AuthorDate: Mon Oct 17 17:47:40 2022 +0300

    IGNITE-17870 SQL. Do not yield separate query result for comments (#10303)
---
 .../sql/SqlParserMultiStatementSelfTest.java       | 38 ++++++++++++++++++++++
 .../processors/query/h2/IgniteH2Indexing.java      |  3 ++
 .../query/MultipleStatementsSqlQuerySelfTest.java  |  8 +++--
 3 files changed, 47 insertions(+), 2 deletions(-)

diff --git a/modules/core/src/test/java/org/apache/ignite/internal/sql/SqlParserMultiStatementSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/sql/SqlParserMultiStatementSelfTest.java
index b511cdc188d..840a880300e 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/sql/SqlParserMultiStatementSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/sql/SqlParserMultiStatementSelfTest.java
@@ -63,6 +63,44 @@ public class SqlParserMultiStatementSelfTest extends SqlParserAbstractSelfTest {
      */
     @Test
     public void testComments() {
+        String sql = " -- Creating new index \n" +
+            " CREATE INDEX IDX1 on TABLE1(id); \n" +
+            " -- Creating one more index \n" +
+            " CREATE INDEX IDX2 on TABLE2(id); \n" +
+            " -- All done.";
+
+        SqlParser parser = new SqlParser("schema", sql);
+
+        // Haven't parse anything yet.
+        assertEquals(null, parser.lastCommandSql());
+        assertEquals(sql, parser.remainingSql());
+
+        SqlCommand cmd = parser.nextCommand();
+
+        assertTrue(cmd instanceof SqlCreateIndexCommand);
+        assertEquals("CREATE INDEX IDX1 on TABLE1(id)", parser.lastCommandSql());
+        assertEquals(" \n -- Creating one more index \n" +
+            " CREATE INDEX IDX2 on TABLE2(id); \n" +
+            " -- All done.", parser.remainingSql());
+
+        cmd = parser.nextCommand();
+
+        assertTrue(cmd instanceof SqlCreateIndexCommand);
+        assertEquals("CREATE INDEX IDX2 on TABLE2(id)", parser.lastCommandSql());
+        assertEquals(" \n -- All done.", parser.remainingSql());
+
+        cmd = parser.nextCommand();
+
+        assertNull(cmd);
+        assertEquals(null, parser.lastCommandSql());
+        assertEquals(null, parser.remainingSql());
+    }
+
+    /**
+     * Check that comments between statements work.
+     */
+    @Test
+    public void testEmptyTransaction() {
         String beginSql = "BEGIN  ;" + "  \n";
         String noteSql = "  -- Let's start an empty transaction; $1M idea!\n";
         String commitSql = "COMMIT;" + ";;";
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
index 2463cba9677..dbf55a4aef2 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
@@ -1032,6 +1032,9 @@ public class IgniteH2Indexing implements GridQueryIndexing {
 
                         assert cmd != null;
 
+                        if (cmd.noOp() && remainingQry == null && newQryDesc.sql().isEmpty())
+                            continue;
+
                         FieldsQueryCursor<List<?>> cmdRes = executeCommand(
                             newQryDesc,
                             newQryParams,
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/MultipleStatementsSqlQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/MultipleStatementsSqlQuerySelfTest.java
index b3006120398..90381aa01a7 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/MultipleStatementsSqlQuerySelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/MultipleStatementsSqlQuerySelfTest.java
@@ -54,11 +54,15 @@ public class MultipleStatementsSqlQuerySelfTest extends AbstractIndexingCommonTe
         GridQueryProcessor qryProc = node.context().query();
 
         SqlFieldsQuery qry = new SqlFieldsQuery(
+            "-- Creating table \n" +
             "create table test(ID int primary key, NAME varchar(20)); " +
+            " -- Adding data \n" +
                 "insert into test (ID, NAME) values (1, 'name_1');" +
                 "insert into test (ID, NAME) values (2, 'name_2'), (3, 'name_3');" +
-                "select * from test;")
-            .setSchema("PUBLIC");
+            " -- Query data \n" +
+            "select * from test;" +
+            " -- All done."
+        ).setSchema("PUBLIC");
 
         List<FieldsQueryCursor<List<?>>> res = qryProc.querySqlFields(qry, true, false);