This is an automated email from the ASF dual-hosted git repository. haonan pushed a commit to branch h/TableModelWrite in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 557084b28c6e0b60e81efa39366c5adb3ea37273 Author: HTHou <[email protected]> AuthorDate: Wed Apr 17 12:26:05 2024 +0800 wal --- .../dataregion/memtable/AbstractMemTable.java | 7 +++---- .../dataregion/memtable/DeviceIDFactory.java | 21 +++++---------------- 2 files changed, 8 insertions(+), 20 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java index f8d7f6a53d7..14cf4d9ff93 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java @@ -40,6 +40,7 @@ import org.apache.iotdb.db.utils.MemUtils; import org.apache.iotdb.metrics.utils.MetricLevel; import org.apache.iotdb.tsfile.file.metadata.IDeviceID; import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID; +import org.apache.iotdb.tsfile.file.metadata.StringArrayDeviceID; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.utils.Pair; import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils; @@ -628,8 +629,7 @@ public abstract class AbstractMemTable implements IMemTable { buffer.putInt(memTableMap.size()); for (Map.Entry<IDeviceID, IWritableMemChunkGroup> entry : memTableMap.entrySet()) { - WALWriteUtils.write(((PlainDeviceID) entry.getKey()).toStringID(), buffer); - + WALWriteUtils.write(entry.getKey(), buffer); IWritableMemChunkGroup memChunkGroup = entry.getValue(); WALWriteUtils.write(memChunkGroup instanceof AlignedWritableMemChunkGroup, buffer); memChunkGroup.serializeToWAL(buffer); @@ -647,8 +647,7 @@ public abstract class AbstractMemTable implements IMemTable { int memTableMapSize = stream.readInt(); for (int i = 0; i < memTableMapSize; ++i) { - - IDeviceID deviceID = deviceIDFactory.getDeviceID(ReadWriteIOUtils.readString(stream)); + IDeviceID deviceID = StringArrayDeviceID.deserialize(stream); boolean isAligned = ReadWriteIOUtils.readBool(stream); IWritableMemChunkGroup memChunkGroup; if (isAligned) { diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/DeviceIDFactory.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/DeviceIDFactory.java index 1a1cd38bc13..c94153842b8 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/DeviceIDFactory.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/DeviceIDFactory.java @@ -21,15 +21,14 @@ package org.apache.iotdb.db.storageengine.dataregion.memtable; import org.apache.iotdb.commons.path.PartialPath; import org.apache.iotdb.commons.utils.TestOnly; -import org.apache.iotdb.db.queryengine.plan.analyze.cache.schema.DataNodeDevicePathCache; import org.apache.iotdb.tsfile.file.metadata.IDeviceID; -import org.apache.iotdb.tsfile.file.metadata.PlainDeviceID; +import org.apache.iotdb.tsfile.file.metadata.StringArrayDeviceID; import java.util.function.Function; /** factory to build device id according to configured algorithm */ public class DeviceIDFactory { - private Function<String, IDeviceID> getDeviceIDFunction; + private Function<String[], IDeviceID> getDeviceIDFunction; // region DeviceIDFactory Singleton private static class DeviceIDFactoryHolder { @@ -51,7 +50,7 @@ public class DeviceIDFactory { } private DeviceIDFactory() { - getDeviceIDFunction = PlainDeviceID::new; + getDeviceIDFunction = StringArrayDeviceID::new; } // endregion @@ -62,22 +61,12 @@ public class DeviceIDFactory { * @return device id of the timeseries */ public IDeviceID getDeviceID(PartialPath devicePath) { - return getDeviceIDFunction.apply(devicePath.getFullPath()); - } - - /** - * get device id by full path - * - * @param devicePath device path of the timeseries - * @return device id of the timeseries - */ - public IDeviceID getDeviceID(String devicePath) { - return getDeviceIDFunction.apply(DataNodeDevicePathCache.getInstance().getDeviceId(devicePath)); + return getDeviceIDFunction.apply(devicePath.getNodes()); } /** reset id method */ @TestOnly public void reset() { - getDeviceIDFunction = PlainDeviceID::new; + getDeviceIDFunction = StringArrayDeviceID::new; } }
