This is an automated email from the ASF dual-hosted git repository.
rong pushed a commit to branch iotdb-1620
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/iotdb-1620 by this push:
new 168915e IoTDBSQLVisitor
168915e is described below
commit 168915e56375a4a744d3f0cbddd64c40a2a3faaf
Author: Steve Yurong Su <[email protected]>
AuthorDate: Wed Oct 6 16:49:54 2021 +0800
IoTDBSQLVisitor
---
.../apache/iotdb/db/qp/sql/IoTDBSqlVisitor.java | 55 ++++++++++++----------
1 file changed, 31 insertions(+), 24 deletions(-)
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 1d4fc6d..29d79c0 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
@@ -325,7 +325,7 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
new CreateTimeSeriesOperator(SQLConstant.TOK_METADATA_CREATE);
createTimeSeriesOperator.setPath(parseFullPath(ctx.fullPath()));
if (ctx.alias() != null) {
- createTimeSeriesOperator.setAlias(ctx.alias().ID().getText());
+ createTimeSeriesOperator.setAlias(parseID(ctx.alias().ID().getText()));
}
if (ctx.attributeClauses() != null) {
parseAttributeClauses(ctx.attributeClauses(), createTimeSeriesOperator);
@@ -447,7 +447,7 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
Map<String, String> props = new HashMap<>(properties.size(), 1);
if (ctx.property(0) != null) {
for (PropertyContext property : properties) {
- String k = property.ID().getText().toUpperCase();
+ String k = parseID(property.ID().getText()).toUpperCase();
String v = property.propertyValue().getText().toUpperCase();
v = IndexUtils.removeQuotation(v);
props.put(k, v);
@@ -578,7 +578,7 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
public Operator visitCreateUser(CreateUserContext ctx) {
AuthorOperator authorOperator =
new AuthorOperator(SQLConstant.TOK_AUTHOR_CREATE,
AuthorOperator.AuthorType.CREATE_USER);
- authorOperator.setUserName(ctx.ID().getText());
+ authorOperator.setUserName(parseID(ctx.ID().getText()));
authorOperator.setPassWord(removeStringQuote(ctx.password.getText()));
return authorOperator;
}
@@ -589,7 +589,7 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
new AuthorOperator(
SQLConstant.TOK_AUTHOR_UPDATE_USER,
AuthorOperator.AuthorType.UPDATE_USER);
if (ctx.ID() != null) {
- authorOperator.setUserName(ctx.ID().getText());
+ authorOperator.setUserName(parseID(ctx.ID().getText()));
} else {
authorOperator.setUserName(ctx.ROOT().getText());
}
@@ -601,7 +601,7 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
public Operator visitDropUser(DropUserContext ctx) {
AuthorOperator authorOperator =
new AuthorOperator(SQLConstant.TOK_AUTHOR_DROP,
AuthorOperator.AuthorType.DROP_USER);
- authorOperator.setUserName(ctx.ID().getText());
+ authorOperator.setUserName(parseID(ctx.ID().getText()));
return authorOperator;
}
@@ -609,7 +609,7 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
public Operator visitCreateRole(CreateRoleContext ctx) {
AuthorOperator authorOperator =
new AuthorOperator(SQLConstant.TOK_AUTHOR_CREATE,
AuthorOperator.AuthorType.CREATE_ROLE);
- authorOperator.setRoleName(ctx.ID().getText());
+ authorOperator.setRoleName(parseID(ctx.ID().getText()));
return authorOperator;
}
@@ -617,7 +617,7 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
public Operator visitDropRole(DropRoleContext ctx) {
AuthorOperator authorOperator =
new AuthorOperator(SQLConstant.TOK_AUTHOR_DROP,
AuthorOperator.AuthorType.DROP_ROLE);
- authorOperator.setRoleName(ctx.ID().getText());
+ authorOperator.setRoleName(parseID(ctx.ID().getText()));
return authorOperator;
}
@@ -625,7 +625,7 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
public Operator visitGrantUser(GrantUserContext ctx) {
AuthorOperator authorOperator =
new AuthorOperator(SQLConstant.TOK_AUTHOR_GRANT,
AuthorOperator.AuthorType.GRANT_USER);
- authorOperator.setUserName(ctx.ID().getText());
+ authorOperator.setUserName(parseID(ctx.ID().getText()));
authorOperator.setPrivilegeList(parsePrivilege(ctx.privileges()));
authorOperator.setNodeNameList(parsePrefixPath(ctx.prefixPath()));
return authorOperator;
@@ -635,7 +635,7 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
public Operator visitGrantRole(GrantRoleContext ctx) {
AuthorOperator authorOperator =
new AuthorOperator(SQLConstant.TOK_AUTHOR_GRANT,
AuthorType.GRANT_ROLE);
- authorOperator.setRoleName(ctx.ID().getText());
+ authorOperator.setRoleName(parseID(ctx.ID().getText()));
authorOperator.setPrivilegeList(parsePrivilege(ctx.privileges()));
authorOperator.setNodeNameList(parsePrefixPath(ctx.prefixPath()));
return authorOperator;
@@ -645,7 +645,7 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
public Operator visitRevokeUser(RevokeUserContext ctx) {
AuthorOperator authorOperator =
new AuthorOperator(SQLConstant.TOK_AUTHOR_GRANT,
AuthorType.REVOKE_USER);
- authorOperator.setUserName(ctx.ID().getText());
+ authorOperator.setUserName(parseID(ctx.ID().getText()));
authorOperator.setPrivilegeList(parsePrivilege(ctx.privileges()));
authorOperator.setNodeNameList(parsePrefixPath(ctx.prefixPath()));
return authorOperator;
@@ -655,7 +655,7 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
public Operator visitRevokeRole(RevokeRoleContext ctx) {
AuthorOperator authorOperator =
new AuthorOperator(SQLConstant.TOK_AUTHOR_GRANT,
AuthorType.REVOKE_ROLE);
- authorOperator.setRoleName(ctx.ID().getText());
+ authorOperator.setRoleName(parseID(ctx.ID().getText()));
authorOperator.setPrivilegeList(parsePrivilege(ctx.privileges()));
authorOperator.setNodeNameList(parsePrefixPath(ctx.prefixPath()));
return authorOperator;
@@ -740,7 +740,7 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
public Operator visitListPrivilegesRole(ListPrivilegesRoleContext ctx) {
AuthorOperator operator =
new AuthorOperator(SQLConstant.TOK_LIST,
AuthorOperator.AuthorType.LIST_ROLE_PRIVILEGE);
- operator.setRoleName((ctx.ID().getText()));
+ operator.setRoleName(parseID(ctx.ID().getText()));
operator.setNodeNameList(parsePrefixPath(ctx.prefixPath()));
return operator;
}
@@ -757,7 +757,7 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
public Operator visitListRolePrivileges(ListRolePrivilegesContext ctx) {
AuthorOperator operator =
new AuthorOperator(SQLConstant.TOK_LIST,
AuthorOperator.AuthorType.LIST_ROLE_PRIVILEGE);
- operator.setRoleName(ctx.ID().getText());
+ operator.setRoleName(parseID(ctx.ID().getText()));
return operator;
}
@@ -773,7 +773,7 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
public Operator visitListAllUserOfRole(ListAllUserOfRoleContext ctx) {
AuthorOperator operator =
new AuthorOperator(SQLConstant.TOK_LIST,
AuthorOperator.AuthorType.LIST_ROLE_USERS);
- operator.setRoleName((ctx.ID().getText()));
+ operator.setRoleName(parseID(ctx.ID().getText()));
return operator;
}
@@ -1073,7 +1073,6 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
queryOp = new LastQueryOperator(queryOp);
}
- boolean isFirstElement = true;
for (ResultColumnContext resultColumnContext : ctx.resultColumn()) {
selectComponent.addResultColumn(parseResultColumn(resultColumnContext));
// judge query type according to the first select element
@@ -1114,7 +1113,7 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
private ResultColumn parseResultColumn(ResultColumnContext
resultColumnContext) {
return new ResultColumn(
parseExpression(resultColumnContext.expression()),
- resultColumnContext.AS() == null ? null :
resultColumnContext.ID().getText());
+ resultColumnContext.AS() == null ? null :
parseID(resultColumnContext.ID().getText()));
}
private SelectIntoOperator
parseAndConstructSelectIntoOperator(SelectStatementContext ctx) {
@@ -1156,7 +1155,7 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
Matcher m = leveledPathNodePattern.matcher(intoPath.getFullPath());
while (m.find()) {
String param = m.group();
- int nodeIndex = 0;
+ int nodeIndex;
try {
nodeIndex = Integer.parseInt(param.substring(2, param.length() -
1).trim());
} catch (NumberFormatException e) {
@@ -1941,11 +1940,11 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
if (ctx.containsExpression() != null) {
operator.setContains(true);
propertyValueContext = ctx.containsExpression().propertyValue();
- operator.setKey(ctx.containsExpression().ID().getText());
+ operator.setKey(parseID(ctx.containsExpression().ID().getText()));
} else {
operator.setContains(false);
propertyValueContext = ctx.property().propertyValue();
- operator.setKey(ctx.property().ID().getText());
+ operator.setKey(parseID(ctx.property().ID().getText()));
}
String value;
if (propertyValueContext.stringLiteral() != null) {
@@ -2263,7 +2262,7 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
// drop
alterTimeSeriesOperator.setAlterType(AlterType.DROP);
for (TerminalNode dropId : ctx.ID()) {
- alterMap.put(dropId.getText(), null);
+ alterMap.put(parseID(dropId.getText()), null);
}
} else if (ctx.TAGS() != null) {
// add tag
@@ -2292,7 +2291,7 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
public void parseAliasClause(
AliasClauseContext ctx, AlterTimeSeriesOperator alterTimeSeriesOperator)
{
if (alterTimeSeriesOperator != null && ctx.ID() != null) {
- alterTimeSeriesOperator.setAlias(ctx.ID().getText());
+ alterTimeSeriesOperator.setAlias(parseID(ctx.ID().getText()));
}
}
@@ -2306,7 +2305,7 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
} else {
value = property.propertyValue().getText();
}
- alterMap.put(property.ID().getText(), value);
+ alterMap.put(parseID(property.ID().getText()), value);
}
}
}
@@ -2357,7 +2356,7 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
props = new HashMap<>(properties.size());
for (PropertyContext property : properties) {
props.put(
- property.ID().getText().toLowerCase(),
+ parseID(property.ID().getText()).toLowerCase(),
property.propertyValue().getText().toLowerCase());
}
}
@@ -2400,7 +2399,7 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
} else {
value = property.propertyValue().getText();
}
- tags.put(property.ID().getText(), value);
+ tags.put(parseID(property.ID().getText()), value);
}
}
return tags;
@@ -2483,4 +2482,12 @@ public class IoTDBSqlVisitor extends
SqlBaseBaseVisitor<Operator> {
parseLoadFiles(operator, ctx.loadFilesClause());
}
}
+
+ private String parseID(String rawID) {
+ char first = rawID.charAt(0);
+ char last = rawID.charAt(rawID.length() - 1);
+ return first == '`' && last == '`' || first == '\"' && last == '\"'
+ ? rawID.substring(1, rawID.length() - 1)
+ : rawID;
+ }
}