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;
   }
 }

Reply via email to