You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by sh...@apache.org on 2025/06/05 09:29:54 UTC
(iotdb) 01/01: When the aligned series has some inconsistent types in the memtable, the other column will also be ignored
This is an automated email from the ASF dual-hosted git repository.
shuwenwei pushed a commit to branch ignoreMemChunksWhoseDataTypeNotMatch2
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 9d9edb29297b0e08b8894c5510ed29bc7ea280e4
Author: shuwenwei <s1...@gmail.com>
AuthorDate: Thu Jun 5 17:29:33 2025 +0800
When the aligned series has some inconsistent types in the memtable, the other column will also be ignored
---
.../schemaregion/utils/ResourceByPathUtils.java | 14 +-------------
.../dataregion/memtable/AlignedWritableMemChunk.java | 13 +++++++++++--
2 files changed, 12 insertions(+), 15 deletions(-)
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/ResourceByPathUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/ResourceByPathUtils.java
index e5288adc76d..79d34bd3ee9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/ResourceByPathUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/ResourceByPathUtils.java
@@ -66,7 +66,6 @@ import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -318,18 +317,6 @@ class AlignedResourceByPathUtils extends ResourceByPathUtils {
}
AlignedWritableMemChunk alignedMemChunk =
((AlignedWritableMemChunkGroup) memTableMap.get(deviceID)).getAlignedMemChunk();
-
- // check If data type matches
- Map<String, TSDataType> dataTypeMap = new HashMap<>(alignedMemChunk.getSchemaList().size());
- for (IMeasurementSchema schema : alignedMemChunk.getSchemaList()) {
- dataTypeMap.put(schema.getMeasurementName(), schema.getType());
- }
- for (IMeasurementSchema schema : alignedFullPath.getSchemaList()) {
- TSDataType dataTypeInMemChunk = dataTypeMap.get(schema.getMeasurementName());
- if (dataTypeInMemChunk != null && dataTypeInMemChunk != schema.getType()) {
- return null;
- }
- }
// only need to do this check for tree model
if (context.isIgnoreAllNullRows()) {
boolean containsMeasurement = false;
@@ -350,6 +337,7 @@ class AlignedResourceByPathUtils extends ResourceByPathUtils {
context, alignedMemChunk, modsToMemtable == null, globalTimeFilter);
// column index list for the query
+ // Columns with inconsistent types will be ignored and set -1
List<Integer> columnIndexList =
alignedMemChunk.buildColumnIndexList(alignedFullPath.getSchemaList());
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java
index d20866d0c79..d41ef855d36 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java
@@ -834,9 +834,18 @@ public class AlignedWritableMemChunk extends AbstractWritableMemChunk {
public List<Integer> buildColumnIndexList(List<IMeasurementSchema> schemaList) {
List<Integer> columnIndexList = new ArrayList<>();
- for (IMeasurementSchema measurementSchema : schemaList) {
+ for (IMeasurementSchema requiredMeasurementSchema : schemaList) {
+ Integer measurementIndex =
+ measurementIndexMap.get(requiredMeasurementSchema.getMeasurementName());
+ if (measurementIndex == null) {
+ columnIndexList.add(-1);
+ continue;
+ }
+ IMeasurementSchema schemaInMemChunk = this.schemaList.get(measurementIndex);
columnIndexList.add(
- measurementIndexMap.getOrDefault(measurementSchema.getMeasurementName(), -1));
+ schemaInMemChunk.getType() == requiredMeasurementSchema.getType()
+ ? measurementIndex
+ : -1);
}
return columnIndexList;
}