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/02/03 08:35:35 UTC

[incubator-iotdb] 01/02: add time and timestamp.

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

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

commit a936b837ef567e8783a5121bf7bdcaff31eb03b5
Author: zhutianci <zh...@gmail.com>
AuthorDate: Mon Feb 3 16:28:03 2020 +0800

    add time and timestamp.
---
 .../org/apache/iotdb/db/qp/strategy/SqlBase.g4     |  8 ++-
 .../iotdb/db/qp/strategy/LogicalGenerator.java     |  5 +-
 .../apache/iotdb/db/qp/plan/PhysicalPlanTest.java  | 74 +++++++++++-----------
 3 files changed, 47 insertions(+), 40 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 4e2e47f..24fa59a 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
@@ -136,7 +136,7 @@ andExpression
     ;
 
 predicate
-    : (suffixPath | prefixPath) comparisonOperator constant
+    : (TIME | TIMESTAMP | suffixPath | prefixPath) comparisonOperator constant
     | OPERATOR_NOT? LR_BRACKET orExpression RR_BRACKET
     ;
 
@@ -231,7 +231,7 @@ comparisonOperator
     ;
 
 insertColumnSpec
-    : LR_BRACKET TIMESTAMP (COMMA nodeNameWithoutStar)* RR_BRACKET
+    : LR_BRACKET (TIMESTAMP|TIME) (COMMA nodeNameWithoutStar)* RR_BRACKET
     ;
 
 insertValuesSpec
@@ -727,6 +727,10 @@ ALIGN
 COMPRESSION
     : C O M P R E S S I O N
     ;
