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

jackietien pushed a commit to branch ty/TableModelGrammar
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/ty/TableModelGrammar by this 
push:
     new f0a80aa510a [Table Model] Fix activeScan error due to heterogeneous 
IDeviceID
f0a80aa510a is described below

commit f0a80aa510a6b553acef33af2610c19d571d5c14
Author: YangCaiyin <[email protected]>
AuthorDate: Thu Jul 25 09:59:54 2024 +0800

    [Table Model] Fix activeScan error due to heterogeneous IDeviceID
---
 .../apache/iotdb/db/it/IoTDBInsertWithQueryIT.java |  6 ++---
 .../db/it/fill/IoTDBFillWithNewDataTypeIT.java     | 26 +++++++++++-----------
 .../iotdb/db/it/selectinto/IoTDBSelectIntoIT.java  |  4 ++--
 .../IoTDBOrderByWithAlignByDevice2IT.java          |  1 +
 .../IoTDBOrderByWithAlignByDevice3IT.java          |  1 +
 .../iotdb/relational/it/schema/IoTDBTableIT.java   |  4 ++--
 .../source/relational/TableScanOperator.java       |  4 ++--
 .../plan/planner/OperatorTreeGenerator.java        |  4 ++--
 .../plan/planner/plan/node/PlanNodeType.java       |  6 +++++
 .../plan/relational/sql/ast/LikePredicate.java     | 13 +++++++++--
 10 files changed, 43 insertions(+), 26 deletions(-)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBInsertWithQueryIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBInsertWithQueryIT.java
