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

jfeinauer pushed a commit to branch bugfix/932-wrong-verification
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 9ec3254b2db6445975608f090ca3f1116c67276c
Author: Julian Feinauer <[email protected]>
AuthorDate: Sat Oct 3 11:08:29 2020 +0200

    IOTDB-932 Removed (wrong and redundant) Verification of Paths in Session 
API.
---
 .../org/apache/iotdb/db/service/TSServiceImpl.java | 70 +++++++---------------
 .../iotdb/session/IoTDBSessionComplexIT.java       | 45 --------------
 .../apache/iotdb/session/IoTDBSessionSimpleIT.java | 28 ++++++++-
 3 files changed, 48 insertions(+), 95 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java 
b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
index f15495c..14bb48f 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
@@ -18,24 +18,6 @@
  */
 package org.apache.iotdb.db.service;
 
-import static org.apache.iotdb.db.conf.IoTDBConfig.PATH_PATTERN;
-import static 
org.apache.iotdb.db.qp.physical.sys.ShowPlan.ShowContentType.TIMESERIES;
-
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.sql.SQLException;
-import java.time.ZoneId;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicLong;
-import java.util.stream.Collectors;
 import org.antlr.v4.runtime.misc.ParseCancellationException;
 import org.apache.iotdb.db.auth.AuthException;
 import org.apache.iotdb.db.auth.AuthorityChecker;
@@ -60,7 +42,6 @@ import org.apache.iotdb.db.qp.constant.SQLConstant;
 import org.apache.iotdb.db.qp.executor.IPlanExecutor;
 import org.apache.iotdb.db.qp.executor.PlanExecutor;
 import org.apache.iotdb.db.qp.logical.Operator.OperatorType;
-import org.apache.iotdb.db.qp.logical.sys.AuthorOperator.AuthorType;
 import org.apache.iotdb.db.qp.physical.PhysicalPlan;
 import org.apache.iotdb.db.qp.physical.crud.AggregationPlan;
 import org.apache.iotdb.db.qp.physical.crud.AlignByDevicePlan;
@@ -117,6 +98,7 @@ import org.apache.iotdb.service.rpc.thrift.TSOpenSessionResp;
 import org.apache.iotdb.service.rpc.thrift.TSProtocolVersion;
 import org.apache.iotdb.service.rpc.thrift.TSQueryDataSet;
 import org.apache.iotdb.service.rpc.thrift.TSQueryNonAlignDataSet;
+import org.apache.iotdb.service.rpc.thrift.TSRawDataQueryReq;
 import org.apache.iotdb.service.rpc.thrift.TSSetTimeZoneReq;
 import org.apache.iotdb.service.rpc.thrift.TSStatus;
 import 
org.apache.iotdb.tsfile.exception.filter.QueryFilterOptimizationException;
@@ -130,7 +112,24 @@ import org.apache.thrift.TException;
 import org.apache.thrift.server.ServerContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.iotdb.service.rpc.thrift.TSRawDataQueryReq;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.sql.SQLException;
