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

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

commit 91a7beb0a6453a159b709666215086fa0c23dc18
Author: lta <[email protected]>
AuthorDate: Wed Apr 3 21:47:23 2019 +0800

    add_create_ts_operator
---
 .../org/apache/iotdb/db/qp/QueryProcessor.java     |  1 +
 .../iotdb/db/qp/executor/OverflowQPExecutor.java   |  1 +
 .../org/apache/iotdb/db/qp/logical/Operator.java   |  2 +-
 .../iotdb/db/qp/logical/sys/MetadataOperator.java  |  4 +-
 .../iotdb/db/qp/physical/sys/MetadataPlan.java     |  5 +-
 .../iotdb/db/qp/strategy/PhysicalGenerator.java    |  1 +
 .../writelog/transfer/PhysicalPlanLogTransfer.java |  1 +
 .../org/apache/iotdb/db/qp/QueryProcessorTest.java | 59 ++++++++++++++++++++++
 .../iotdb/db/qp/strategy/LogicalGeneratorTest.java |  1 +
 .../transfer/PhysicalPlanLogTransferTest.java      | 29 ++++++-----
 10 files changed, 87 insertions(+), 17 deletions(-)

diff --git a/iotdb/src/main/java/org/apache/iotdb/db/qp/QueryProcessor.java 
b/iotdb/src/main/java/org/apache/iotdb/db/qp/QueryProcessor.java
index 1ec75a7..c64c71a 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/qp/QueryProcessor.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/qp/QueryProcessor.java
@@ -128,6 +128,7 @@ public class QueryProcessor {
       case AUTHOR:
       case METADATA:
       case SET_STORAGE_GROUP:
+      case CREATE_TIMESERIES:
       case DELETE_TIMESERIES:
       case PROPERTY:
       case LOADDATA:
diff --git 
a/iotdb/src/main/java/org/apache/iotdb/db/qp/executor/OverflowQPExecutor.java 
b/iotdb/src/main/java/org/apache/iotdb/db/qp/executor/OverflowQPExecutor.java
index 061bb47..93b8be1 100644
--- 
a/iotdb/src/main/java/org/apache/iotdb/db/qp/executor/OverflowQPExecutor.java
+++ 
b/iotdb/src/main/java/org/apache/iotdb/db/qp/executor/OverflowQPExecutor.java
@@ -143,6 +143,7 @@ public class OverflowQPExecutor extends 
QueryProcessExecutor {
             MManager.getInstance());
         return true;
       case DELETE_TIMESERIES:
+      case CREATE_TIMESERIES:
       case SET_STORAGE_GROUP:
       case METADATA:
         MetadataPlan metadata = (MetadataPlan) plan;
diff --git a/iotdb/src/main/java/org/apache/iotdb/db/qp/logical/Operator.java 
b/iotdb/src/main/java/org/apache/iotdb/db/qp/logical/Operator.java
index b346cdb..c7a9eb7 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/qp/logical/Operator.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/qp/logical/Operator.java
@@ -69,7 +69,7 @@ public abstract class Operator {
     SFW, JOIN, UNION, FILTER, GROUPBY, ORDERBY, LIMIT, SELECT, SEQTABLESCAN, 
HASHTABLESCAN,
     MERGEJOIN, FILEREAD, NULL, TABLESCAN, UPDATE, INSERT, DELETE, BASIC_FUNC, 
QUERY, MERGEQUERY,
     AGGREGATION, AUTHOR, FROM, FUNC, LOADDATA, METADATA, PROPERTY, INDEX, 
INDEXQUERY, FILL,
-    SET_STORAGE_GROUP, DELETE_TIMESERIES, CREATE_USER, DELETE_USER, 
MODIFY_PASSWORD,
+    SET_STORAGE_GROUP, CREATE_TIMESERIES, DELETE_TIMESERIES, CREATE_USER, 
DELETE_USER, MODIFY_PASSWORD,
     GRANT_USER_PRIVILEGE, REVOKE_USER_PRIVILEGE, GRANT_USER_ROLE, 
REVOKE_USER_ROLE, CREATE_ROLE,
     DELETE_ROLE, GRANT_ROLE_PRIVILEGE, REVOKE_ROLE_PRIVILEGE, LIST_USER, 
LIST_ROLE,
     LIST_USER_PRIVILEGE, LIST_ROLE_PRIVILEGE, LIST_USER_ROLES, LIST_ROLE_USERS;
diff --git 
a/iotdb/src/main/java/org/apache/iotdb/db/qp/logical/sys/MetadataOperator.java 
b/iotdb/src/main/java/org/apache/iotdb/db/qp/logical/sys/MetadataOperator.java
index a0e81b0..4f2c6bd 100644
--- 
a/iotdb/src/main/java/org/apache/iotdb/db/qp/logical/sys/MetadataOperator.java
+++ 
b/iotdb/src/main/java/org/apache/iotdb/db/qp/logical/sys/MetadataOperator.java
@@ -47,9 +47,11 @@ public class MetadataOperator extends RootOperator {
     namespaceType = type;
     switch (type) {
       case SET_FILE_LEVEL:
-      case ADD_PATH:
         operatorType = OperatorType.SET_STORAGE_GROUP;
         break;
+      case ADD_PATH:
+        operatorType = OperatorType.CREATE_TIMESERIES;
+        break;
       case DELETE_PATH:
         operatorType = OperatorType.DELETE_TIMESERIES;
         break;
diff --git 
a/iotdb/src/main/java/org/apache/iotdb/db/qp/physical/sys/MetadataPlan.java 
b/iotdb/src/main/java/org/apache/iotdb/db/qp/physical/sys/MetadataPlan.java
index f612165..4a63b68 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/qp/physical/sys/MetadataPlan.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/qp/physical/sys/MetadataPlan.java
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import org.apache.iotdb.db.qp.logical.Operator;
+import org.apache.iotdb.db.qp.logical.Operator.OperatorType;
 import org.apache.iotdb.db.qp.logical.sys.MetadataOperator;
 import org.apache.iotdb.db.qp.physical.PhysicalPlan;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
@@ -57,9 +58,11 @@ public class MetadataPlan extends PhysicalPlan {
     this.deletePathList = deletePathList;
     switch (namespaceType) {
       case SET_FILE_LEVEL:
-      case ADD_PATH:
         setOperatorType(Operator.OperatorType.SET_STORAGE_GROUP);
         break;
+      case ADD_PATH:
+        setOperatorType(Operator.OperatorType.CREATE_TIMESERIES);
+        break;
       case DELETE_PATH:
         setOperatorType(Operator.OperatorType.DELETE_TIMESERIES);
         break;
diff --git 
a/iotdb/src/main/java/org/apache/iotdb/db/qp/strategy/PhysicalGenerator.java 
b/iotdb/src/main/java/org/apache/iotdb/db/qp/strategy/PhysicalGenerator.java
index 2caac94..7d8318a 100644
--- a/iotdb/src/main/java/org/apache/iotdb/db/qp/strategy/PhysicalGenerator.java
+++ b/iotdb/src/main/java/org/apache/iotdb/db/qp/strategy/PhysicalGenerator.java
@@ -80,6 +80,7 @@ public class PhysicalGenerator {
         LoadDataOperator loadData = (LoadDataOperator) operator;
         return new LoadDataPlan(loadData.getInputFilePath(), 
loadData.getMeasureType());
       case SET_STORAGE_GROUP:
+      case CREATE_TIMESERIES:
       case DELETE_TIMESERIES:
       case METADATA:
         MetadataOperator metadata = (MetadataOperator) operator;
diff --git 
a/iotdb/src/main/java/org/apache/iotdb/db/writelog/transfer/PhysicalPlanLogTransfer.java
 
b/iotdb/src/main/java/org/apache/iotdb/db/writelog/transfer/PhysicalPlanLogTransfer.java
index 110e5e9..838ddb7 100644
--- 
a/iotdb/src/main/java/org/apache/iotdb/db/writelog/transfer/PhysicalPlanLogTransfer.java
+++ 
b/iotdb/src/main/java/org/apache/iotdb/db/writelog/transfer/PhysicalPlanLogTransfer.java
@@ -41,6 +41,7 @@ public class PhysicalPlanLogTransfer {
         codec = (Codec<PhysicalPlan>) 
PhysicalPlanCodec.fromOpcode(SystemLogOperator.DELETE).codec;
         break;
       case DELETE_TIMESERIES:
+      case CREATE_TIMESERIES:
       case SET_STORAGE_GROUP:
         codec = (Codec<PhysicalPlan>) 
PhysicalPlanCodec.fromOpcode(SystemLogOperator.METADATA).codec;
         break;
diff --git a/iotdb/src/test/java/org/apache/iotdb/db/qp/QueryProcessorTest.java 
b/iotdb/src/test/java/org/apache/iotdb/db/qp/QueryProcessorTest.java
new file mode 100644
index 0000000..489bd20
--- /dev/null
+++ b/iotdb/src/test/java/org/apache/iotdb/db/qp/QueryProcessorTest.java
@@ -0,0 +1,59 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.iotdb.db.qp;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.iotdb.db.exception.ArgsErrorException;
+import org.apache.iotdb.db.exception.ProcessorException;
+import org.apache.iotdb.db.exception.qp.QueryProcessorException;
+import org.apache.iotdb.db.qp.executor.OverflowQPExecutor;
+import org.apache.iotdb.db.qp.logical.Operator.OperatorType;
+import org.apache.iotdb.db.qp.physical.PhysicalPlan;
+import org.junit.Test;
+
+public class QueryProcessorTest {
+
+  private QueryProcessor processor = new QueryProcessor(new 
OverflowQPExecutor());
+
+  @Test
+  public void parseSQLToPhysicalPlan()
+      throws ArgsErrorException, ProcessorException, QueryProcessorException {
+    String createSGStatement = "set storage group to root.vehicle";
+    PhysicalPlan plan1 = processor.parseSQLToPhysicalPlan(createSGStatement);
+    assertEquals(OperatorType.SET_STORAGE_GROUP, plan1.getOperatorType());
+
+    String createTSStatement = "create timeseries root.vehicle.d1.s1 with 
datatype=INT32,encoding=RLE";
+    PhysicalPlan plan2 = processor.parseSQLToPhysicalPlan(createTSStatement);
+    assertEquals(OperatorType.CREATE_TIMESERIES, plan2.getOperatorType());
+
+    String deleteTSStatement = "delete timeseries root.vehicle.d1.s1";
+    PhysicalPlan plan3 = processor.parseSQLToPhysicalPlan(deleteTSStatement);
+    assertEquals(OperatorType.DELETE_TIMESERIES, plan3.getOperatorType());
+
+    String insertStatement = "insert into root.vehicle.d0(timestamp,s0) 
values(10,100)";
+    PhysicalPlan plan4 = processor.parseSQLToPhysicalPlan(insertStatement);
+    assertEquals(OperatorType.INSERT, plan4.getOperatorType());
+
+    String propertyStatement = "add label label1021 to property propropro";
+    PhysicalPlan plan5 = processor.parseSQLToPhysicalPlan(propertyStatement);
+    assertEquals(OperatorType.PROPERTY, plan5.getOperatorType());
+
+  }
+}
\ No newline at end of file
diff --git 
a/iotdb/src/test/java/org/apache/iotdb/db/qp/strategy/LogicalGeneratorTest.java 
b/iotdb/src/test/java/org/apache/iotdb/db/qp/strategy/LogicalGeneratorTest.java
index 093fd93..f22a6e8 100644
--- 
a/iotdb/src/test/java/org/apache/iotdb/db/qp/strategy/LogicalGeneratorTest.java
+++ 
b/iotdb/src/test/java/org/apache/iotdb/db/qp/strategy/LogicalGeneratorTest.java
@@ -74,4 +74,5 @@ public class LogicalGeneratorTest {
   public void testParseTimeFormatFail2() throws LogicalOperatorException {
     generator.parseTimeFormat("");
   }
+
 }
diff --git 
a/iotdb/src/test/java/org/apache/iotdb/db/writelog/transfer/PhysicalPlanLogTransferTest.java
 
b/iotdb/src/test/java/org/apache/iotdb/db/writelog/transfer/PhysicalPlanLogTransferTest.java
index a226336..58e8b1f 100644
--- 
a/iotdb/src/test/java/org/apache/iotdb/db/writelog/transfer/PhysicalPlanLogTransferTest.java
+++ 
b/iotdb/src/test/java/org/apache/iotdb/db/writelog/transfer/PhysicalPlanLogTransferTest.java
@@ -18,6 +18,7 @@
  */
 package org.apache.iotdb.db.writelog.transfer;
 
+import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 
 import java.io.IOException;
@@ -55,19 +56,19 @@ public class PhysicalPlanLogTransferTest {
     byte[] insertPlanBytesTest = 
PhysicalPlanLogTransfer.operatorToLog(insertPlan);
     Codec<InsertPlan> insertPlanCodec = CodecInstances.multiInsertPlanCodec;
     byte[] insertPlanProperty = insertPlanCodec.encode(insertPlan);
-    assertEquals(true, Arrays.equals(insertPlanProperty, insertPlanBytesTest));
+    assertArrayEquals(insertPlanProperty, insertPlanBytesTest);
 
     /** Delete Plan test **/
     byte[] deletePlanBytesTest = 
PhysicalPlanLogTransfer.operatorToLog(deletePlan);
     Codec<DeletePlan> deletePlanCodec = CodecInstances.deletePlanCodec;
     byte[] deletePlanProperty = deletePlanCodec.encode(deletePlan);
-    assertEquals(true, Arrays.equals(deletePlanProperty, deletePlanBytesTest));
+    assertArrayEquals(deletePlanProperty, deletePlanBytesTest);
 
     /** Update Plan test **/
     byte[] updatePlanBytesTest = 
PhysicalPlanLogTransfer.operatorToLog(updatePlan);
     Codec<UpdatePlan> updatePlanCodec = CodecInstances.updatePlanCodec;
     byte[] updatePlanProperty = updatePlanCodec.encode(updatePlan);
-    assertEquals(true, Arrays.equals(updatePlanProperty, updatePlanBytesTest));
+    assertArrayEquals(updatePlanProperty, updatePlanBytesTest);
 
     /** Metadata Plan test **/
     String metadataStatement = "create timeseries root.vehicle.d1.s1 with 
datatype=INT32,encoding=RLE";
@@ -75,7 +76,7 @@ public class PhysicalPlanLogTransferTest {
     byte[] metadataPlanBytesTest = 
PhysicalPlanLogTransfer.operatorToLog(metadataPlan);
     Codec<MetadataPlan> metadataPlanCodec = CodecInstances.metadataPlanCodec;
     byte[] metadataPlanProperty = metadataPlanCodec.encode(metadataPlan);
-    assertEquals(true, Arrays.equals(metadataPlanProperty, 
metadataPlanBytesTest));
+    assertArrayEquals(metadataPlanProperty, metadataPlanBytesTest);
 
     /** Author Plan test **/
     String sql = "grant role xm privileges 
'SET_STORAGE_GROUP','DELETE_TIMESERIES' on root.vehicle.device.sensor";
@@ -83,13 +84,13 @@ public class PhysicalPlanLogTransferTest {
     byte[] authorPlanBytesTest = 
PhysicalPlanLogTransfer.operatorToLog(authorPlan);
     Codec<AuthorPlan> authorPlanCodec = CodecInstances.authorPlanCodec;
     byte[] authorPlanProperty = authorPlanCodec.encode(authorPlan);
-    assertEquals(true, Arrays.equals(authorPlanProperty, authorPlanBytesTest));
+    assertArrayEquals(authorPlanProperty, authorPlanBytesTest);
 
     /** LoadData Plan test **/
     byte[] loadDataPlanBytesTest = 
PhysicalPlanLogTransfer.operatorToLog(loadDataPlan);
     Codec<LoadDataPlan> loadDataPlanCodec = CodecInstances.loadDataPlanCodec;
     byte[] loadDataPlanProperty = loadDataPlanCodec.encode(loadDataPlan);
-    assertEquals(true, Arrays.equals(loadDataPlanProperty, 
loadDataPlanBytesTest));
+    assertArrayEquals(loadDataPlanProperty, loadDataPlanBytesTest);
 
     /** Property Plan test **/
     sql = "add label label1021 to property propropro";
@@ -97,7 +98,7 @@ public class PhysicalPlanLogTransferTest {
     byte[] propertyPlanBytesTest = 
PhysicalPlanLogTransfer.operatorToLog(propertyPlan);
     Codec<PropertyPlan> propertyPlanCodec = CodecInstances.propertyPlanCodec;
     byte[] propertyPlanProperty = propertyPlanCodec.encode(propertyPlan);
-    assertEquals(true, Arrays.equals(propertyPlanProperty, 
propertyPlanBytesTest));
+    assertArrayEquals(propertyPlanProperty, propertyPlanBytesTest);
 
   }
 
@@ -109,19 +110,19 @@ public class PhysicalPlanLogTransferTest {
     byte[] insertPlanBytesTest = 
PhysicalPlanLogTransfer.operatorToLog(insertPlan);
     InsertPlan insertPlanTest = (InsertPlan) PhysicalPlanLogTransfer
         .logToOperator(insertPlanBytesTest);
-    assertEquals(true, insertPlanTest.equals(insertPlan));
+    assertEquals(insertPlanTest, insertPlan);
 
     /** Delete Plan test **/
     byte[] deletePlanBytesTest = 
PhysicalPlanLogTransfer.operatorToLog(deletePlan);
     DeletePlan deletePlanTest = (DeletePlan) PhysicalPlanLogTransfer
         .logToOperator(deletePlanBytesTest);
-    assertEquals(true, deletePlanTest.equals(deletePlan));
+    assertEquals(deletePlanTest, deletePlan);
 
     /** Update Plan test **/
     byte[] updatePlanBytesTest = 
PhysicalPlanLogTransfer.operatorToLog(updatePlan);
     UpdatePlan updatePlanTest = (UpdatePlan) PhysicalPlanLogTransfer
         .logToOperator(updatePlanBytesTest);
-    assertEquals(true, updatePlanTest.equals(updatePlan));
+    assertEquals(updatePlanTest, updatePlan);
 
     /** Metadata Plan test **/
     String metadataStatement = "create timeseries root.vehicle.d1.s1 with 
datatype=INT32,encoding=RLE";
@@ -129,7 +130,7 @@ public class PhysicalPlanLogTransferTest {
     byte[] metadataPlanBytesTest = 
PhysicalPlanLogTransfer.operatorToLog(metadataPlan);
     MetadataPlan metadataPlanTest = (MetadataPlan) PhysicalPlanLogTransfer
         .logToOperator(metadataPlanBytesTest);
-    assertEquals(true, metadataPlanTest.equals(metadataPlan));
+    assertEquals(metadataPlanTest, metadataPlan);
 
     /** Author Plan test **/
     String sql = "grant role xm privileges 
'SET_STORAGE_GROUP','DELETE_TIMESERIES' on root.vehicle.device.sensor";
@@ -137,13 +138,13 @@ public class PhysicalPlanLogTransferTest {
     byte[] authorPlanBytesTest = 
PhysicalPlanLogTransfer.operatorToLog(authorPlan);
     AuthorPlan authorPlanTest = (AuthorPlan) PhysicalPlanLogTransfer
         .logToOperator(authorPlanBytesTest);
-    assertEquals(true, authorPlanTest.equals(authorPlan));
+    assertEquals(authorPlanTest, authorPlan);
 
     /** LoadData Plan test **/
     byte[] loadDataPlanBytesTest = 
PhysicalPlanLogTransfer.operatorToLog(loadDataPlan);
     LoadDataPlan loadDataPlanTest = (LoadDataPlan) PhysicalPlanLogTransfer
         .logToOperator(loadDataPlanBytesTest);
-    assertEquals(true, loadDataPlan.equals(loadDataPlanTest));
+    assertEquals(loadDataPlan, loadDataPlanTest);
 
     /** Property Plan test **/
     sql = "add label label1021 to property propropro";
@@ -151,7 +152,7 @@ public class PhysicalPlanLogTransferTest {
     byte[] propertyPlanBytesTest = 
PhysicalPlanLogTransfer.operatorToLog(propertyPlan);
     PropertyPlan propertyPlanTest = (PropertyPlan) PhysicalPlanLogTransfer
         .logToOperator(propertyPlanBytesTest);
-    assertEquals(true, propertyPlanTest.equals(propertyPlan));
+    assertEquals(propertyPlanTest, propertyPlan);
 
   }
 }
\ No newline at end of file

Reply via email to