index d237423c52f..e9823c505b1 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBInsertWithQueryIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/IoTDBInsertWithQueryIT.java
@@ -450,9 +450,9 @@ public class IoTDBInsertWithQueryIT {
         };
     String[] retArray =
         new String[] {
-          "-9223372036854775807,-9223372036854775807,",
-          "-2208952800000,-2208952800000,",
-          "-999999,-9999999,"
+          "-9223372036854775807,-292275055-05-16T16:47:04.193Z,",
+          "-2208952800000,1900-01-01T10:00:00.000Z,",
+          "-999999,1969-12-31T21:13:20.001Z,"
         };
     resultSetEqualTest("SELECT s2 FROM root.fans.d0;", expectedHeader, 
retArray);
   }
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/fill/IoTDBFillWithNewDataTypeIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/fill/IoTDBFillWithNewDataTypeIT.java
index 64f246d316b..321edef0f40 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/db/it/fill/IoTDBFillWithNewDataTypeIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/fill/IoTDBFillWithNewDataTypeIT.java
@@ -88,9 +88,9 @@ public class IoTDBFillWithNewDataTypeIT {
 
     String[] resultSet =
         new String[] {
-          "1,1.1,852076800001,Hong 
Kong,0x486f6e67204b6f6e6720426c6f6221,1997-07-01,",
-          "2,1.2,2,2,null,null,",
-          "3,1.3,852249600001,Hong 
Kong-3,0x486f6e67204b6f6e6720426c6f6224,1997-07-03,",
+          "1,1.1,1997-01-01T00:00:00.001Z,Hong 
Kong,0x486f6e67204b6f6e6720426c6f6221,1997-07-01,",
+          "2,1.2,1970-01-01T00:00:00.002Z,2,null,null,",
+          "3,1.3,1997-01-03T00:00:00.001Z,Hong 
Kong-3,0x486f6e67204b6f6e6720426c6f6224,1997-07-03,",
         };
 
     String expectedQueryHeader =
@@ -100,9 +100,9 @@ public class IoTDBFillWithNewDataTypeIT {
 
     resultSet =
         new String[] {
-          "1,1.1,852076800001,Hong 
Kong,0x486f6e67204b6f6e6720426c6f6221,1997-07-01,",
+          "1,1.1,1997-01-01T00:00:00.001Z,Hong 
Kong,0x486f6e67204b6f6e6720426c6f6221,1997-07-01,",
           "2,1.2,null,1997-07-02,null,1997-07-02,",
-          "3,1.3,852249600001,Hong 
Kong-3,0x486f6e67204b6f6e6720426c6f6224,1997-07-03,",
+          "3,1.3,1997-01-03T00:00:00.001Z,Hong 
Kong-3,0x486f6e67204b6f6e6720426c6f6224,1997-07-03,",
         };
 
     resultSetEqualTest(
@@ -112,9 +112,9 @@ public class IoTDBFillWithNewDataTypeIT {
 
     resultSet =
         new String[] {
-          "1,1.1,852076800001,Hong 
Kong,0x486f6e67204b6f6e6720426c6f6221,1997-07-01,",
+          "1,1.1,1997-01-01T00:00:00.001Z,Hong 
Kong,0x486f6e67204b6f6e6720426c6f6221,1997-07-01,",
           "2,1.2,null,Hong Kong-2,null,null,",
-          "3,1.3,852249600001,Hong 
Kong-3,0x486f6e67204b6f6e6720426c6f6224,1997-07-03,",
+          "3,1.3,1997-01-03T00:00:00.001Z,Hong 
Kong-3,0x486f6e67204b6f6e6720426c6f6224,1997-07-03,",
         };
 
     resultSetEqualTest(
@@ -124,9 +124,9 @@ public class IoTDBFillWithNewDataTypeIT {
 
     resultSet =
         new String[] {
-          "1,1.1,852076800001,Hong 
Kong,0x486f6e67204b6f6e6720426c6f6221,1997-07-01,",
-          "2,1.2,852076800001,Hong 
Kong,0x486f6e67204b6f6e6720426c6f6221,1997-07-01,",
-          "3,1.3,852249600001,Hong 
Kong-3,0x486f6e67204b6f6e6720426c6f6224,1997-07-03,",
+          "1,1.1,1997-01-01T00:00:00.001Z,Hong 
Kong,0x486f6e67204b6f6e6720426c6f6221,1997-07-01,",
+          "2,1.2,1997-01-01T00:00:00.001Z,Hong 
Kong,0x486f6e67204b6f6e6720426c6f6221,1997-07-01,",
+          "3,1.3,1997-01-03T00:00:00.001Z,Hong 
Kong-3,0x486f6e67204b6f6e6720426c6f6224,1997-07-03,",
         };
 
     resultSetEqualTest(
@@ -134,9 +134,9 @@ public class IoTDBFillWithNewDataTypeIT {
 
     resultSet =
         new String[] {
-          "1,1.1,852076800001,Hong 
Kong,0x486f6e67204b6f6e6720426c6f6221,1997-07-01,",
-          "2,1.2,852163200001,null,null,1997-07-02,",
-          "3,1.3,852249600001,Hong 
Kong-3,0x486f6e67204b6f6e6720426c6f6224,1997-07-03,",
+          "1,1.1,1997-01-01T00:00:00.001Z,Hong 
Kong,0x486f6e67204b6f6e6720426c6f6221,1997-07-01,",
+          "2,1.2,1997-01-02T00:00:00.001Z,null,null,1997-07-02,",
+          "3,1.3,1997-01-03T00:00:00.001Z,Hong 
Kong-3,0x486f6e67204b6f6e6720426c6f6224,1997-07-03,",
         };
 
     resultSetEqualTest(
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectIntoIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectIntoIT.java
index 90c5ea65725..87be3ade269 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectIntoIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/db/it/selectinto/IoTDBSelectIntoIT.java
@@ -778,8 +778,8 @@ public class IoTDBSelectIntoIT {
 
     String[] resultSet =
         new String[] {
-          "1,852076800001,Hong 
Kong,0x486f6e67204b6f6e6720426c6f6221,1997-07-01,",
-          "3,852249600001,Hong 
Kong-3,0x486f6e67204b6f6e6720426c6f6224,1997-07-03,",
+          "1,1997-01-01T00:00:00.001Z,Hong 
Kong,0x486f6e67204b6f6e6720426c6f6221,1997-07-01,",
+          "3,1997-01-03T00:00:00.001Z,Hong 
Kong-3,0x486f6e67204b6f6e6720426c6f6224,1997-07-03,",
         };
 
     String expectedQueryHeader = 
"Time,root.db.d2.s7,root.db.d2.s8,root.db.d2.s9,root.db.d2.s10,";
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/query/old/alignbydevice/IoTDBOrderByWithAlignByDevice2IT.java
 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/query/old/alignbydevice/IoTDBOrderByWithAlignByDevice2IT.java
index 13f82c69f1e..d38319613e7 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/query/old/alignbydevice/IoTDBOrderByWithAlignByDevice2IT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/query/old/alignbydevice/IoTDBOrderByWithAlignByDevice2IT.java
@@ -37,6 +37,7 @@ public class IoTDBOrderByWithAlignByDevice2IT extends 
IoTDBOrderByWithAlignByDev
     
EnvFactory.getEnv().getConfig().getCommonConfig().setDegreeOfParallelism(4);
     EnvFactory.getEnv().initClusterEnvironment();
     insertData();
+    insertData2();
   }
 
   @AfterClass
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/query/old/alignbydevice/IoTDBOrderByWithAlignByDevice3IT.java
 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/query/old/alignbydevice/IoTDBOrderByWithAlignByDevice3IT.java
index c799cb22b21..20ef83b8378 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/query/old/alignbydevice/IoTDBOrderByWithAlignByDevice3IT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/query/old/alignbydevice/IoTDBOrderByWithAlignByDevice3IT.java
@@ -37,6 +37,7 @@ public class IoTDBOrderByWithAlignByDevice3IT extends 
IoTDBOrderByWithAlignByDev
     EnvFactory.getEnv().getConfig().getCommonConfig().setSeriesSlotNum(1);
     EnvFactory.getEnv().initClusterEnvironment();
     insertData();
+    insertData2();
   }
 
   @AfterClass
diff --git 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBTableIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBTableIT.java
index 1394c10d4e5..d96088fb2e9 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBTableIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBTableIT.java
@@ -202,7 +202,7 @@ public class IoTDBTableIT {
 
       String[] columnNames =
           new String[] {
-            "Time", "region_id", "plant_id", "device_id", "model", 
"temperature", "humidity"
+            "time", "region_id", "plant_id", "device_id", "model", 
"temperature", "humidity"
           };
       String[] dataTypes =
           new String[] {"TIMESTAMP", "STRING", "STRING", "STRING", "STRING", 
"FLOAT", "DOUBLE"};
@@ -226,7 +226,7 @@ public class IoTDBTableIT {
         assertEquals(columnNames.length, cnt);
       }
 
-      columnNames = new String[] {"Time", "region_id", "plant_id", "color", 
"temperature", "speed"};
+      columnNames = new String[] {"time", "region_id", "plant_id", "color", 
"temperature", "speed"};
       dataTypes = new String[] {"TIMESTAMP", "STRING", "STRING", "STRING", 
"FLOAT", "DOUBLE"};
       categories = new String[] {"TIME", "ID", "ID", "ATTRIBUTE", 
"MEASUREMENT", "MEASUREMENT"};
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/TableScanOperator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/TableScanOperator.java
index 9e7fec286e9..3d340e09d31 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/TableScanOperator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/TableScanOperator.java
@@ -56,7 +56,6 @@ import static 
org.apache.iotdb.db.queryengine.execution.operator.source.AlignedS
 import static 
org.apache.iotdb.db.queryengine.plan.relational.type.InternalTypeManager.getTSDataType;
 
 public class TableScanOperator extends AbstractSeriesScanOperator {
-
   private static final long INSTANCE_SIZE =
       RamUsageEstimator.shallowSizeOfInstance(TableScanOperator.class);
 
@@ -257,7 +256,8 @@ public class TableScanOperator extends 
AbstractSeriesScanOperator {
 
   @Override
   public boolean isFinished() throws Exception {
-    return currentDeviceIndex >= deviceCount || 
seriesScanOptions.limitConsumedUp();
+    return (retainedTsBlock == null)
+        && (currentDeviceIndex >= deviceCount || 
seriesScanOptions.limitConsumedUp());
   }
 
   @Override
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
index 39d3011a0d0..ac8e0981cb2 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/OperatorTreeGenerator.java
@@ -3653,7 +3653,7 @@ public class OperatorTreeGenerator extends 
PlanVisitor<Operator, LocalExecutionP
     for (Map.Entry<PartialPath, DeviceContext> entry :
         node.getDevicePathToContextMap().entrySet()) {
       PartialPath devicePath = entry.getKey();
-      IDeviceID deviceID = 
IDeviceID.Factory.DEFAULT_FACTORY.create(devicePath.getNodes());
+      IDeviceID deviceID = 
IDeviceID.Factory.DEFAULT_FACTORY.create(devicePath.getFullPath());
       deviceIDToContext.put(deviceID, entry.getValue());
       ttlCache.put(deviceID, DataNodeTTLCache.getInstance().getTTL(deviceID));
     }
@@ -3692,7 +3692,7 @@ public class OperatorTreeGenerator extends 
PlanVisitor<Operator, LocalExecutionP
     for (Map.Entry<PartialPath, Map<PartialPath, List<TimeseriesContext>>> 
entryMap :
         node.getDeviceToTimeseriesSchemaInfo().entrySet()) {
       PartialPath devicePath = entryMap.getKey();
-      IDeviceID deviceID = 
IDeviceID.Factory.DEFAULT_FACTORY.create(devicePath.getNodes());
+      IDeviceID deviceID = 
IDeviceID.Factory.DEFAULT_FACTORY.create(devicePath.getFullPath());
       Map<String, TimeseriesContext> timeseriesSchemaInfoMap =
           getTimeseriesSchemaInfoMap(entryMap, dataDriverContext);
       timeseriesToSchemaInfo.put(deviceID, timeseriesSchemaInfoMap);
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNodeType.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNodeType.java
index 77183c48342..d606ade65a3 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNodeType.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanNodeType.java
@@ -114,7 +114,9 @@ import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertTablet
 import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.RelationalInsertRowNode;
 import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.RelationalInsertRowsNode;
 import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.RelationalInsertTabletNode;
+import 
org.apache.iotdb.db.queryengine.plan.relational.planner.node.CollectNode;
 import 
org.apache.iotdb.db.queryengine.plan.relational.planner.node.CreateTableDeviceNode;
+import 
org.apache.iotdb.db.queryengine.plan.relational.planner.node.StreamSortNode;
 
 import org.apache.tsfile.utils.ReadWriteIOUtils;
 
@@ -539,6 +541,10 @@ public enum PlanNodeType {
             .deserialize(buffer);
       case 1008:
         return TopKNode.deserialize(buffer);
+      case 1009:
+        return CollectNode.deserialize(buffer);
+      case 1010:
+        return StreamSortNode.deserialize(buffer);
       case 2000:
         return RelationalInsertTabletNode.deserialize(buffer);
       case 2001:
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/LikePredicate.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/LikePredicate.java
index 53ab836a94a..9b8394e18ba 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/LikePredicate.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/sql/ast/LikePredicate.java
@@ -20,6 +20,7 @@
 package org.apache.iotdb.db.queryengine.plan.relational.sql.ast;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import javax.annotation.Nullable;
 
@@ -64,7 +65,12 @@ public class LikePredicate extends Expression {
     super(null);
     this.value = Expression.deserialize(byteBuffer);
     this.pattern = Expression.deserialize(byteBuffer);
-    this.escape = Expression.deserialize(byteBuffer);
+    boolean hasEscape = ReadWriteIOUtils.readBool(byteBuffer);
+    if (hasEscape) {
+      this.escape = Expression.deserialize(byteBuffer);
+    } else {
+      this.escape = null;
+    }
   }
 
   @Override
@@ -76,7 +82,10 @@ public class LikePredicate extends Expression {
   protected void serialize(DataOutputStream stream) throws IOException {
     Expression.serialize(value, stream);
     Expression.serialize(pattern, stream);
-    Expression.serialize(escape, stream);
+    ReadWriteIOUtils.write(escape != null, stream);
+    if (escape != null) {
+      Expression.serialize(escape, stream);
+    }
   }
 
   public Expression getValue() {

Reply via email to