This is an automated email from the ASF dual-hosted git repository.

shuwenwei pushed a commit to branch transferSchemaTreeInBatches
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/transferSchemaTreeInBatches by 
this push:
     new 553d727f387 fix reviewed issues
553d727f387 is described below

commit 553d727f387fc3e624b226eb693f6fea691856d3
Author: shuwenwei <[email protected]>
AuthorDate: Thu Jul 31 10:02:48 2025 +0800

    fix reviewed issues
---
 .../org/apache/iotdb/db/it/orderBy/IoTDBOrderByIT.java  |  4 ++++
 .../operator/schema/SchemaFetchScanOperator.java        |  4 ++--
 .../plan/analyze/schema/ClusterSchemaFetchExecutor.java | 17 +++++++++++++----
 .../operator/schema/SchemaFetchScanOperatorTest.java    |  4 ++--
 4 files changed, 21 insertions(+), 8 deletions(-)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/orderBy/IoTDBOrderByIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/orderBy/IoTDBOrderByIT.java
index 6a65ab1ed7e..8904f04d8bb 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/db/it/orderBy/IoTDBOrderByIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/orderBy/IoTDBOrderByIT.java
@@ -100,6 +100,10 @@ public class IoTDBOrderByIT {
   @BeforeClass
   public static void setUp() throws Exception {
     
EnvFactory.getEnv().getConfig().getDataNodeCommonConfig().setSortBufferSize(1024
 * 1024L);
+    EnvFactory.getEnv()
+        .getConfig()
+        .getDataNodeCommonConfig()
+        .setQueryMemoryProportion("1:100:200:50:200:400:200:50");
     EnvFactory.getEnv().initClusterEnvironment();
     insertData();
   }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaFetchScanOperator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaFetchScanOperator.java
index ac2fd52322d..0f31799f835 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaFetchScanOperator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaFetchScanOperator.java
@@ -163,7 +163,7 @@ public class SchemaFetchScanOperator implements 
SourceOperator {
     boolean isFirstBatch = schemaNodeIteratorForSerialize == null;
     prepareSchemaNodeIteratorForSerialize();
     // to indicate this binary data is database info
-    ReadWriteIOUtils.write((byte) 1, baos);
+    ReadWriteIOUtils.write((byte) 2, baos);
     // the estimated mem cost to deserialize the total schema tree
     if (isFirstBatch) {
       ReadWriteIOUtils.write(schemaTreeMemCost, baos);
@@ -178,7 +178,7 @@ public class SchemaFetchScanOperator implements 
SourceOperator {
     isFinished = !schemaNodeIteratorForSerialize.hasNext();
     if (isFinished) {
       // indicate all continuous binary data is finished
-      currentBatch[0] = 2;
+      currentBatch[0] = 3;
       releaseSchemaTree();
       baos = null;
     }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ClusterSchemaFetchExecutor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ClusterSchemaFetchExecutor.java
index a37d364dfab..b959e05e1c5 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ClusterSchemaFetchExecutor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/ClusterSchemaFetchExecutor.java
@@ -303,14 +303,23 @@ class ClusterSchemaFetchExecutor {
         for (int i = 0; i < size; i++) {
           databaseSet.add(ReadWriteIOUtils.readString(inputStream));
         }
-      } else if (type == 1 || type == 2) {
+      } else if (type == 1) {
+        // for data from old version
+        ClusterSchemaTree deserializedSchemaTree = 
ClusterSchemaTree.deserialize(inputStream);
+        if (context != null) {
+          
context.reserveMemoryForSchemaTree(deserializedSchemaTree.ramBytesUsed());
+        }
+        resultSchemaTree.mergeSchemaTree(deserializedSchemaTree);
+      } else if (type == 2 || type == 3) {
         if (deserializer.isFirstBatch()) {
           long memCost = ReadWriteIOUtils.readLong(inputStream);
-          context.reserveMemoryForSchemaTree(memCost);
+          if (context != null) {
+            context.reserveMemoryForSchemaTree(memCost);
+          }
         }
         deserializer.deserializeFromBatch(inputStream);
-        if (type == 2) {
-          // 'type == 2' indicates this batch is finished
+        if (type == 3) {
+          // 'type == 3' indicates this batch is finished
           resultSchemaTree.mergeSchemaTree(deserializer.finish());
         }
       } else {
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaFetchScanOperatorTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaFetchScanOperatorTest.java
index 7b050dbda9d..6a0a006b0ed 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaFetchScanOperatorTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/queryengine/execution/operator/schema/SchemaFetchScanOperatorTest.java
@@ -101,7 +101,7 @@ public class SchemaFetchScanOperatorTest {
       Binary binary = tsBlock.getColumn(0).getBinary(0);
       InputStream inputStream = new ByteArrayInputStream(binary.getValues());
       if (!deserializer.isFirstBatch()) {
-        Assert.assertEquals(1, type);
+        Assert.assertEquals(2, type);
       }
       type = ReadWriteIOUtils.readByte(inputStream);
       if (deserializer.isFirstBatch()) {
@@ -109,7 +109,7 @@ public class SchemaFetchScanOperatorTest {
       }
       deserializer.deserializeFromBatch(inputStream);
     }
-    Assert.assertEquals(2, type);
+    Assert.assertEquals(3, type);
     Assert.assertFalse(schemaFetchScanOperator.hasNext());
     ClusterSchemaTree schemaTree = deserializer.finish();
 

Reply via email to