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 2026/10/09 10:29:17 UTC
(iotdb) 03/05: [Storage] Pass table model explicitly to remaining callers
This is an automated email from the ASF dual-hosted git repository.
shuwenwei pushed a commit to branch removeIsTableModelMethod
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 0e2d974e90529ec207212a2b90656d4121b8d31d
Author: shuwenwei <s1...@gmail.com>
AuthorDate: Fri Oct 9 11:49:58 2026 +0800
[Storage] Pass table model explicitly to remaining callers
---
.../query/TsFileInsertionEventQueryParser.java | 3 ++-
...ileInsertionEventQueryParserTabletIterator.java | 2 +-
.../scan/TsFileInsertionEventScanParser.java | 10 ++++++---
...ileInsertionEventTableParserTabletIterator.java | 7 ++++---
.../tsfile/parser/util/ModsOperationUtil.java | 24 ++++++++++++++--------
.../analyze/cache/partition/PartitionCache.java | 13 ++++++------
.../analyze/load/LoadTsFileTableSchemaCache.java | 2 +-
.../analyze/load/LoadTsFileTreeSchemaCache.java | 6 ++++--
.../utils/TreeDiskUsageStatisticUtil.java | 2 +-
9 files changed, 42 insertions(+), 27 deletions(-)
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/parser/query/TsFileInsertionEventQueryParser.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/parser/query/TsFileInsertionEventQueryParser.java
index c26910b426f..e48fb71de7b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/parser/query/TsFileInsertionEventQueryParser.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/parser/query/TsFileInsertionEventQueryParser.java
@@ -320,7 +320,8 @@ public class TsFileInsertionEventQueryParser extends TsFileInsertionEventParser
measurement,
meta.getStatistics().getStartTime(),
meta.getStatistics().getEndTime(),
- currentModifications);
+ currentModifications,
+ false);
} catch (IOException e) {
LOGGER.warn(
DataNodePipeMessages.FAILED_TO_READ_METADATA_FOR_DEVICEID_MEASUREMENT,
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/parser/query/TsFileInsertionEventQueryParserTabletIterator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/parser/query/TsFileInsertionEventQueryParserTabletIterator.java
index 281247e1529..ee27eda4a53 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/parser/query/TsFileInsertionEventQueryParserTabletIterator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/parser/query/TsFileInsertionEventQueryParserTabletIterator.java
@@ -115,7 +115,7 @@ public class TsFileInsertionEventQueryParserTabletIterator implements Iterator<T
this.measurementModsList =
ModsOperationUtil.initializeMeasurementMods(
- deviceId, this.measurements, currentModifications);
+ deviceId, this.measurements, currentModifications, false);
}
private QueryDataSet buildQueryDataSet() throws IOException {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/parser/scan/TsFileInsertionEventScanParser.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/parser/scan/TsFileInsertionEventScanParser.java
index aab44bc6882..23fcd571356 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/parser/scan/TsFileInsertionEventScanParser.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/parser/scan/TsFileInsertionEventScanParser.java
@@ -691,7 +691,10 @@ public class TsFileInsertionEventScanParser extends TsFileInsertionEventParser {
chunkHeader.getCompressionType()));
modsInfos.addAll(
ModsOperationUtil.initializeMeasurementMods(
- currentDevice, Collections.singletonList(measurementID), currentModifications));
+ currentDevice,
+ Collections.singletonList(measurementID),
+ currentModifications,
+ false));
return;
}
case MetaMarker.VALUE_CHUNK_HEADER:
@@ -830,7 +833,8 @@ public class TsFileInsertionEventScanParser extends TsFileInsertionEventParser {
chunkHeader.getMeasurementID(),
statistics.getStartTime(),
statistics.getEndTime(),
- currentModifications)) {
+ currentModifications,
+ false)) {
tsFileSequenceReader.position(nextMarkerOffset);
return true;
}
@@ -999,7 +1003,7 @@ public class TsFileInsertionEventScanParser extends TsFileInsertionEventParser {
chunkHeader.getCompressionType()));
pendingAlignedChunkGroup.modsInfos.addAll(
ModsOperationUtil.initializeMeasurementMods(
- currentDevice, Collections.singletonList(measurementID), currentModifications));
+ currentDevice, Collections.singletonList(measurementID), currentModifications, false));
}
private PendingAlignedChunkGroup getOrCreatePendingAlignedChunkGroup(final int timeChunkIndex) {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/parser/table/TsFileInsertionEventTableParserTabletIterator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/parser/table/TsFileInsertionEventTableParserTabletIterator.java
index 142fbaa88d8..91b613d7987 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/parser/table/TsFileInsertionEventTableParserTabletIterator.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/parser/table/TsFileInsertionEventTableParserTabletIterator.java
@@ -466,7 +466,7 @@ public class TsFileInsertionEventTableParserTabletIterator implements Iterator<T
this.chunkReader = new TableChunkReader(timeChunk, valueChunkList, null);
this.modsInfoList =
- ModsOperationUtil.initializeMeasurementMods(deviceID, measurementList, modifications);
+ ModsOperationUtil.initializeMeasurementMods(deviceID, measurementList, modifications, true);
}
private boolean areAllFieldsDeletedByMods(
@@ -481,7 +481,8 @@ public class TsFileInsertionEventTableParserTabletIterator implements Iterator<T
internMeasurementName(schema),
alignedChunkMetadata.getStartTime(),
alignedChunkMetadata.getEndTime(),
- modifications)) {
+ modifications,
+ true)) {
return false;
}
}
@@ -492,7 +493,7 @@ public class TsFileInsertionEventTableParserTabletIterator implements Iterator<T
final String measurementID, final long startTime, final long endTime) {
return !modifications.isEmpty()
&& ModsOperationUtil.isAllDeletedByMods(
- deviceID, measurementID, startTime, endTime, modifications);
+ deviceID, measurementID, startTime, endTime, modifications, true);
}
private String internMeasurementName(final IMeasurementSchema schema) {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/parser/util/ModsOperationUtil.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/parser/util/ModsOperationUtil.java
index 38487b693e9..bca697be9d2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/parser/util/ModsOperationUtil.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/parser/util/ModsOperationUtil.java
@@ -80,6 +80,7 @@ public class ModsOperationUtil {
* @param startTime start time
* @param endTime end time
* @param modifications modification records
+ * @param isTableModel whether the device belongs to table model
* @return true if data is completely deleted, false otherwise
*/
public static boolean isAllDeletedByMods(
@@ -87,18 +88,20 @@ public class ModsOperationUtil {
String measurementID,
long startTime,
long endTime,
- PatternTreeMap<ModEntry, PatternTreeMapFactory.ModsSerializer> modifications) {
+ PatternTreeMap<ModEntry, PatternTreeMapFactory.ModsSerializer> modifications,
+ boolean isTableModel) {
if (modifications == null) {
return false;
}
- final List<ModEntry> mods = getOverlappedMods(deviceID, measurementID, modifications);
+ final List<ModEntry> mods =
+ getOverlappedMods(deviceID, measurementID, modifications, isTableModel);
if (mods == null || mods.isEmpty()) {
return false;
}
// Different logic for tree model and table model
- if (deviceID.isTableModel()) {
+ if (isTableModel) {
// For table model: check if any modification affects the device and covers the time range
return mods.stream()
.anyMatch(
@@ -119,17 +122,20 @@ public class ModsOperationUtil {
* @param deviceID device ID
* @param measurements measurement list
* @param modifications modification records
+ * @param isTableModel whether the device belongs to table model
* @return mapping from measurement ID to mods list and index
*/
public static List<ModsInfo> initializeMeasurementMods(
IDeviceID deviceID,
List<String> measurements,
- PatternTreeMap<ModEntry, PatternTreeMapFactory.ModsSerializer> modifications) {
+ PatternTreeMap<ModEntry, PatternTreeMapFactory.ModsSerializer> modifications,
+ boolean isTableModel) {
List<ModsInfo> modsInfos = new ArrayList<>(measurements.size());
for (final String measurement : measurements) {
- final List<ModEntry> mods = getOverlappedMods(deviceID, measurement, modifications);
+ final List<ModEntry> mods =
+ getOverlappedMods(deviceID, measurement, modifications, isTableModel);
if (mods == null || mods.isEmpty()) {
// No mods, use empty list and index 0
modsInfos.add(new ModsInfo(Collections.emptyList(), 0));
@@ -139,7 +145,7 @@ public class ModsOperationUtil {
// Sort by time range for efficient lookup
// Different filtering logic for tree model and table model
final List<ModEntry> filteredMods;
- if (deviceID.isTableModel()) {
+ if (isTableModel) {
// For table model: filter modifications that affect the device
filteredMods =
mods.stream()
@@ -161,9 +167,11 @@ public class ModsOperationUtil {
private static List<ModEntry> getOverlappedMods(
final IDeviceID deviceID,
final String measurement,
- final PatternTreeMap<ModEntry, PatternTreeMapFactory.ModsSerializer> modifications) {
+ final PatternTreeMap<ModEntry, PatternTreeMapFactory.ModsSerializer> modifications,
+ final boolean isTableModel) {
try {
- return modifications.getOverlapped(CompactionPathUtils.getPath(deviceID, measurement));
+ return modifications.getOverlapped(
+ CompactionPathUtils.getPath(deviceID, measurement, isTableModel));
} catch (final IllegalPathException e) {
throw new PipeException(e.getMessage(), e);
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/partition/PartitionCache.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/partition/PartitionCache.java
index 0b8dfbed002..03f2d809c0e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/partition/PartitionCache.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/partition/PartitionCache.java
@@ -180,7 +180,7 @@ public class PartitionCache {
map.computeIfAbsent(databaseName, k -> new ArrayList<>()).add(device);
}
};
- getDatabaseCacheResult(result, deviceIDs, tryToFetch, isAutoCreate, userName);
+ getDatabaseCacheResult(result, deviceIDs, tryToFetch, isAutoCreate, userName, false);
return result.getMap();
}
@@ -205,7 +205,7 @@ public class PartitionCache {
map.put(device, databaseName);
}
};
- getDatabaseCacheResult(result, deviceIDs, tryToFetch, isAutoCreate, userName);
+ getDatabaseCacheResult(result, deviceIDs, tryToFetch, isAutoCreate, userName, false);
return result.getMap();
}
@@ -502,7 +502,8 @@ public class PartitionCache {
final List<IDeviceID> deviceIDs,
final boolean tryToFetch,
final boolean isAutoCreate,
- final String userName) {
+ final String userName,
+ final boolean isTableModel) {
if (!isAutoCreate) {
// TODO: avoid IDeviceID contains "*"
// miss when deviceId contains *
@@ -530,13 +531,11 @@ public class PartitionCache {
} else {
// check if it is to auto create the system or audit database
for (IDeviceID deviceID : deviceIDs) {
- if (!deviceID.isTableModel()
- && deviceID.startWith("root." + SystemConstant.SYSTEM_PREFIX_KEY)) {
+ if (!isTableModel && deviceID.startWith("root." + SystemConstant.SYSTEM_PREFIX_KEY)) {
createDatabaseAndUpdateCache(result, Collections.singletonList(deviceID), userName);
break;
}
- if (!deviceID.isTableModel()
- && deviceID.startWith("root." + SystemConstant.AUDIT_PREFIX_KEY)) {
+ if (!isTableModel && deviceID.startWith("root." + SystemConstant.AUDIT_PREFIX_KEY)) {
createDatabaseAndUpdateCache(result, Collections.singletonList(deviceID), userName);
break;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/LoadTsFileTableSchemaCache.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/LoadTsFileTableSchemaCache.java
index 322a86acfd3..63a8adcaea9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/LoadTsFileTableSchemaCache.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/LoadTsFileTableSchemaCache.java
@@ -171,7 +171,7 @@ public class LoadTsFileTableSchemaCache {
public boolean isDeviceDeletedByMods(final IDeviceID device) {
try {
return ModificationUtils.isDeviceDeletedByMods(
- currentModifications, currentTimeIndex, device);
+ currentModifications, currentTimeIndex, device, true);
} catch (final IllegalPathException e) {
LOGGER.warn(
DataNodeQueryMessages
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/LoadTsFileTreeSchemaCache.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/LoadTsFileTreeSchemaCache.java
index 87375b5dfd4..b2ffa01590b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/LoadTsFileTreeSchemaCache.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/LoadTsFileTreeSchemaCache.java
@@ -196,7 +196,8 @@ public class LoadTsFileTreeSchemaCache {
}
public boolean isDeviceDeletedByMods(IDeviceID device) throws IllegalPathException {
- return ModificationUtils.isDeviceDeletedByMods(currentModifications, currentTimeIndex, device);
+ return ModificationUtils.isDeviceDeletedByMods(
+ currentModifications, currentTimeIndex, device, false);
}
public boolean isTimeSeriesDeletedByMods(IDeviceID device, TimeseriesMetadata timeseriesMetadata)
@@ -206,7 +207,8 @@ public class LoadTsFileTreeSchemaCache {
device,
timeseriesMetadata.getMeasurementId(),
timeseriesMetadata.getStatistics().getStartTime(),
- timeseriesMetadata.getStatistics().getEndTime());
+ timeseriesMetadata.getStatistics().getEndTime(),
+ false);
}
public void addAlreadySetDatabase(PartialPath database) {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/TreeDiskUsageStatisticUtil.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/TreeDiskUsageStatisticUtil.java
index ec4d8f03d86..5317f8628d8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/TreeDiskUsageStatisticUtil.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/utils/TreeDiskUsageStatisticUtil.java
@@ -165,6 +165,6 @@ public class TreeDiskUsageStatisticUtil extends DiskUsageStatisticUtil {
}
private boolean matchPathPattern(IDeviceID deviceID) throws IllegalPathException {
- return pathPattern.matchFullPath(CompactionPathUtils.getPath(deviceID));
+ return pathPattern.matchFullPath(CompactionPathUtils.getPath(deviceID, false));
}
}