+import java.time.ZoneId;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.stream.Collectors;
+
+import static 
org.apache.iotdb.db.qp.physical.sys.ShowPlan.ShowContentType.TIMESERIES;
 
 
 /**
@@ -1449,13 +1448,8 @@ public class TSServiceImpl implements TSIService.Iface, 
ServerContext {
         return RpcUtils.getStatus(TSStatusCode.NOT_LOGIN_ERROR);
       }
 
-      TSStatus status = checkPathValidity(storageGroup);
-      if (status != null) {
-        return status;
-      }
-
       SetStorageGroupPlan plan = new SetStorageGroupPlan(new 
PartialPath(storageGroup));
-      status = checkAuthority(plan, sessionId);
+      TSStatus status = checkAuthority(plan, sessionId);
       if (status != null) {
         return new TSStatus(status);
       }
@@ -1500,16 +1494,12 @@ public class TSServiceImpl implements TSIService.Iface, 
ServerContext {
       if (auditLogger.isDebugEnabled()) {
         auditLogger.debug("Session-{} create timeseries {}", 
currSessionId.get(), req.getPath());
       }
-      TSStatus status = checkPathValidity(req.path);
-      if (status != null) {
-        return status;
-      }
 
       CreateTimeSeriesPlan plan = new CreateTimeSeriesPlan(new 
PartialPath(req.path),
           TSDataType.values()[req.dataType], TSEncoding.values()[req.encoding],
           CompressionType.values()[req.compressor], req.props, req.tags, 
req.attributes,
           req.measurementAlias);
-      status = checkAuthority(plan, req.getSessionId());
+      TSStatus status = checkAuthority(plan, req.getSessionId());
       if (status != null) {
         return status;
       }
@@ -1542,14 +1532,7 @@ public class TSServiceImpl implements TSIService.Iface, 
ServerContext {
             req.attributesList == null ? null : req.attributesList.get(i),
             req.measurementAliasList == null ? null : 
req.measurementAliasList.get(i));
 
-        TSStatus status = checkPathValidity(req.paths.get(i));
-        if (status != null) {
-          // path naming is not valid
-          statusList.add(status);
-          continue;
-        }
-
-        status = checkAuthority(plan, req.getSessionId());
+        TSStatus status = checkAuthority(plan, req.getSessionId());
         if (status != null) {
           // not authorized
           statusList.add(status);
@@ -1649,15 +1632,6 @@ public class TSServiceImpl implements TSIService.Iface, 
ServerContext {
         : RpcUtils.getStatus(TSStatusCode.EXECUTE_STATEMENT_ERROR);
   }
 
-  private TSStatus checkPathValidity(String path) {
-    if (!PATH_PATTERN.matcher(path).matches()) {
-      logger.warn("Illegal path: {}", path);
-      return RpcUtils.getStatus(TSStatusCode.PATH_ILLEGAL, path + " path is 
illegal");
-    } else {
-      return null;
-    }
-  }
-
   private long generateQueryId(boolean isDataQuery) {
     return QueryResourceManager.getInstance().assignQueryId(isDataQuery);
   }
diff --git 
a/session/src/test/java/org/apache/iotdb/session/IoTDBSessionComplexIT.java 
b/session/src/test/java/org/apache/iotdb/session/IoTDBSessionComplexIT.java
index 59b2a0f..082bc04 100644
--- a/session/src/test/java/org/apache/iotdb/session/IoTDBSessionComplexIT.java
+++ b/session/src/test/java/org/apache/iotdb/session/IoTDBSessionComplexIT.java
@@ -745,39 +745,6 @@ public class IoTDBSessionComplexIT {
         "insert into root.sg1.d1(timestamp,s1, s2, s3) values(100, 1,2,3)");
   }
 
-  @Test
-  public void checkPathTest() throws IoTDBConnectionException {
-    session = new Session("127.0.0.1", 6667, "root", "root");
-    session.open();
-
-    checkSetSG(session, "root.vehicle", true);
-    checkSetSG(session, "root.123456", true);
-    checkSetSG(session, "root._1234", true);
-    checkSetSG(session, "root._vehicle", true);
-    checkSetSG(session, "root.\tvehicle", false);
-    checkSetSG(session, "root.\nvehicle", false);
-    checkSetSG(session, "root..vehicle", false);
-    checkSetSG(session, "root.1234a4", true);
-    checkSetSG(session, "root.1_2", true);
-    checkSetSG(session, "root.%12345", false);
-    checkSetSG(session, "root.+12345", false);
-    checkSetSG(session, "root.-12345", false);
-    checkSetSG(session, "root.a{12345}", false);
-
-    checkCreateTimeseries(session, "root.vehicle.d0.s0", true);
-    checkCreateTimeseries(session, "root.vehicle.1110.s0", true);
-    checkCreateTimeseries(session, "root.vehicle.d0.1220", true);
-    checkCreateTimeseries(session, "root.vehicle._1234.s0", true);
-    checkCreateTimeseries(session, "root.vehicle.1245.\"1.2.3\"", true);
-    checkCreateTimeseries(session, "root.vehicle.1245.\"1.2.4\"", true);
-    checkCreateTimeseries(session, "root.vehicle./d0.s0", true);
-    checkCreateTimeseries(session, "root.vehicle.d\t0.s0", false);
-    checkCreateTimeseries(session, "root.vehicle.!d\t0.s0", false);
-    checkCreateTimeseries(session, "root.vehicle.d{dfewrew0}.s0", true);
-
-    session.close();
-  }
-
   private void checkSetSG(Session session, String sg, boolean correctStatus)
       throws IoTDBConnectionException {
     boolean status = true;
@@ -789,18 +756,6 @@ public class IoTDBSessionComplexIT {
     assertEquals(correctStatus, status);
   }
 
-  private void checkCreateTimeseries(Session session, String timeseries, 
boolean correctStatus)
-      throws IoTDBConnectionException {
-    boolean status = true;
-    try {
-      session.createTimeseries(timeseries, TSDataType.INT64, TSEncoding.RLE,
-          CompressionType.SNAPPY);
-    } catch (StatementExecutionException e) {
-      status = false;
-    }
-    assertEquals(correctStatus, status);
-  }
-
   private void queryForBatch() throws ClassNotFoundException, SQLException {
     Class.forName(Config.JDBC_DRIVER_NAME);
     String standard =
diff --git 
a/session/src/test/java/org/apache/iotdb/session/IoTDBSessionSimpleIT.java 
b/session/src/test/java/org/apache/iotdb/session/IoTDBSessionSimpleIT.java
index 28d57c5..f904e03 100644
--- a/session/src/test/java/org/apache/iotdb/session/IoTDBSessionSimpleIT.java
+++ b/session/src/test/java/org/apache/iotdb/session/IoTDBSessionSimpleIT.java
@@ -21,6 +21,7 @@ package org.apache.iotdb.session;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -125,6 +126,8 @@ public class IoTDBSessionSimpleIT {
       i++;
     }
 
+    assertEquals(4, i);
+
     session.close();
   }
 
@@ -199,8 +202,8 @@ public class IoTDBSessionSimpleIT {
         .createMultiTimeseries(paths, tsDataTypes, tsEncodings, 
compressionTypes, null, tagsList,
             null, null);
 
-    Assert.assertTrue(session.checkTimeseriesExists("root.sg1.d1.s1"));
-    Assert.assertTrue(session.checkTimeseriesExists("root.sg1.d1.s2"));
+    assertTrue(session.checkTimeseriesExists("root.sg1.d1.s1"));
+    assertTrue(session.checkTimeseriesExists("root.sg1.d1.s2"));
     MeasurementMNode mNode = (MeasurementMNode) MManager
         .getInstance().getNodeByPath(new PartialPath("root.sg1.d1.s1"));
     assertNull(mNode.getSchema().getProps());
@@ -258,4 +261,25 @@ public class IoTDBSessionSimpleIT {
     session.deleteStorageGroup(storageGroup);
     session.close();
   }
+
+  @Test
+  public void createTimeSeriesWithDoubleTicks() throws 
IoTDBConnectionException, StatementExecutionException {
+    session = new Session("127.0.0.1", 6667, "root", "root");
+    session.open();
+    if (!System.getProperty("sun.jnu.encoding").contains("UTF-8")) {
+      logger.error("The system does not support UTF-8, so skip Chinese 
test...");
+      session.close();
+      return;
+    }
+    String storageGroup = "root.sg";
+    session.setStorageGroup(storageGroup);
+
+    session.createTimeseries("root.sg.\"my.device.with.colon:\".s", 
TSDataType.INT64, TSEncoding.RLE, CompressionType.SNAPPY);
+
+    final SessionDataSet dataSet = session.executeQueryStatement("SHOW 
TIMESERIES");
+    assertTrue(dataSet.hasNext());
+
+    session.deleteStorageGroup(storageGroup);
+    session.close();
+  }
 }

Reply via email to