You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ge...@apache.org on 2020/04/12 03:44:08 UTC

[incubator-iotdb] branch tag_manage updated (107e7f7 -> a5c38d6)

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

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


    from 107e7f7  [IOTDB-585] fix recover version bug (#1024)
     new f240f7b  update antr4 for tags and attributes
     new a5c38d6  update physical plan.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/iotdb/db/qp/strategy/SqlBase.g4     | 24 +++++++++++-
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  |  2 +-
 .../qp/logical/sys/CreateTimeSeriesOperator.java   | 28 +++++++++++---
 .../db/qp/physical/sys/CreateTimeSeriesPlan.java   | 36 ++++++++++++++----
 .../iotdb/db/qp/strategy/LogicalGenerator.java     | 44 ++++++++++++++++++----
 .../iotdb/db/qp/strategy/PhysicalGenerator.java    |  3 +-
 6 files changed, 112 insertions(+), 25 deletions(-)


[incubator-iotdb] 02/02: update physical plan.

Posted by ge...@apache.org.
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 a5c38d687c00c2a9cf9b5e9fceee07a5a7076f39
Author: zhutianci <zh...@gmail.com>
AuthorDate: Sun Apr 12 11:43:50 2020 +0800

    update physical plan.
---
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  |  2 +-
 .../db/qp/physical/sys/CreateTimeSeriesPlan.java   | 36 +++++++++++++++++-----
 .../iotdb/db/qp/strategy/LogicalGenerator.java     | 14 ++++++---
 .../iotdb/db/qp/strategy/PhysicalGenerator.java    |  3 +-
 4 files changed, 41 insertions(+), 14 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
index f2d45e2..efec48a 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
@@ -885,7 +885,7 @@ public class PlanExecutor implements IPlanExecutor {
     TSDataType dataType = createTimeSeriesPlan.getDataType();
     CompressionType compressor = createTimeSeriesPlan.getCompressor();
     TSEncoding encoding = createTimeSeriesPlan.getEncoding();
-    Map<String, String> props = createTimeSeriesPlan.getProps();
+    Map<String, String> props = createTimeSeriesPlan.getAttributes();
     try {
       mManager.createTimeseries(path.getFullPath(), dataType, encoding, compressor, props);
     } catch (MetadataException e) {
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTimeSeriesPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTimeSeriesPlan.java
index 7e35ff9..2980aed 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTimeSeriesPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/sys/CreateTimeSeriesPlan.java
@@ -38,7 +38,9 @@ public class CreateTimeSeriesPlan extends PhysicalPlan {
   private TSDataType dataType;
   private TSEncoding encoding;
   private CompressionType compressor;
-  private Map<String, String> props;
+  private String alias;
+  private Map<String, String> attributes;
+  private Map<String, String> tags;
 
   public CreateTimeSeriesPlan() {
     super(false, Operator.OperatorType.CREATE_TIMESERIES);
@@ -46,13 +48,15 @@ public class CreateTimeSeriesPlan extends PhysicalPlan {
   }
 
   public CreateTimeSeriesPlan(Path path, TSDataType dataType, TSEncoding encoding,
-      CompressionType compressor, Map<String, String> props) {
+      CompressionType compressor, Map<String, String> attributes, Map<String, String> tags, String alias) {
     super(false, Operator.OperatorType.CREATE_TIMESERIES);
     this.path = path;
     this.dataType = dataType;
     this.encoding = encoding;
     this.compressor = compressor;
-    this.props = props;
+    this.attributes = attributes;
+    this.tags = tags;
+    this.alias = alias;
     canbeSplit = false;
   }
   
@@ -88,14 +92,30 @@ public class CreateTimeSeriesPlan extends PhysicalPlan {
     this.encoding = encoding;
   }
   
-  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;
+  }
+
   @Override
   public String toString() {
     return String.format("seriesPath: %s, resultDataType: %s, encoding: %s, compression: %s", path,
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 ad07198..caa9785 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
@@ -913,11 +913,14 @@ public class LogicalGenerator extends SqlBaseBaseListener {
   public void enterAttributeClause(AttributeClauseContext ctx) {
     super.enterAttributeClause(ctx);
     List<PropertyContext> attributesList = ctx.property();
+    String value = "";
     Map<String, String> attributes = new HashMap<>(attributesList.size(), 1);
     if (ctx.property(0) != null) {
       for (PropertyContext property : attributesList) {
-        attributes.put(property.ID().getText().toLowerCase(),
-            property.propertyValue().getText().toLowerCase());
+        if(property.propertyValue().STRING_LITERAL() != null) {
+          value = removeStringQuote(property.propertyValue().getText().toLowerCase());
+        }
+        attributes.put(property.ID().getText().toLowerCase(), value);
       }
     }
     createTimeSeriesOperator.setAttributes(attributes);
@@ -927,11 +930,14 @@ public class LogicalGenerator extends SqlBaseBaseListener {
   public void enterTagClause(TagClauseContext ctx) {
     super.enterTagClause(ctx);
     List<PropertyContext> tagsList = ctx.property();
+    String value = "";
     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());
+        if(property.propertyValue().STRING_LITERAL() != null) {
+          value = removeStringQuote(property.propertyValue().getText().toLowerCase());
+        }
+        tags.put(property.ID().getText().toLowerCase(), value);
       }
     }
     createTimeSeriesOperator.setTags(tags);
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 04b1fc3..8206025 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,8 @@ public class PhysicalGenerator {
       case CREATE_TIMESERIES:
         CreateTimeSeriesOperator addPath = (CreateTimeSeriesOperator) operator;
         return new CreateTimeSeriesPlan(addPath.getPath(), addPath.getDataType(),
-            addPath.getEncoding(), addPath.getCompressor(), addPath.getAttributes());
+            addPath.getEncoding(), addPath.getCompressor(), addPath.getAttributes(),
+            addPath.getTags(), addPath.getAlias());
       case DELETE_TIMESERIES:
         DeleteTimeSeriesOperator deletePath = (DeleteTimeSeriesOperator) operator;
         return new DeleteTimeSeriesPlan(deletePath.getDeletePathList());


[incubator-iotdb] 01/02: update antr4 for tags and attributes

Posted by ge...@apache.org.
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 <zh...@gmail.com>
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());