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 <[email protected]>
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);