This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch rel/0.10
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/rel/0.10 by this push:
new 8a5105e [To rel/0.10][IOTDB-949] Fix align by device bug (#1838)
8a5105e is described below
commit 8a5105e3c9257a421520771d9e37ab1af1b101c1
Author: Jackie Tien <[email protected]>
AuthorDate: Wed Oct 21 15:08:35 2020 +0800
[To rel/0.10][IOTDB-949] Fix align by device bug (#1838)
---
.../java/org/apache/iotdb/db/metadata/MTree.java | 5 +-
.../iotdb/db/integration/IoTDBAlignByDeviceIT.java | 64 ++++++++++++++++++++++
2 files changed, 68 insertions(+), 1 deletion(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
b/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
index 254b549..3f2648a 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
@@ -802,7 +802,7 @@ public class MTree implements Serializable {
*/
private void findDevices(MNode node, String[] nodes, int idx, String parent,
Set<String> res) {
String nodeReg = MetaUtils.getNodeRegByIdx(idx, nodes);
- if (!(PATH_WILDCARD).equals(nodeReg)) {
+ if (!nodeReg.contains(PATH_WILDCARD)) {
if (node.hasChild(nodeReg)) {
if (node.getChild(nodeReg) instanceof LeafMNode) {
res.add(parent + node.getName());
@@ -814,6 +814,9 @@ public class MTree implements Serializable {
} else {
boolean deviceAdded = false;
for (MNode child : node.getChildren().values()) {
+ if (!Pattern.matches(nodeReg.replace("*", ".*"), child.getName())) {
+ continue;
+ }
if (child instanceof LeafMNode && !deviceAdded) {
res.add(parent + node.getName());
deviceAdded = true;
diff --git
a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAlignByDeviceIT.java
b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAlignByDeviceIT.java
index 992e826..a7dd86d 100644
---
a/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAlignByDeviceIT.java
+++
b/server/src/test/java/org/apache/iotdb/db/integration/IoTDBAlignByDeviceIT.java
@@ -1044,4 +1044,68 @@ public class IoTDBAlignByDeviceIT {
fail(e.getMessage());
}
}
+
+ @Test
+ public void selectWithStarTest() throws ClassNotFoundException {
+ String[] retArray = new String[]{
+ "1,root.vehicle.d0,101,1101,null,null,null,",
+ "2,root.vehicle.d0,10000,40000,2.22,null,null,",
+ "3,root.vehicle.d0,null,null,3.33,null,null,",
+ "4,root.vehicle.d0,null,null,4.44,null,null,",
+ "50,root.vehicle.d0,10000,50000,null,null,null,",
+ "60,root.vehicle.d0,null,null,null,aaaaa,null,",
+ "70,root.vehicle.d0,null,null,null,bbbbb,null,",
+ "80,root.vehicle.d0,null,null,null,ccccc,null,",
+ "100,root.vehicle.d0,99,199,null,null,true,",
+ "101,root.vehicle.d0,99,199,null,ddddd,null,",
+ "102,root.vehicle.d0,80,180,10.0,fffff,null,",
+ "103,root.vehicle.d0,99,199,null,null,null,",
+ "104,root.vehicle.d0,90,190,null,null,null,",
+ "105,root.vehicle.d0,99,199,11.11,null,null,",
+ "106,root.vehicle.d0,99,null,null,null,null,",
+ "1000,root.vehicle.d0,22222,55555,1000.11,null,null,",
+ "946684800000,root.vehicle.d0,null,100,null,good,null,",
+ "1,root.vehicle.d1,999,null,null,null,null,",
+ "1000,root.vehicle.d1,888,null,null,null,null,",
+ };
+
+ Class.forName(Config.JDBC_DRIVER_NAME);
+ try (Connection connection = DriverManager
+ .getConnection(Config.IOTDB_URL_PREFIX + "127.0.0.1:6667/",
"root", "root");
+ Statement statement = connection.createStatement()) {
+ boolean hasResultSet = statement.execute(
+ "select * from root.vehicle.d* align by device");
+ Assert.assertTrue(hasResultSet);
+
+ try (ResultSet resultSet = statement.getResultSet()) {
+ ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
+ StringBuilder header = new StringBuilder();
+ for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
+ header.append(resultSetMetaData.getColumnName(i)).append(",");
+ }
+ Assert.assertEquals("Time,Device,s0,s1,s2,s3,s4,", header.toString());
+ Assert.assertEquals(Types.TIMESTAMP,
resultSetMetaData.getColumnType(1));
+ Assert.assertEquals(Types.VARCHAR, resultSetMetaData.getColumnType(2));
+ Assert.assertEquals(Types.INTEGER, resultSetMetaData.getColumnType(3));
+ Assert.assertEquals(Types.BIGINT, resultSetMetaData.getColumnType(4));
+ Assert.assertEquals(Types.FLOAT, resultSetMetaData.getColumnType(5));
+ Assert.assertEquals(Types.VARCHAR, resultSetMetaData.getColumnType(6));
+ Assert.assertEquals(Types.BOOLEAN, resultSetMetaData.getColumnType(7));
+
+ int cnt = 0;
+ while (resultSet.next()) {
+ StringBuilder builder = new StringBuilder();
+ for (int i = 1; i <= resultSetMetaData.getColumnCount(); i++) {
+ builder.append(resultSet.getString(i)).append(",");
+ }
+ Assert.assertEquals(retArray[cnt], builder.toString());
+ cnt++;
+ }
+ Assert.assertEquals(19, cnt);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail(e.getMessage());
+ }
+ }
}