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 8814a3c9dca41e4b2e65bdc70f6439fdca16e3a2 Author: shuwenwei <[email protected]> AuthorDate: Fri Oct 9 18:28:40 2026 +0800 [Storage] Fix table TTL lookup in query time bound - take the data model from the data region instead of the "root." device prefix - look up the table TTL with the database name of the data region, because the table cache is keyed by database and table - spotless formatting for the files touched by the previous commit --- .../dataregion/memtable/AlignedWritableMemChunk.java | 8 +++----- .../storageengine/dataregion/memtable/TsFileProcessor.java | 13 ++++++++----- .../AlignedBitmapMemoryAccountingPerformanceTest.java | 3 +-- .../dataregion/memtable/WritableMemChunkRegionScanTest.java | 3 +-- .../test/java/org/apache/iotdb/db/tools/ImportWALTest.java | 12 ++++-------- 5 files changed, 17 insertions(+), 22 deletions(-) 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 54b481de66a..df493067eb0 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 @@ -106,9 +106,7 @@ public class AlignedWritableMemChunk extends AbstractWritableMemChunk { } private AlignedWritableMemChunk( - List<IMeasurementSchema> schemaList, - AlignedTVList list, - EncryptParameter encryptParameter) { + List<IMeasurementSchema> schemaList, AlignedTVList list, EncryptParameter encryptParameter) { this.measurementIndexMap = new LinkedHashMap<>(); this.schemaList = schemaList; for (int i = 0; i < schemaList.size(); i++) { @@ -1235,8 +1233,8 @@ public class AlignedWritableMemChunk extends AbstractWritableMemChunk { return chunk; } - public static AlignedWritableMemChunk deserializeSingleTVListMemChunks( - DataInputStream stream) throws IOException { + public static AlignedWritableMemChunk deserializeSingleTVListMemChunks(DataInputStream stream) + throws IOException { int schemaListSize = stream.readInt(); List<IMeasurementSchema> schemaList = new ArrayList<>(schemaListSize); for (int i = 0; i < schemaListSize; i++) { diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java index 7a89a07a9af..c22dfcf58d1 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java @@ -2644,13 +2644,16 @@ public class TsFileProcessor { } private long getQueryTimeLowerBound(IDeviceID deviceID) { - long ttl; - if (deviceID.getTableName().startsWith("root.")) { - ttl = DataNodeTTLCache.getInstance().getTTLForTree(deviceID); - } else { + final long ttl; + if (isTableModel()) { + // The table TTL is cached by the database and the table, both known from the data region of + // this processor. ttl = DataNodeTTLCache.getInstance() - .getTTLForTable(this.dataRegionName, deviceID.getTableName()); + .getTTLForTable( + dataRegionInfo.getDataRegion().getDatabaseName(), deviceID.getTableName()); + } else { + ttl = DataNodeTTLCache.getInstance().getTTLForTree(deviceID); } return ttl != Long.MAX_VALUE ? CommonUtils.getTTLLowerBound(ttl) : Long.MIN_VALUE; } diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedBitmapMemoryAccountingPerformanceTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedBitmapMemoryAccountingPerformanceTest.java index b9b9fd53685..8da57414e4a 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedBitmapMemoryAccountingPerformanceTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedBitmapMemoryAccountingPerformanceTest.java @@ -289,8 +289,7 @@ public class AlignedBitmapMemoryAccountingPerformanceTest { "0", Collections.singletonMap( deviceId, - new AlignedWritableMemChunkGroup( - memChunk, new ArrayList<>(scenario.schemas)))); + new AlignedWritableMemChunkGroup(memChunk, new ArrayList<>(scenario.schemas)))); return new AccountingTarget(memTable, deviceId); } diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunkRegionScanTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunkRegionScanTest.java index d22e41c35f5..7a4eedccf74 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunkRegionScanTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunkRegionScanTest.java @@ -296,8 +296,7 @@ public class WritableMemChunkRegionScanTest { new MeasurementSchema("s1", TSDataType.INT32), new MeasurementSchema("s2", TSDataType.INT32), new MeasurementSchema("s3", TSDataType.INT32)); - AlignedWritableMemChunk writableMemChunk = - new AlignedWritableMemChunk(measurementSchemas); + AlignedWritableMemChunk writableMemChunk = new AlignedWritableMemChunk(measurementSchemas); int size = 100000; for (int i = 0; i < size; i++) { if (i <= 10000) { diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/ImportWALTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/ImportWALTest.java index bcc5ee2df45..00fb827e2e1 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/ImportWALTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/tools/ImportWALTest.java @@ -322,8 +322,7 @@ public class ImportWALTest { ImportWAL.resolveDirectoryDatabases(files, null, true, null); final IllegalArgumentException failure = assertThrows( - IllegalArgumentException.class, - () -> ImportWAL.requireResolvedDatabases(unresolved)); + IllegalArgumentException.class, () -> ImportWAL.requireResolvedDatabases(unresolved)); // The inferable directory is not reported, the others are listed in directory order. assertTrue(failure.getMessage().contains("0, root.sg-4")); assertTrue(failure.getMessage().contains("-db/--database")); @@ -1590,8 +1589,7 @@ public class ImportWALTest { new Object[] {10, null, DateUtils.parseDateExpressionToInt(firstDate)}); final Session treeSession = mock(Session.class); - new ImportWAL.WALReplayer(treeSession, null, "root.sg") - .replay(new WALInfoEntry(1, memTable)); + new ImportWAL.WALReplayer(treeSession, null, "root.sg").replay(new WALInfoEntry(1, memTable)); final ArgumentCaptor<Tablet> tabletCaptor = ArgumentCaptor.forClass(Tablet.class); verify(treeSession, times(3)).insertTablet(tabletCaptor.capture()); @@ -1637,8 +1635,7 @@ public class ImportWALTest { new Object[] {10, 100L, DateUtils.parseDateExpressionToInt(firstDate)}); final Session treeSession = mock(Session.class); - new ImportWAL.WALReplayer(treeSession, null, "root.sg") - .replay(new WALInfoEntry(1, memTable)); + new ImportWAL.WALReplayer(treeSession, null, "root.sg").replay(new WALInfoEntry(1, memTable)); final ArgumentCaptor<Tablet> tabletCaptor = ArgumentCaptor.forClass(Tablet.class); verify(treeSession).insertAlignedTablet(tabletCaptor.capture()); @@ -1689,8 +1686,7 @@ public class ImportWALTest { } final Session treeSession = mock(Session.class); - new ImportWAL.WALReplayer(treeSession, null, "root.sg") - .replay(new WALInfoEntry(1, memTable)); + new ImportWAL.WALReplayer(treeSession, null, "root.sg").replay(new WALInfoEntry(1, memTable)); final ArgumentCaptor<Tablet> tabletCaptor = ArgumentCaptor.forClass(Tablet.class); verify(treeSession, times(2)).insertTablet(tabletCaptor.capture());