+
+TIME
+    : T I M E
+    ;
 //============================
 // End of the keywords list
 //============================
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 509912e..6c93df5 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
@@ -1167,13 +1167,16 @@ public class LogicalGenerator extends SqlBaseBaseListener {
       return parseOrExpression(ctx.orExpression());
     } else {
       Path path = null;
-      BasicFunctionOperator basic = null;
+      BasicFunctionOperator basic;
       if (ctx.prefixPath() != null) {
         path = parsePrefixPath(ctx.prefixPath());
       }
       if (ctx.suffixPath() != null) {
         path = parseSuffixPath(ctx.suffixPath());
       }
+      if(ctx.TIME() != null || ctx.TIMESTAMP() != null) {
+        path = new Path(SQLConstant.RESERVED_TIME);
+      }
       if (ctx.constant().dateExpression() != null) {
         if (!path.equals(SQLConstant.RESERVED_TIME)) {
           throw new SQLParserException(path.toString(), "Date can only be used to time");
diff --git a/server/src/test/java/org/apache/iotdb/db/qp/plan/PhysicalPlanTest.java b/server/src/test/java/org/apache/iotdb/db/qp/plan/PhysicalPlanTest.java
index 9f38f50..7eb34b5 100644
--- a/server/src/test/java/org/apache/iotdb/db/qp/plan/PhysicalPlanTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/qp/plan/PhysicalPlanTest.java
@@ -66,7 +66,7 @@ public class PhysicalPlanTest {
   private QueryProcessor processor = new QueryProcessor(new MemIntQpExecutor());
 
   @Before
-  public void before() throws QueryProcessException, StartupException {
+  public void before() throws QueryProcessException {
     Path path1 = new Path(
         new StringContainer(new String[]{"root", "vehicle", "d1", "s1"},
             TsFileConstant.PATH_SEPARATOR));
@@ -97,7 +97,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testMetadata()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String metadata = "create timeseries root.vehicle.d1.s2 with datatype=INT32,encoding=RLE";
     QueryProcessor processor = new QueryProcessor(new MemIntQpExecutor());
     CreateTimeSeriesPlan plan = (CreateTimeSeriesPlan) processor.parseSQLToPhysicalPlan(metadata);
@@ -107,7 +107,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testMetadata2()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String metadata = "create timeseries root.vehicle.d1.s2 with datatype=int32,encoding=rle";
     QueryProcessor processor = new QueryProcessor(new MemIntQpExecutor());
     CreateTimeSeriesPlan plan = (CreateTimeSeriesPlan) processor.parseSQLToPhysicalPlan(metadata);
@@ -117,7 +117,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testAuthor()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sql = "grant role xm privileges 'SET_STORAGE_GROUP','DELETE_TIMESERIES' on root.vehicle.d1.s1";
     QueryProcessor processor = new QueryProcessor(new MemIntQpExecutor());
     AuthorPlan plan = (AuthorPlan) processor.parseSQLToPhysicalPlan(sql);
@@ -129,7 +129,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testProperty()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sql = "add label label1021 to property propropro";
     QueryProcessor processor = new QueryProcessor(new MemIntQpExecutor());
     PropertyPlan plan = (PropertyPlan) processor.parseSQLToPhysicalPlan(sql);
@@ -143,7 +143,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testAggregation()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "select sum(d1.s1) " + "from root.vehicle "
         + "where time <= 51 or !(time != 100 and time < 460)";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
@@ -156,7 +156,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testGroupBy1()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr =
         "select count(s1) " + "from root.vehicle.d1 " + "where s1 < 20 and time <= now() "
             + "group by([8,737], 3ms)";
@@ -204,7 +204,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testFill1()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1 WHERE time = 5000 Fill(int32[linear, 5m, 5m], boolean[previous, 5m])";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     if (!plan.isQuery()) {
@@ -258,7 +258,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testQuery1()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1 WHERE time > 5000";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     IExpression queryFilter = ((QueryPlan) plan).getExpression();
@@ -268,7 +268,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testQuery2()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1 WHERE time > 50 and time <= 100";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     IExpression queryFilter = ((QueryPlan) plan).getExpression();
@@ -280,7 +280,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testQuery3()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1 WHERE time > 50 and time <= 100 or s1 < 10";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     IExpression queryFilter = ((QueryPlan) plan).getExpression();
@@ -310,7 +310,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testQuery5()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1 WHERE s1 > 20 or s1 < 10";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     IExpression queryFilter = ((QueryPlan) plan).getExpression();
@@ -322,7 +322,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testQuery6()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1 WHERE time > 20 or time < 10";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     IExpression queryFilter = ((QueryPlan) plan).getExpression();
@@ -334,7 +334,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testQuery7()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1 WHERE time > 2019-10-16 10:59:00+08:00 - 1d5h or time < 10";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     IExpression queryFilter = ((QueryPlan) plan).getExpression();
@@ -345,7 +345,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testLimitOffset()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1,root.vehicle.d2 WHERE time < 10 "
         + "limit 100 offset 10 slimit 1 soffset 1";
     QueryPlan plan = (QueryPlan) processor.parseSQLToPhysicalPlan(sqlStr);
@@ -357,7 +357,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testQueryFloat1()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1 WHERE s1 > 20.5e3";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     IExpression queryFilter = ((QueryPlan) plan).getExpression();
@@ -368,7 +368,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testQueryFloat2()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1 WHERE s1 > 20.5E-3";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     IExpression queryFilter = ((QueryPlan) plan).getExpression();
@@ -379,7 +379,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testQueryFloat3()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1 WHERE s1 > 2.5";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     IExpression queryFilter = ((QueryPlan) plan).getExpression();
@@ -390,7 +390,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testQueryFloat4()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1 WHERE s1 > 2.5";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     IExpression queryFilter = ((QueryPlan) plan).getExpression();
@@ -401,7 +401,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testQueryFloat5()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1 WHERE s1 > -2.5";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     IExpression queryFilter = ((QueryPlan) plan).getExpression();
@@ -412,7 +412,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testQueryFloat6()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1 WHERE s1 > -2.5E-1";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     IExpression queryFilter = ((QueryPlan) plan).getExpression();
@@ -423,7 +423,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testQueryFloat7()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1 WHERE s1 > 2.5E2";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     IExpression queryFilter = ((QueryPlan) plan).getExpression();
@@ -434,7 +434,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testQueryFloat8()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1 WHERE s1 > .2e2";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     IExpression queryFilter = ((QueryPlan) plan).getExpression();
@@ -445,7 +445,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testQueryFloat9()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1 WHERE s1 > .2";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     IExpression queryFilter = ((QueryPlan) plan).getExpression();
@@ -456,7 +456,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testQueryFloat10()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1 WHERE s1 > 2.";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     IExpression queryFilter = ((QueryPlan) plan).getExpression();
@@ -467,7 +467,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testQueryFloat11()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1 WHERE s1 > 2.";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     IExpression queryFilter = ((QueryPlan) plan).getExpression();
@@ -478,7 +478,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testQueryFloat12()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1 WHERE s1 > -2.";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     IExpression queryFilter = ((QueryPlan) plan).getExpression();
@@ -489,7 +489,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testQueryFloat13()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1 WHERE s1 > -.2";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     IExpression queryFilter = ((QueryPlan) plan).getExpression();
@@ -500,7 +500,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testQueryFloat14()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "SELECT s1 FROM root.vehicle.d1 WHERE s1 > -.2e2";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     IExpression queryFilter = ((QueryPlan) plan).getExpression();
@@ -511,7 +511,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testGrantWatermarkEmbedding()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "GRANT WATERMARK_EMBEDDING to a,b";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     DataAuthPlan dataAuthPlan = (DataAuthPlan) plan;
@@ -521,7 +521,7 @@ public class PhysicalPlanTest {
 
   @Test
   public void testRevokeWatermarkEmbedding()
-      throws QueryProcessException, MetadataException {
+      throws QueryProcessException {
     String sqlStr = "REVOKE WATERMARK_EMBEDDING from a,b";
     PhysicalPlan plan = processor.parseSQLToPhysicalPlan(sqlStr);
     DataAuthPlan dataAuthPlan = (DataAuthPlan) plan;
@@ -530,7 +530,7 @@ public class PhysicalPlanTest {
   }
 
   @Test
-  public void testConfiguration() throws QueryProcessException, MetadataException {
+  public void testConfiguration() throws QueryProcessException {
     String metadata = "load configuration";
     QueryProcessor processor = new QueryProcessor(new MemIntQpExecutor());
     LoadConfigurationPlan plan = (LoadConfigurationPlan) processor.parseSQLToPhysicalPlan(metadata);
@@ -538,7 +538,7 @@ public class PhysicalPlanTest {
   }
 
   @Test
-  public void testShowDynamicParameter() throws QueryProcessException, MetadataException {
+  public void testShowDynamicParameter() throws QueryProcessException {
     String metadata = "show dynamic parameter";
     QueryProcessor processor = new QueryProcessor(new MemIntQpExecutor());
     ShowPlan plan = (ShowPlan) processor.parseSQLToPhysicalPlan(metadata);
@@ -546,7 +546,7 @@ public class PhysicalPlanTest {
   }
 
   @Test
-  public void testShowFlushInfo() throws QueryProcessException, MetadataException {
+  public void testShowFlushInfo() throws QueryProcessException {
     String metadata = "show flush task info";
     QueryProcessor processor = new QueryProcessor(new MemIntQpExecutor());
     ShowPlan plan = (ShowPlan) processor.parseSQLToPhysicalPlan(metadata);
@@ -554,7 +554,7 @@ public class PhysicalPlanTest {
   }
 
   @Test
-  public void testLoadFiles() throws QueryProcessException, MetadataException {
+  public void testLoadFiles() throws QueryProcessException {
     String filePath = "data" + File.separator + "213213441243-1-2.tsfile";
     String metadata = String.format("load %s", filePath);
     QueryProcessor processor = new QueryProcessor(new MemIntQpExecutor());
@@ -586,7 +586,7 @@ public class PhysicalPlanTest {
   }
 
   @Test
-  public void testRemoveFile() throws QueryProcessException, MetadataException {
+  public void testRemoveFile() throws QueryProcessException {
     String filePath = "data" + File.separator + "213213441243-1-2.tsfile";
     String metadata = String.format("remove %s", filePath);
     QueryProcessor processor = new QueryProcessor(new MemIntQpExecutor());
@@ -597,7 +597,7 @@ public class PhysicalPlanTest {
   }
 
   @Test
-  public void testMoveFile() throws QueryProcessException, MetadataException {
+  public void testMoveFile() throws QueryProcessException {
     String filePath = "data" + File.separator + "213213441243-1-2.tsfile";
     String targetDir = "user" + File.separator + "backup";
     String metadata = String.format("move %s %s", filePath, targetDir);