From 2b56ae9284a7c7a7b17cf6ae1b8a10fbbe22a924 Mon Sep 17 00:00:00 2001 From: wu2393 <2393585835@qq.com> Date: Wed, 26 Oct 2022 22:33:35 +0800 Subject: [PATCH 01/10] 2022102622 --- .../org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 | 3 +-- .../iotdb/db/mpp/plan/parser/ASTVisitor.java | 14 +++++++++----- .../apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java | 7 +------ 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 index 13371dcdf36d..6e0a158fb9b0 100644 --- a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 +++ b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 @@ -187,8 +187,7 @@ aliasClause ; alias - : constant - | identifier + : identifier ; // Delete Storage Group diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java index d59943658074..6c5b2142a0a3 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java @@ -1801,11 +1801,15 @@ private String parseIdentifier(String src) { /** function for parsing Alias. */ private String parseAlias(IoTDBSqlParser.AliasContext ctx) { - String alias; - if (ctx.constant() != null) { - alias = parseStringLiteral(ctx.constant().getText()); - } else { - alias = parseIdentifier(ctx.identifier().getText()); + String alias = ctx.getText(); + if (alias.startsWith(TsFileConstant.BACK_QUOTE_STRING) + && alias.endsWith(TsFileConstant.BACK_QUOTE_STRING)) { + String unWrapped = alias.substring(1, alias.length() - 1); + if (PathUtils.isRealNumber(unWrapped) + || !TsFileConstant.IDENTIFIER_PATTERN.matcher(unWrapped).matches()) { + return alias; + } + return unWrapped; } return alias; } diff --git a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java index d6fa5100e16e..01d80659a1ba 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java @@ -2713,12 +2713,7 @@ private void checkIdentifier(String src) { /** function for parsing Alias. */ private String parseAlias(IoTDBSqlParser.AliasContext ctx) { - String alias; - if (ctx.constant() != null) { - alias = parseStringLiteral(ctx.constant().getText()); - } else { - alias = parseIdentifier(ctx.identifier().getText()); - } + String alias = parseIdentifier(ctx.identifier().getText()); return alias; } From f17c08556087cf9c1ecb6a34cfd6202126490e98 Mon Sep 17 00:00:00 2001 From: wu2393 <2393585835@qq.com> Date: Thu, 27 Oct 2022 08:30:42 +0800 Subject: [PATCH 02/10] LogicalPlanerTest --- .../org/apache/iotdb/db/mpp/plan/plan/LogicalPlannerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/LogicalPlannerTest.java b/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/LogicalPlannerTest.java index fe2b9500a0d6..87780be01939 100644 --- a/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/LogicalPlannerTest.java +++ b/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/LogicalPlannerTest.java @@ -446,7 +446,7 @@ public void testAlterTimeseriesPlan() { } sql = - "ALTER timeseries root.turbine.d1.s1 UPSERT ALIAS='newAlias' " + "ALTER timeseries root.turbine.d1.s1 UPSERT ALIAS=`newAlias` " + "TAGS('tag2'='newV2', 'tag3'='v3') ATTRIBUTES('attr3'='v3', 'attr4'='v4')"; try { AlterTimeSeriesNode alterTimeSeriesNode = (AlterTimeSeriesNode) parseSQLToPlanNode(sql); From 9a5c4753bb897143feefd324f48c059db303f3ba Mon Sep 17 00:00:00 2001 From: wu2393 <2393585835@qq.com> Date: Thu, 27 Oct 2022 16:00:09 +0800 Subject: [PATCH 03/10] 20221027 --- .../apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 | 3 +- .../iotdb/db/mpp/plan/parser/ASTVisitor.java | 28 +++++++++++++------ .../iotdb/db/qp/sql/IoTDBSqlVisitor.java | 7 ++++- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 index 6e0a158fb9b0..13371dcdf36d 100644 --- a/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 +++ b/antlr/src/main/antlr4/org/apache/iotdb/db/qp/sql/IoTDBSqlParser.g4 @@ -187,7 +187,8 @@ aliasClause ; alias - : identifier + : constant + | identifier ; // Delete Storage Group diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java index 6c5b2142a0a3..580cfd6072fa 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java @@ -1801,15 +1801,27 @@ private String parseIdentifier(String src) { /** function for parsing Alias. */ private String parseAlias(IoTDBSqlParser.AliasContext ctx) { - String alias = ctx.getText(); - if (alias.startsWith(TsFileConstant.BACK_QUOTE_STRING) - && alias.endsWith(TsFileConstant.BACK_QUOTE_STRING)) { - String unWrapped = alias.substring(1, alias.length() - 1); - if (PathUtils.isRealNumber(unWrapped) - || !TsFileConstant.IDENTIFIER_PATTERN.matcher(unWrapped).matches()) { - return alias; + String alias; + if (ctx.constant() != null) { + alias = parseStringLiteral(ctx.constant().getText()); + if (PathUtils.isRealNumber(alias) + || !TsFileConstant.IDENTIFIER_PATTERN.matcher(alias).matches()) { + throw new SQLParserException("Not support for this alias, Please enclose in back quotes."); + } + } else { + alias = ctx.identifier().getText(); + if (alias.startsWith(TsFileConstant.BACK_QUOTE_STRING) + && alias.endsWith(TsFileConstant.BACK_QUOTE_STRING)) { + String unWrapped = + alias + .substring(1, alias.length() - 1) + .replace(TsFileConstant.DOUBLE_BACK_QUOTE_STRING, TsFileConstant.BACK_QUOTE_STRING); + ; + if (!PathUtils.isRealNumber(unWrapped) + && TsFileConstant.IDENTIFIER_PATTERN.matcher(unWrapped).matches()) { + alias = unWrapped; + } } - return unWrapped; } return alias; } diff --git a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java index 01d80659a1ba..d6fa5100e16e 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java @@ -2713,7 +2713,12 @@ private void checkIdentifier(String src) { /** function for parsing Alias. */ private String parseAlias(IoTDBSqlParser.AliasContext ctx) { - String alias = parseIdentifier(ctx.identifier().getText()); + String alias; + if (ctx.constant() != null) { + alias = parseStringLiteral(ctx.constant().getText()); + } else { + alias = parseIdentifier(ctx.identifier().getText()); + } return alias; } From 96bab5f1f13eb5b6dbeaa46168849510b53eaa6c Mon Sep 17 00:00:00 2001 From: wu2393 <2393585835@qq.com> Date: Thu, 27 Oct 2022 16:22:38 +0800 Subject: [PATCH 04/10] IT Test --- .../org/apache/iotdb/db/mpp/plan/plan/LogicalPlannerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/LogicalPlannerTest.java b/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/LogicalPlannerTest.java index 87780be01939..fe2b9500a0d6 100644 --- a/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/LogicalPlannerTest.java +++ b/server/src/test/java/org/apache/iotdb/db/mpp/plan/plan/LogicalPlannerTest.java @@ -446,7 +446,7 @@ public void testAlterTimeseriesPlan() { } sql = - "ALTER timeseries root.turbine.d1.s1 UPSERT ALIAS=`newAlias` " + "ALTER timeseries root.turbine.d1.s1 UPSERT ALIAS='newAlias' " + "TAGS('tag2'='newV2', 'tag3'='v3') ATTRIBUTES('attr3'='v3', 'attr4'='v4')"; try { AlterTimeSeriesNode alterTimeSeriesNode = (AlterTimeSeriesNode) parseSQLToPlanNode(sql); From 3687867873b7a9e780278bff87576288f2cf37e5 Mon Sep 17 00:00:00 2001 From: wu2393 <2393585835@qq.com> Date: Fri, 28 Oct 2022 10:08:49 +0800 Subject: [PATCH 05/10] 20221028 --- .../IoTDBSyntaxConventionStringLiteralIT.java | 4 +-- .../iotdb/db/mpp/plan/parser/ASTVisitor.java | 34 +++++++++---------- .../iotdb/db/qp/sql/IoTDBSqlVisitor.java | 21 ++++++++++-- 3 files changed, 37 insertions(+), 22 deletions(-) diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSyntaxConventionStringLiteralIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSyntaxConventionStringLiteralIT.java index 0104ad8d4e0f..754b2b56e398 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSyntaxConventionStringLiteralIT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSyntaxConventionStringLiteralIT.java @@ -538,11 +538,11 @@ public void testAliasInResultColumn() { @Test public void testAliasInAlterClause() { String[] alias = { - "b", "test", "`test.1`", "`1``1`", "'test'", "\"test\"", "\"\\\\test\"", + "b", "test", "`test.1`", "`1``1`", "'test'", "\"test\"", "`\\\\test`", }; String[] res = { - "b", "test", "test.1", "1`1", "test", "test", "\\\\test", + "b", "test", "`test.1`", "`1``1`", "test", "test", "`\\\\test`", }; try (Connection connection = EnvFactory.getEnv().getConnection(); Statement statement = connection.createStatement()) { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java index 580cfd6072fa..c436e23332ea 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java @@ -526,7 +526,7 @@ private void parseAlterClause( public void parseAliasClause( IoTDBSqlParser.AliasClauseContext ctx, AlterTimeSeriesStatement alterTimeSeriesStatement) { if (alterTimeSeriesStatement != null && ctx.ALIAS() != null) { - alterTimeSeriesStatement.setAlias(parseAlias(ctx.alias())); + alterTimeSeriesStatement.setAlias(parseAliasNode(ctx.alias())); } } @@ -1799,33 +1799,33 @@ private String parseIdentifier(String src) { return src; } - /** function for parsing Alias. */ + // alias + + /** function for parsing Alias of ResultColumn . */ private String parseAlias(IoTDBSqlParser.AliasContext ctx) { + String alias; + if (ctx.constant() != null) { + alias = parseStringLiteral(ctx.constant().getText()); + } else { + alias = parseIdentifier(ctx.identifier().getText()); + } + return alias; + } + + /** function for parsing AliasNode. */ + private String parseAliasNode(IoTDBSqlParser.AliasContext ctx) { String alias; if (ctx.constant() != null) { alias = parseStringLiteral(ctx.constant().getText()); if (PathUtils.isRealNumber(alias) - || !TsFileConstant.IDENTIFIER_PATTERN.matcher(alias).matches()) { + || !TsFileConstant.IDENTIFIER_PATTERN.matcher(alias).matches()) { throw new SQLParserException("Not support for this alias, Please enclose in back quotes."); } } else { - alias = ctx.identifier().getText(); - if (alias.startsWith(TsFileConstant.BACK_QUOTE_STRING) - && alias.endsWith(TsFileConstant.BACK_QUOTE_STRING)) { - String unWrapped = - alias - .substring(1, alias.length() - 1) - .replace(TsFileConstant.DOUBLE_BACK_QUOTE_STRING, TsFileConstant.BACK_QUOTE_STRING); - ; - if (!PathUtils.isRealNumber(unWrapped) - && TsFileConstant.IDENTIFIER_PATTERN.matcher(unWrapped).matches()) { - alias = unWrapped; - } - } + alias = parseNodeString(ctx.identifier().getText()); } return alias; } - /** Data Control Language (DCL) */ // Create User diff --git a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java index d6fa5100e16e..8f654bdf7391 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java @@ -862,7 +862,7 @@ private void parseAlterClause( public void parseAliasClause( IoTDBSqlParser.AliasClauseContext ctx, AlterTimeSeriesOperator alterTimeSeriesOperator) { if (alterTimeSeriesOperator != null && ctx.ALIAS() != null) { - alterTimeSeriesOperator.setAlias(parseAlias(ctx.alias())); + alterTimeSeriesOperator.setAlias(parseAliasNode(ctx.alias())); } } @@ -2711,13 +2711,28 @@ private void checkIdentifier(String src) { // alias - /** function for parsing Alias. */ + /** function for parsing Alias of ResultColumn . */ private String parseAlias(IoTDBSqlParser.AliasContext ctx) { + String alias; + if (ctx.constant() != null) { + alias = parseStringLiteral(ctx.constant().getText()); + } else { + alias = parseIdentifier(ctx.identifier().getText()); + } + return alias; + } + + /** function for parsing AliasNode. */ + private String parseAliasNode(IoTDBSqlParser.AliasContext ctx) { String alias; if (ctx.constant() != null) { alias = parseStringLiteral(ctx.constant().getText()); + if (PathUtils.isRealNumber(alias) + || !TsFileConstant.IDENTIFIER_PATTERN.matcher(alias).matches()) { + throw new SQLParserException("Not support for this alias, Please enclose in back quotes."); + } } else { - alias = parseIdentifier(ctx.identifier().getText()); + alias = parseNodeString(ctx.identifier().getText()); } return alias; } From fc26b1b2329bbc48a0715fab4cc73adab3bf9957 Mon Sep 17 00:00:00 2001 From: wu2393 <2393585835@qq.com> Date: Fri, 28 Oct 2022 10:37:29 +0800 Subject: [PATCH 06/10] 20221028 --- .../apache/iotdb/db/mpp/plan/parser/ASTVisitor.java | 2 +- .../org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java index c436e23332ea..45d751bed760 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java @@ -1818,7 +1818,7 @@ private String parseAliasNode(IoTDBSqlParser.AliasContext ctx) { if (ctx.constant() != null) { alias = parseStringLiteral(ctx.constant().getText()); if (PathUtils.isRealNumber(alias) - || !TsFileConstant.IDENTIFIER_PATTERN.matcher(alias).matches()) { + || !TsFileConstant.IDENTIFIER_PATTERN.matcher(alias).matches()) { throw new SQLParserException("Not support for this alias, Please enclose in back quotes."); } } else { diff --git a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java index 8f654bdf7391..b6b2597100e2 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java @@ -2714,11 +2714,11 @@ private void checkIdentifier(String src) { /** function for parsing Alias of ResultColumn . */ private String parseAlias(IoTDBSqlParser.AliasContext ctx) { String alias; - if (ctx.constant() != null) { - alias = parseStringLiteral(ctx.constant().getText()); - } else { - alias = parseIdentifier(ctx.identifier().getText()); - } + if (ctx.constant() != null) { + alias = parseStringLiteral(ctx.constant().getText()); + } else { + alias = parseIdentifier(ctx.identifier().getText()); + } return alias; } @@ -2728,7 +2728,7 @@ private String parseAliasNode(IoTDBSqlParser.AliasContext ctx) { if (ctx.constant() != null) { alias = parseStringLiteral(ctx.constant().getText()); if (PathUtils.isRealNumber(alias) - || !TsFileConstant.IDENTIFIER_PATTERN.matcher(alias).matches()) { + || !TsFileConstant.IDENTIFIER_PATTERN.matcher(alias).matches()) { throw new SQLParserException("Not support for this alias, Please enclose in back quotes."); } } else { From dac2de1a1917195937dc831c081f7ea430ef9006 Mon Sep 17 00:00:00 2001 From: wu2393 <2393585835@qq.com> Date: Thu, 3 Nov 2022 11:30:07 +0800 Subject: [PATCH 07/10] Fix the problem that two backquotes of a node are parsed --- .../apache/iotdb/db/mpp/plan/parser/ASTVisitor.java | 12 ++++++++---- .../org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java | 11 +++++++---- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java index 45d751bed760..7557b9f9302b 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java @@ -1664,10 +1664,14 @@ private String parseNodeString(String nodeName) { } if (nodeName.startsWith(TsFileConstant.BACK_QUOTE_STRING) && nodeName.endsWith(TsFileConstant.BACK_QUOTE_STRING)) { - String unWrapped = nodeName.substring(1, nodeName.length() - 1); + String unWrapped = + nodeName + .substring(1, nodeName.length() - 1) + .replace(TsFileConstant.DOUBLE_BACK_QUOTE_STRING, TsFileConstant.BACK_QUOTE_STRING); + ; if (PathUtils.isRealNumber(unWrapped) || !TsFileConstant.IDENTIFIER_PATTERN.matcher(unWrapped).matches()) { - return nodeName; + return TsFileConstant.BACK_QUOTE_STRING + unWrapped + TsFileConstant.BACK_QUOTE_STRING; } return unWrapped; } @@ -1805,7 +1809,7 @@ private String parseIdentifier(String src) { private String parseAlias(IoTDBSqlParser.AliasContext ctx) { String alias; if (ctx.constant() != null) { - alias = parseStringLiteral(ctx.constant().getText()); + alias = parseConstant(ctx.constant()); } else { alias = parseIdentifier(ctx.identifier().getText()); } @@ -1816,7 +1820,7 @@ private String parseAlias(IoTDBSqlParser.AliasContext ctx) { private String parseAliasNode(IoTDBSqlParser.AliasContext ctx) { String alias; if (ctx.constant() != null) { - alias = parseStringLiteral(ctx.constant().getText()); + alias = parseConstant(ctx.constant()); if (PathUtils.isRealNumber(alias) || !TsFileConstant.IDENTIFIER_PATTERN.matcher(alias).matches()) { throw new SQLParserException("Not support for this alias, Please enclose in back quotes."); diff --git a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java index b6b2597100e2..957d6cfe6e87 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java @@ -2679,10 +2679,13 @@ private String parseNodeString(String nodeName) { } if (nodeName.startsWith(TsFileConstant.BACK_QUOTE_STRING) && nodeName.endsWith(TsFileConstant.BACK_QUOTE_STRING)) { - String unWrapped = nodeName.substring(1, nodeName.length() - 1); + String unWrapped = + nodeName + .substring(1, nodeName.length() - 1) + .replace(TsFileConstant.DOUBLE_BACK_QUOTE_STRING, TsFileConstant.BACK_QUOTE_STRING); if (PathUtils.isRealNumber(unWrapped) || !TsFileConstant.IDENTIFIER_PATTERN.matcher(unWrapped).matches()) { - return nodeName; + return TsFileConstant.BACK_QUOTE_STRING + unWrapped + TsFileConstant.BACK_QUOTE_STRING; } return unWrapped; } @@ -2715,7 +2718,7 @@ private void checkIdentifier(String src) { private String parseAlias(IoTDBSqlParser.AliasContext ctx) { String alias; if (ctx.constant() != null) { - alias = parseStringLiteral(ctx.constant().getText()); + alias = parseConstant(ctx.constant()); } else { alias = parseIdentifier(ctx.identifier().getText()); } @@ -2726,7 +2729,7 @@ private String parseAlias(IoTDBSqlParser.AliasContext ctx) { private String parseAliasNode(IoTDBSqlParser.AliasContext ctx) { String alias; if (ctx.constant() != null) { - alias = parseStringLiteral(ctx.constant().getText()); + alias = parseConstant(ctx.constant()); if (PathUtils.isRealNumber(alias) || !TsFileConstant.IDENTIFIER_PATTERN.matcher(alias).matches()) { throw new SQLParserException("Not support for this alias, Please enclose in back quotes."); From a748eb1605b0691e8e651e5d509e34b1d4ed20e8 Mon Sep 17 00:00:00 2001 From: wu2393 <2393585835@qq.com> Date: Thu, 3 Nov 2022 11:52:12 +0800 Subject: [PATCH 08/10] Update IT --- .../iotdb/db/it/IoTDBSyntaxConventionStringLiteralIT.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSyntaxConventionStringLiteralIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSyntaxConventionStringLiteralIT.java index 754b2b56e398..7d1efec21651 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSyntaxConventionStringLiteralIT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSyntaxConventionStringLiteralIT.java @@ -542,7 +542,7 @@ public void testAliasInAlterClause() { }; String[] res = { - "b", "test", "`test.1`", "`1``1`", "test", "test", "`\\\\test`", + "b", "test", "`test.1`", "`1`1`", "test", "test", "`\\\\test`", }; try (Connection connection = EnvFactory.getEnv().getConnection(); Statement statement = connection.createStatement()) { From 46f13bf7c4cfbea1c1546e1af1759f499837fc7d Mon Sep 17 00:00:00 2001 From: wu2393 <2393585835@qq.com> Date: Thu, 3 Nov 2022 14:07:48 +0800 Subject: [PATCH 09/10] Restore parseNodeString function --- .../iotdb/db/it/IoTDBSyntaxConventionStringLiteralIT.java | 2 +- .../org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java | 8 ++------ .../java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java | 7 ++----- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSyntaxConventionStringLiteralIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSyntaxConventionStringLiteralIT.java index 7d1efec21651..0bf87d23275d 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSyntaxConventionStringLiteralIT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSyntaxConventionStringLiteralIT.java @@ -507,7 +507,7 @@ public void testAliasInResultColumn() { }; String[] res = { - "b", "test", "test.1", "1`1", "test", "test", "\\\\test", + "b", "test", "test.1", "1``1", "test", "test", "\\\\test", }; try (Connection connection = EnvFactory.getEnv().getConnection(); Statement statement = connection.createStatement()) { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java index 7557b9f9302b..6ee20047d46b 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/parser/ASTVisitor.java @@ -1664,14 +1664,10 @@ private String parseNodeString(String nodeName) { } if (nodeName.startsWith(TsFileConstant.BACK_QUOTE_STRING) && nodeName.endsWith(TsFileConstant.BACK_QUOTE_STRING)) { - String unWrapped = - nodeName - .substring(1, nodeName.length() - 1) - .replace(TsFileConstant.DOUBLE_BACK_QUOTE_STRING, TsFileConstant.BACK_QUOTE_STRING); - ; + String unWrapped = nodeName.substring(1, nodeName.length() - 1); if (PathUtils.isRealNumber(unWrapped) || !TsFileConstant.IDENTIFIER_PATTERN.matcher(unWrapped).matches()) { - return TsFileConstant.BACK_QUOTE_STRING + unWrapped + TsFileConstant.BACK_QUOTE_STRING; + return nodeName; } return unWrapped; } diff --git a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java index 957d6cfe6e87..48b448f7841f 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java @@ -2679,13 +2679,10 @@ private String parseNodeString(String nodeName) { } if (nodeName.startsWith(TsFileConstant.BACK_QUOTE_STRING) && nodeName.endsWith(TsFileConstant.BACK_QUOTE_STRING)) { - String unWrapped = - nodeName - .substring(1, nodeName.length() - 1) - .replace(TsFileConstant.DOUBLE_BACK_QUOTE_STRING, TsFileConstant.BACK_QUOTE_STRING); + String unWrapped = nodeName.substring(1, nodeName.length() - 1); if (PathUtils.isRealNumber(unWrapped) || !TsFileConstant.IDENTIFIER_PATTERN.matcher(unWrapped).matches()) { - return TsFileConstant.BACK_QUOTE_STRING + unWrapped + TsFileConstant.BACK_QUOTE_STRING; + return nodeName; } return unWrapped; } From d7099ee7e5813913e3f4dbad9e371350cb0f6a41 Mon Sep 17 00:00:00 2001 From: wu2393 <2393585835@qq.com> Date: Thu, 3 Nov 2022 16:49:33 +0800 Subject: [PATCH 10/10] Update IT --- .../iotdb/db/it/IoTDBSyntaxConventionStringLiteralIT.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSyntaxConventionStringLiteralIT.java b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSyntaxConventionStringLiteralIT.java index 0bf87d23275d..754b2b56e398 100644 --- a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSyntaxConventionStringLiteralIT.java +++ b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBSyntaxConventionStringLiteralIT.java @@ -507,7 +507,7 @@ public void testAliasInResultColumn() { }; String[] res = { - "b", "test", "test.1", "1``1", "test", "test", "\\\\test", + "b", "test", "test.1", "1`1", "test", "test", "\\\\test", }; try (Connection connection = EnvFactory.getEnv().getConnection(); Statement statement = connection.createStatement()) { @@ -542,7 +542,7 @@ public void testAliasInAlterClause() { }; String[] res = { - "b", "test", "`test.1`", "`1`1`", "test", "test", "`\\\\test`", + "b", "test", "`test.1`", "`1``1`", "test", "test", "`\\\\test`", }; try (Connection connection = EnvFactory.getEnv().getConnection(); Statement statement = connection.createStatement()) {