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() {