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;
     }

Reply via email to