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 <[email protected]> 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)); } }
