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

geniuspig pushed a commit to branch tag_manage
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit f240f7bd2661e8ae55654fb84364b63f02d04d11
Author: zhutianci <[email protected]>
AuthorDate: Sun Apr 12 11:29:15 2020 +0800

    update antr4 for tags and attributes
---
 .../org/apache/iotdb/db/qp/strategy/SqlBase.g4     | 24 +++++++++++++--
 .../qp/logical/sys/CreateTimeSeriesOperator.java   | 28 ++++++++++++++---
 .../iotdb/db/qp/strategy/LogicalGenerator.java     | 36 +++++++++++++++++-----
 .../iotdb/db/qp/strategy/PhysicalGenerator.java    |  2 +-
 4 files changed, 75 insertions(+), 15 deletions(-)

diff --git a/server/src/main/antlr4/org/apache/iotdb/db/qp/strategy/SqlBase.g4 
b/server/src/main/antlr4/org/apache/iotdb/db/qp/strategy/SqlBase.g4
index 73120bb..9c6c4a1 100644
--- a/server/src/main/antlr4/org/apache/iotdb/db/qp/strategy/SqlBase.g4
+++ b/server/src/main/antlr4/org/apache/iotdb/db/qp/strategy/SqlBase.g4
@@ -24,7 +24,7 @@ singleStatement
     ;
 
 statement
-    : CREATE TIMESERIES fullPath WITH attributeClauses #createTimeseries
+    : CREATE TIMESERIES fullPath LR_BRACKET ID RR_BRACKET WITH 
attributeClauses #createTimeseries
     | DELETE TIMESERIES prefixPath (COMMA prefixPath)* #deleteTimeseries
     | INSERT INTO fullPath insertColumnSpec VALUES insertValuesSpec 
#insertStatement
     | UPDATE prefixPath setClause whereClause? #updateStatement
@@ -117,7 +117,18 @@ lastClause
     ;
 
 attributeClauses
-    : DATATYPE OPERATOR_EQ dataType COMMA ENCODING OPERATOR_EQ encoding (COMMA 
(COMPRESSOR | COMPRESSION) OPERATOR_EQ compressor=propertyValue)? (COMMA 
property)*
+    : DATATYPE OPERATOR_EQ dataType COMMA ENCODING OPERATOR_EQ encoding
+    (COMMA (COMPRESSOR | COMPRESSION) OPERATOR_EQ compressor=propertyValue)?
+    attributeClause
+    tagClause
+    ;
+
+attributeClause
+    : (COMMA ATTRIBUTES LR_BRACKET property (COMMA property)* RR_BRACKET)?
+    ;
+
+tagClause
+    : (TAGS LR_BRACKET property (COMMA property)* RR_BRACKET)?
     ;
 
 setClause
@@ -272,6 +283,7 @@ propertyValue
     : ID
     | MINUS? INT
     | MINUS? realLiteral
+    | STRING_LITERAL
     ;
 
 propertyLabelPair
@@ -745,6 +757,14 @@ COMPRESSION
 TIME
     : T I M E
     ;
