Skip to content

Commit

Permalink
[IOTDB-545] Update checkPathValidity in Session
Browse files Browse the repository at this point in the history
  • Loading branch information
samperson1997 committed Mar 6, 2020
1 parent cbf5fe0 commit 60ba663
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 22 deletions.
6 changes: 4 additions & 2 deletions session/src/main/java/org/apache/iotdb/session/Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_ROOT;
import static org.apache.iotdb.tsfile.common.constant.TsFileConstant.PATH_SEPARATOR;

import java.util.regex.Pattern;

public class Config {

public static final String DEFAULT_USER = "user";
Expand All @@ -33,7 +35,7 @@ public class Config {
// for path like: root.sg1.d1."1.2.3" or root.sg1.d1.'1.2.3', only occurs in the end of the path and only occurs once
public static final String NODE_WITH_QUOTATION_MARK_MATCHER =
"[" + PATH_SEPARATOR + "][\"|\']([a-zA-Z0-9_]+)(" + NODE_MATCHER + ")+[\"|\']";
public static final String PATH_MATCHER =
PATH_ROOT + "(" + NODE_MATCHER + ")+(" + NODE_WITH_QUOTATION_MARK_MATCHER + ")?";
public static final Pattern PATH_PATTERN = Pattern
.compile(PATH_ROOT + "(" + NODE_MATCHER + ")+(" + NODE_WITH_QUOTATION_MARK_MATCHER + ")?");

}
5 changes: 2 additions & 3 deletions session/src/main/java/org/apache/iotdb/session/Session.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,14 @@
*/
package org.apache.iotdb.session;

import static org.apache.iotdb.session.Config.PATH_MATCHER;
import static org.apache.iotdb.session.Config.PATH_PATTERN;

import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.regex.Pattern;
import org.apache.iotdb.rpc.IoTDBRPCException;
import org.apache.iotdb.rpc.RpcUtils;
import org.apache.iotdb.rpc.TSStatusCode;
Expand Down Expand Up @@ -646,7 +645,7 @@ public void executeNonQueryStatement(String sql) throws TException, IoTDBRPCExce
}

private void checkPathValidity(String path) throws IoTDBSessionException {
if (!Pattern.matches(PATH_MATCHER, path)) {
if (!PATH_PATTERN.matcher(path).matches()) {
throw new IoTDBSessionException(
String.format("Path [%s] is invalid", path));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,32 +19,31 @@

package org.apache.iotdb.session;

import static org.apache.iotdb.session.Config.PATH_MATCHER;
import static org.apache.iotdb.session.Config.PATH_PATTERN;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import java.util.regex.Pattern;
import org.junit.Test;

public class CheckPathValidityTest {

@Test
public void testCheckPathValidity() {
assertTrue(Pattern.matches(PATH_MATCHER, "root.vehicle"));
assertTrue(Pattern.matches(PATH_MATCHER, "root.123456"));
assertTrue(Pattern.matches(PATH_MATCHER, "root._1234"));
assertTrue(Pattern.matches(PATH_MATCHER, "root._vehicle"));
assertTrue(Pattern.matches(PATH_MATCHER, "root.1234a4"));
assertTrue(Pattern.matches(PATH_MATCHER, "root.1_2"));
assertTrue(Pattern.matches(PATH_MATCHER, "root.vehicle.1245.1.2.3"));
assertTrue(Pattern.matches(PATH_MATCHER, "root.vehicle.1245.\"1.2.3\""));
assertTrue(Pattern.matches(PATH_MATCHER, "root.vehicle.1245.\'1.2.3\'"));
assertTrue(PATH_PATTERN.matcher("root.vehicle").matches());
assertTrue(PATH_PATTERN.matcher("root.123456").matches());
assertTrue(PATH_PATTERN.matcher("root._1234").matches());
assertTrue(PATH_PATTERN.matcher("root._vehicle").matches());
assertTrue(PATH_PATTERN.matcher("root.1234a4").matches());
assertTrue(PATH_PATTERN.matcher("root.1_2").matches());
assertTrue(PATH_PATTERN.matcher("root.vehicle.1245.1.2.3").matches());
assertTrue(PATH_PATTERN.matcher("root.vehicle.1245.\"1.2.3\"").matches());
assertTrue(PATH_PATTERN.matcher("root.vehicle.1245.\'1.2.3\'").matches());

assertFalse(Pattern.matches(PATH_MATCHER, "vehicle"));
assertFalse(Pattern.matches(PATH_MATCHER, "root.\tvehicle"));
assertFalse(Pattern.matches(PATH_MATCHER, "root.\nvehicle"));
assertFalse(Pattern.matches(PATH_MATCHER, "root..vehicle"));
assertFalse(Pattern.matches(PATH_MATCHER, "root.%12345"));
assertFalse(Pattern.matches(PATH_MATCHER, "root.a{12345}"));
assertFalse(PATH_PATTERN.matcher("vehicle").matches());
assertFalse(PATH_PATTERN.matcher("root.\tvehicle").matches());
assertFalse(PATH_PATTERN.matcher("root.\nvehicle").matches());
assertFalse(PATH_PATTERN.matcher("root..vehicle").matches());
assertFalse(PATH_PATTERN.matcher("root.%12345").matches());
assertFalse(PATH_PATTERN.matcher("root.a{12345}").matches());
}
}

0 comments on commit 60ba663

Please sign in to comment.