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(); + } }