+
+ATTRIBUTES
+    : A T T R I B U T E S
+    ;
+
+TAGS
+    : T A G S
+    ;
 //============================
 // End of the keywords list
 //============================
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CreateTimeSeriesOperator.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CreateTimeSeriesOperator.java
index de3db4b..4ae4614 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CreateTimeSeriesOperator.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/logical/sys/CreateTimeSeriesOperator.java
@@ -29,10 +29,12 @@ import org.apache.iotdb.tsfile.read.common.Path;
 public class CreateTimeSeriesOperator extends RootOperator {
 
   private Path path;
+  private String alias;
   private TSDataType dataType;
   private TSEncoding encoding;
   private CompressionType compressor;
-  private Map<String, String> props;
+  private Map<String, String> attributes;
+  private Map<String, String> tags;
   
   public CreateTimeSeriesOperator(int tokenIntType) {
     super(tokenIntType);
@@ -71,12 +73,28 @@ public class CreateTimeSeriesOperator extends RootOperator {
     return compressor;
   }
 
-  public Map<String, String> getProps() {
-    return props;
+  public Map<String, String> getAttributes() {
+    return attributes;
   }
 
-  public void setProps(Map<String, String> props) {
-    this.props = props;
+  public void setAttributes(Map<String, String> attributes) {
+    this.attributes = attributes;
+  }
+
+  public String getAlias() {
+    return alias;
+  }
+
+  public void setAlias(String alias) {
+    this.alias = alias;
+  }
+
+  public Map<String, String> getTags() {
+    return tags;
+  }
+
+  public void setTags(Map<String, String> tags) {
+    this.tags = tags;
   }
 
 }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/strategy/LogicalGenerator.java 
b/server/src/main/java/org/apache/iotdb/db/qp/strategy/LogicalGenerator.java
index 4d5257d..ad07198 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/strategy/LogicalGenerator.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/strategy/LogicalGenerator.java
@@ -64,6 +64,7 @@ import 
org.apache.iotdb.db.qp.logical.sys.ShowTimeSeriesOperator;
 import 
org.apache.iotdb.db.qp.strategy.SqlBaseParser.AlignByDeviceClauseContext;
 import org.apache.iotdb.db.qp.strategy.SqlBaseParser.AlterUserContext;
 import org.apache.iotdb.db.qp.strategy.SqlBaseParser.AndExpressionContext;
+import org.apache.iotdb.db.qp.strategy.SqlBaseParser.AttributeClauseContext;
 import org.apache.iotdb.db.qp.strategy.SqlBaseParser.AttributeClausesContext;
 import org.apache.iotdb.db.qp.strategy.SqlBaseParser.AutoCreateSchemaContext;
 import org.apache.iotdb.db.qp.strategy.SqlBaseParser.ConstantContext;
@@ -136,6 +137,7 @@ import 
org.apache.iotdb.db.qp.strategy.SqlBaseParser.ShowVersionContext;
 import org.apache.iotdb.db.qp.strategy.SqlBaseParser.SlimitClauseContext;
 import org.apache.iotdb.db.qp.strategy.SqlBaseParser.SoffsetClauseContext;
 import org.apache.iotdb.db.qp.strategy.SqlBaseParser.SuffixPathContext;
+import org.apache.iotdb.db.qp.strategy.SqlBaseParser.TagClauseContext;
 import org.apache.iotdb.db.qp.strategy.SqlBaseParser.TimeIntervalContext;
 import org.apache.iotdb.db.qp.strategy.SqlBaseParser.TypeClauseContext;
 import org.apache.iotdb.db.qp.strategy.SqlBaseParser.UnsetTTLStatementContext;
@@ -300,6 +302,7 @@ public class LogicalGenerator extends SqlBaseBaseListener {
     createTimeSeriesOperator = new 
CreateTimeSeriesOperator(SQLConstant.TOK_METADATA_CREATE);
     operatorType = SQLConstant.TOK_METADATA_CREATE;
     createTimeSeriesOperator.setPath(parseFullPath(ctx.fullPath()));
+    createTimeSeriesOperator.setAlias(ctx.ID().getText());
   }
 
   @Override
@@ -896,23 +899,42 @@ public class LogicalGenerator extends SqlBaseBaseListener 
{
     createTimeSeriesOperator.setDataType(TSDataType.valueOf(dataType));
     createTimeSeriesOperator.setEncoding(TSEncoding.valueOf(encoding));
     CompressionType compressor;
-    List<PropertyContext> properties = ctx.property();
-    Map<String, String> props = new HashMap<>(properties.size(), 1);
     if (ctx.propertyValue() != null) {
       compressor = 
CompressionType.valueOf(ctx.propertyValue().getText().toUpperCase());
     } else {
       compressor = TSFileDescriptor.getInstance().getConfig().getCompressor();
     }
     checkMetadataArgs(dataType, encoding, compressor.toString().toUpperCase());
+    createTimeSeriesOperator.setCompressor(compressor);
+    initializedOperator = createTimeSeriesOperator;
+  }
+
+  @Override
+  public void enterAttributeClause(AttributeClauseContext ctx) {
+    super.enterAttributeClause(ctx);
+    List<PropertyContext> attributesList = ctx.property();
+    Map<String, String> attributes = new HashMap<>(attributesList.size(), 1);
     if (ctx.property(0) != null) {
-      for (PropertyContext property : properties) {
-        props.put(property.ID().getText().toLowerCase(),
+      for (PropertyContext property : attributesList) {
+        attributes.put(property.ID().getText().toLowerCase(),
             property.propertyValue().getText().toLowerCase());
       }
     }
-    createTimeSeriesOperator.setCompressor(compressor);
-    createTimeSeriesOperator.setProps(props);
-    initializedOperator = createTimeSeriesOperator;
+    createTimeSeriesOperator.setAttributes(attributes);
+  }
+
+  @Override
+  public void enterTagClause(TagClauseContext ctx) {
+    super.enterTagClause(ctx);
+    List<PropertyContext> tagsList = ctx.property();
+    Map<String, String> tags = new HashMap<>(tagsList.size(), 1);
+    if (ctx.property(0) != null) {
+      for (PropertyContext property : tagsList) {
+        tags.put(property.ID().getText().toLowerCase(),
+            property.propertyValue().getText().toLowerCase());
+      }
+    }
+    createTimeSeriesOperator.setTags(tags);
   }
 
   @Override
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/strategy/PhysicalGenerator.java 
b/server/src/main/java/org/apache/iotdb/db/qp/strategy/PhysicalGenerator.java
index 378af12..04b1fc3 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/strategy/PhysicalGenerator.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/strategy/PhysicalGenerator.java
@@ -77,7 +77,7 @@ public class PhysicalGenerator {
       case CREATE_TIMESERIES:
         CreateTimeSeriesOperator addPath = (CreateTimeSeriesOperator) operator;
         return new CreateTimeSeriesPlan(addPath.getPath(), 
addPath.getDataType(),
-            addPath.getEncoding(), addPath.getCompressor(), 
addPath.getProps());
+            addPath.getEncoding(), addPath.getCompressor(), 
addPath.getAttributes());
       case DELETE_TIMESERIES:
         DeleteTimeSeriesOperator deletePath = (DeleteTimeSeriesOperator) 
operator;
         return new DeleteTimeSeriesPlan(deletePath.getDeletePathList());

Reply via email to