This is an automated email from the ASF dual-hosted git repository. geniuspig pushed a commit to branch IOTDB-986 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit f57b0eb662e13c3cdf3559d96b95ad25e73817eb Author: Boris <[email protected]> AuthorDate: Fri Nov 6 14:48:02 2020 +0800 fix path --- .../org/apache/iotdb/db/metadata/MetaUtils.java | 18 +++++++++++++--- .../apache/iotdb/db/metadata/MetaUtilsTest.java | 24 ++++++++++++++-------- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MetaUtils.java b/server/src/main/java/org/apache/iotdb/db/metadata/MetaUtils.java index ee3ad25..21bf6e5 100644 --- a/server/src/main/java/org/apache/iotdb/db/metadata/MetaUtils.java +++ b/server/src/main/java/org/apache/iotdb/db/metadata/MetaUtils.java @@ -46,7 +46,11 @@ public class MetaUtils { int startIndex = 0; for (int i = 0; i < path.length(); i++) { if (path.charAt(i) == IoTDBConstant.PATH_SEPARATOR) { - nodes.add(path.substring(startIndex, i)); + String node = path.substring(startIndex, i); + if(node.equals("")) { + throw new IllegalPathException("Node can't be empty"); + } + nodes.add(node); startIndex = i + 1; } else if (path.charAt(i) == '"') { int endIndex = path.indexOf('"', i + 1); @@ -55,7 +59,11 @@ public class MetaUtils { endIndex = path.indexOf('"', endIndex + 1); } if (endIndex != -1 && (endIndex == path.length() - 1 || path.charAt(endIndex + 1) == '.')) { - nodes.add(path.substring(startIndex, endIndex + 1)); + String node = path.substring(startIndex, endIndex + 1); + if(node.equals("")) { + throw new IllegalPathException("Node can't be empty"); + } + nodes.add(node); i = endIndex + 1; startIndex = endIndex + 2; } else { @@ -66,7 +74,11 @@ public class MetaUtils { } } if (startIndex <= path.length() - 1) { - nodes.add(path.substring(startIndex)); + String node = path.substring(startIndex); + if(node.equals("")) { + throw new IllegalPathException("Node can't be empty"); + } + nodes.add(node); } return nodes.toArray(new String[0]); } diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/MetaUtilsTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/MetaUtilsTest.java index 18f260b..d5df6a4 100644 --- a/server/src/test/java/org/apache/iotdb/db/metadata/MetaUtilsTest.java +++ b/server/src/test/java/org/apache/iotdb/db/metadata/MetaUtilsTest.java @@ -18,7 +18,7 @@ */ package org.apache.iotdb.db.metadata; -import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertArrayEquals; import java.util.Arrays; import org.apache.iotdb.db.exception.metadata.IllegalPathException; @@ -29,24 +29,24 @@ public class MetaUtilsTest { @Test public void testSplitPathToNodes() throws IllegalPathException { - assertEquals(Arrays.asList("root", "sg", "d1", "s1").toArray(), + assertArrayEquals(Arrays.asList("root", "sg", "d1", "s1").toArray(), MetaUtils.splitPathToDetachedPath("root.sg.d1.s1")); - assertEquals(Arrays.asList("root", "sg", "d1", "\"s.1\"").toArray(), + assertArrayEquals(Arrays.asList("root", "sg", "d1", "\"s.1\"").toArray(), MetaUtils.splitPathToDetachedPath("root.sg.d1.\"s.1\"")); - assertEquals(Arrays.asList("root", "sg", "d1", "\"s\\\".1\"").toArray(), + assertArrayEquals(Arrays.asList("root", "sg", "d1", "\"s\\\".1\"").toArray(), MetaUtils.splitPathToDetachedPath("root.sg.d1.\"s\\\".1\"")); - assertEquals(Arrays.asList("root", "\"s g\"", "d1", "\"s.1\"").toArray(), + assertArrayEquals(Arrays.asList("root", "\"s g\"", "d1", "\"s.1\"").toArray(), MetaUtils.splitPathToDetachedPath("root.\"s g\".d1.\"s.1\"")); - assertEquals(Arrays.asList("root", "\"s g\"", "\"d_.1\"", "\"s.1.1\"").toArray(), + assertArrayEquals(Arrays.asList("root", "\"s g\"", "\"d_.1\"", "\"s.1.1\"").toArray(), MetaUtils.splitPathToDetachedPath("root.\"s g\".\"d_.1\".\"s.1.1\"")); - assertEquals(Arrays.asList("root", "1").toArray(), MetaUtils.splitPathToDetachedPath("root.1")); + assertArrayEquals(Arrays.asList("root", "1").toArray(), MetaUtils.splitPathToDetachedPath("root.1")); - assertEquals(Arrays.asList("root", "sg", "d1", "s", "1").toArray(), + assertArrayEquals(Arrays.asList("root", "sg", "d1", "s", "1").toArray(), MetaUtils.splitPathToDetachedPath("root.sg.d1.s.1")); try { @@ -56,7 +56,13 @@ public class MetaUtilsTest { } try { - MetaUtils.splitPathToDetachedPath("root.sg.d1.\'s1\'"); + MetaUtils.splitPathToDetachedPath("root..a"); + } catch (IllegalPathException e) { + Assert.assertTrue(e.getMessage().contains("Node can't be empty")); + } + + try { + MetaUtils.splitPathToDetachedPath("root.sg.d1.'s1'"); } catch (IllegalPathException e) { Assert.assertTrue(e.getMessage().contains("Illegal path with single quote: ")); }
