You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by jf...@apache.org on 2020/10/03 09:08:55 UTC
[iotdb] 01/01: IOTDB-932 Removed (wrong and redundant) Verification
of Paths in Session API.
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 <j....@pragmaticminds.de>
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();
+ }
}