This is an automated email from the ASF dual-hosted git repository.
zyk pushed a commit to branch rel/0.13
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/rel/0.13 by this push:
new 89f0d61a32 [To rel/0.13][IOTDB-3894]Fix last cache with template #6761
89f0d61a32 is described below
commit 89f0d61a328936b10a07cc046f5e4ab7919cfd59
Author: Marcos_Zyk <[email protected]>
AuthorDate: Tue Jul 26 08:41:27 2022 +0800
[To rel/0.13][IOTDB-3894]Fix last cache with template #6761
[To rel/0.13][IOTDB-3894]Fix last cache with template #6761
---
.../db/integration/IoTDBSchemaTemplateIT.java | 43 ++++++++++++++++++++++
.../org/apache/iotdb/db/metadata/mtree/MTree.java | 8 ++++
2 files changed, 51 insertions(+)
diff --git
a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSchemaTemplateIT.java
b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSchemaTemplateIT.java
index 8e507dab17..ed7ef9b4a3 100644
---
a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSchemaTemplateIT.java
+++
b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSchemaTemplateIT.java
@@ -31,6 +31,11 @@ import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
+import static org.apache.iotdb.db.constant.TestConstant.DATA_TYPE_STR;
+import static org.apache.iotdb.db.constant.TestConstant.TIMESEIRES_STR;
+import static org.apache.iotdb.db.constant.TestConstant.TIMESTAMP_STR;
+import static org.apache.iotdb.db.constant.TestConstant.VALUE_STR;
+
/**
* Notice that, all test begins with "IoTDB" is integration test. All test
which will start the
* IoTDB server should be defined as integration test.
@@ -409,4 +414,42 @@ public class IoTDBSchemaTemplateIT {
statement.execute("CREATE SCHEMA TEMPLATE t1 (s1 INT64, s2 DOUBLE)");
statement.execute("CREATE SCHEMA TEMPLATE t2 aligned (s1 INT64, s2
DOUBLE)");
}
+
+ @Test
+ public void testLastCacheWithTemplate() throws SQLException {
+ statement.execute("set storage group to root.clsu1");
+ statement.execute("set schema template t1 to root.clsu1");
+ statement.execute("insert into root.clsu1.device1(time, s1) values(220,
200)");
+ statement.execute("insert into root.clsu1.device2(time, s1) values(320,
200)");
+
+ String[] lastQuerySqlArray =
+ new String[] {
+ "select last s1 from root.clsu1.device1",
+ "select last s1 from root.clsu1.device2",
+ "select last s1 from root.clsu1.device2",
+ };
+
+ String[] retArray =
+ new String[] {
+ "root.clsu1.device1.s1,220,200,INT64",
+ "root.clsu1.device2.s1,320,200,INT64",
+ "root.clsu1.device2.s1,320,200,INT64",
+ };
+
+ for (int i = 0; i < retArray.length; i++) {
+ statement.execute(lastQuerySqlArray[i]);
+ ResultSet resultSet = statement.getResultSet();
+ while (resultSet.next()) {
+ String ans =
+ resultSet.getString(TIMESEIRES_STR)
+ + ","
+ + resultSet.getString(TIMESTAMP_STR)
+ + ","
+ + resultSet.getString(VALUE_STR)
+ + ","
+ + resultSet.getString(DATA_TYPE_STR);
+ Assert.assertEquals(retArray[i], ans);
+ }
+ }
+ }
}
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTree.java
b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTree.java
index 1ddbeaef52..4e74440488 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTree.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/mtree/MTree.java
@@ -1406,6 +1406,14 @@ public class MTree implements Serializable {
throw new PathNotExistException(path.getFullPath(), true);
}
next = upperTemplate.getDirectNode(nodes[i]);
+ if (next.isMeasurement()) {
+ next =
+ MeasurementMNode.getMeasurementMNode(
+ cur.getAsEntityMNode(),
+ next.getName(),
+ next.getAsMeasurementMNode().getSchema(),
+ null);
+ }
}
cur = next;
}