This is an automated email from the ASF dual-hosted git repository. jt2594838 pushed a commit to branch add_flat_device in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 5ce8b461cf292baa2f0d6709556a4a89bdcc3f08 Author: Tian Jiang <[email protected]> AuthorDate: Wed Sep 23 09:10:49 2026 +0800 tmp --- .../dataregion/memtable/AlignedWritableMemChunk.java | 6 ++++++ .../iotdb/db/utils/datastructure/AlignedTVListFactory.java | 11 +---------- .../dataregion/memtable/FlatDeviceMemTableDeletionTest.java | 4 +++- .../dataregion/memtable/MemChunkDeserializeTest.java | 4 +++- .../iotdb/db/utils/datastructure/AlignedTVListTest.java | 7 ++++++- .../db/utils/datastructure/ColumnSortedAlignedTVListTest.java | 10 ++++++++-- 6 files changed, 27 insertions(+), 15 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 f012e9c3561..e1eb0944600 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 @@ -199,6 +199,9 @@ public class AlignedWritableMemChunk extends AbstractWritableMemChunk { // Keep the chunk's schema order mutable because late schema discovery may append a TAG. this.schemaList = new ArrayList<>(schemaList); this.useColumnSortedList = useColumnSortedList; + if (useColumnSortedList) { + Objects.requireNonNull(physicalDeviceId); + } this.physicalDeviceId = physicalDeviceId; for (int i = 0; i < schemaList.size(); i++) { measurementIndexMap.put(schemaList.get(i).getMeasurementName(), i); @@ -236,6 +239,9 @@ public class AlignedWritableMemChunk extends AbstractWritableMemChunk { this.measurementCategoryMap = new LinkedHashMap<>(); this.schemaList = new ArrayList<>(schemaList); this.useColumnSortedList = list instanceof ColumnSortedAlignedTVList; + if (list instanceof FlatDeviceAlignedTVList) { + Objects.requireNonNull(physicalDeviceId); + } this.physicalDeviceId = physicalDeviceId; this.sortColumnIndices = this.useColumnSortedList diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVListFactory.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVListFactory.java index 2880e534865..4fc8f3662ac 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVListFactory.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVListFactory.java @@ -19,7 +19,6 @@ package org.apache.iotdb.db.utils.datastructure; -import org.apache.iotdb.commons.utils.TestOnly; import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.file.metadata.IDeviceID; @@ -70,11 +69,6 @@ public final class AlignedTVListFactory { dataTypes, tagIndices, true, physicalDeviceId.getTableName()); } - @TestOnly - public static AlignedTVList deserialize(DataInputStream stream) throws IOException { - return deserialize(stream, null); - } - public static AlignedTVList deserialize(DataInputStream stream, IDeviceID physicalDeviceId) throws IOException { byte encodedDataType = stream.readByte(); @@ -82,10 +76,7 @@ public final class AlignedTVListFactory { if (encodedDataType == FlatDeviceAlignedTVList.WAL_DATA_TYPE_MARKER) { Objects.requireNonNull(physicalDeviceId); return ColumnSortedAlignedTVList.deserialize( - stream, - dataTypeCount, - true, - physicalDeviceId.getTableName()); + stream, dataTypeCount, true, physicalDeviceId.getTableName()); } return AlignedTVList.deserialize( diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/FlatDeviceMemTableDeletionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/FlatDeviceMemTableDeletionTest.java index bd3e29674e9..3d60d0754a7 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/FlatDeviceMemTableDeletionTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/FlatDeviceMemTableDeletionTest.java @@ -183,7 +183,9 @@ public class FlatDeviceMemTableDeletionTest { assertFalse(buffer.hasRemaining()); AlignedWritableMemChunk recovered = AlignedWritableMemChunk.deserialize( - new DataInputStream(new ByteArrayInputStream(buffer.array())), true, Factory.DEFAULT_FACTORY.create(new String[] {"place_holder"})); + new DataInputStream(new ByteArrayInputStream(buffer.array())), + true, + Factory.DEFAULT_FACTORY.create(new String[] {"place_holder"})); try { recovered.getWorkingTVList().sort(); assertEquals(List.of(20L), remainingValues(recovered.getWorkingTVList(), 2)); diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/MemChunkDeserializeTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/MemChunkDeserializeTest.java index 320bb1503b8..6b4ac9645c5 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/MemChunkDeserializeTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/memtable/MemChunkDeserializeTest.java @@ -262,7 +262,9 @@ public class MemChunkDeserializeTest { series.serializeToWAL(walBuffer); DataInputStream inputStream = new DataInputStream(new ByteArrayInputStream(walBuffer.getBuffer().array())); - AlignedWritableMemChunk memChunk = AlignedWritableMemChunk.deserialize(inputStream, false, Factory.DEFAULT_FACTORY.create(new String[]{"place_holder"})); + AlignedWritableMemChunk memChunk = + AlignedWritableMemChunk.deserialize( + inputStream, false, Factory.DEFAULT_FACTORY.create(new String[] {"place_holder"})); AlignedReadOnlyMemChunk readableChunk = (AlignedReadOnlyMemChunk) getAlignedReadOnlyChunk(memChunk, schemaList, measurementList); diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/AlignedTVListTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/AlignedTVListTest.java index 09452b50838..df80d0913b6 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/AlignedTVListTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/AlignedTVListTest.java @@ -25,6 +25,7 @@ import org.apache.iotdb.rpc.TSStatusCode; import org.apache.tsfile.common.conf.TSFileConfig; import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.external.commons.lang3.ArrayUtils; +import org.apache.tsfile.file.metadata.IDeviceID; import org.apache.tsfile.utils.Binary; import org.apache.tsfile.utils.BitMap; import org.junit.Assert; @@ -47,6 +48,9 @@ import static org.apache.tsfile.utils.RamUsageEstimator.NUM_BYTES_OBJECT_REF; public class AlignedTVListTest { + private static final IDeviceID TEST_DEVICE = + IDeviceID.Factory.DEFAULT_FACTORY.create("test_table"); + @Test public void testValueListArrayMemCostExcludesLazyBitmapAndNullPlaceholder() { long expected = (long) ARRAY_SIZE * Long.BYTES + NUM_BYTES_ARRAY_HEADER + NUM_BYTES_OBJECT_REF; @@ -500,7 +504,8 @@ public class AlignedTVListTest { tvList.serializeToWAL(walBuffer); AlignedTVList deserializedTvList = AlignedTVListFactory.deserialize( - new DataInputStream(new ByteArrayInputStream(walBuffer.getBuffer().array()))); + new DataInputStream(new ByteArrayInputStream(walBuffer.getBuffer().array())), + TEST_DEVICE); Assert.assertEquals(tvList.rowCount(), deserializedTvList.rowCount()); Assert.assertEquals("[null, null]", deserializedTvList.getAlignedValue(0).toString()); diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/ColumnSortedAlignedTVListTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/ColumnSortedAlignedTVListTest.java index d642ef4ac1c..1e34b2ca257 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/ColumnSortedAlignedTVListTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/datastructure/ColumnSortedAlignedTVListTest.java @@ -25,6 +25,7 @@ import org.apache.iotdb.db.storageengine.dataregion.wal.utils.WALByteBufferForTe import org.apache.tsfile.common.conf.TSFileConfig; import org.apache.tsfile.enums.TSDataType; +import org.apache.tsfile.file.metadata.IDeviceID; import org.apache.tsfile.file.metadata.enums.TSEncoding; import org.apache.tsfile.read.TimeValuePair; import org.apache.tsfile.read.common.TimeRange; @@ -46,6 +47,9 @@ import java.util.Set; public class ColumnSortedAlignedTVListTest { + private static final IDeviceID TEST_DEVICE = + IDeviceID.Factory.DEFAULT_FACTORY.create("test_table"); + private static final List<TSDataType> COMPOUND_ROW_TYPES = List.of(TSDataType.STRING, TSDataType.INT64); private static final List<TSEncoding> COMPOUND_ROW_ENCODINGS = @@ -197,7 +201,8 @@ public class ColumnSortedAlignedTVListTest { DataInputStream standardStream = new DataInputStream(new ByteArrayInputStream(standardBuffer.array())); Assert.assertFalse( - AlignedTVListFactory.deserialize(standardStream) instanceof ColumnSortedAlignedTVList); + AlignedTVListFactory.deserialize(standardStream, TEST_DEVICE) + instanceof ColumnSortedAlignedTVList); Assert.assertEquals(123, standardStream.readInt()); } @@ -667,6 +672,7 @@ public class ColumnSortedAlignedTVListTest { } private static AlignedTVList deserialize(byte[] bytes) throws IOException { - return AlignedTVListFactory.deserialize(new DataInputStream(new ByteArrayInputStream(bytes))); + return AlignedTVListFactory.deserialize( + new DataInputStream(new ByteArrayInputStream(bytes)), TEST_DEVICE); } }
