diff --git a/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTask.java b/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTask.java index a3ca350fea24..35b29e7e19af 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTask.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/flush/MemTableFlushTask.java @@ -25,7 +25,7 @@ import org.apache.iotdb.db.engine.memtable.IWritableMemChunk; import org.apache.iotdb.db.engine.memtable.IWritableMemChunkGroup; import org.apache.iotdb.db.exception.runtime.FlushRunTimeException; -import org.apache.iotdb.db.metadata.idtable.entry.IDeviceID; +import org.apache.iotdb.db.metadata.idtable.deviceID.IDeviceID; import org.apache.iotdb.db.rescon.SystemInfo; import org.apache.iotdb.db.service.metrics.MetricService; import org.apache.iotdb.db.service.metrics.enums.Metric; diff --git a/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java b/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java index 91c3375fc1b1..d5e723875c0c 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/memtable/AbstractMemTable.java @@ -26,8 +26,8 @@ import org.apache.iotdb.db.engine.querycontext.ReadOnlyMemChunk; import org.apache.iotdb.db.exception.WriteProcessException; import org.apache.iotdb.db.exception.query.QueryProcessException; +import org.apache.iotdb.db.metadata.idtable.deviceID.IDeviceID; import org.apache.iotdb.db.metadata.idtable.entry.DeviceIDFactory; -import org.apache.iotdb.db.metadata.idtable.entry.IDeviceID; import org.apache.iotdb.db.metadata.utils.ResourceByPathUtils; import org.apache.iotdb.db.mpp.plan.planner.plan.node.write.InsertRowNode; import org.apache.iotdb.db.mpp.plan.planner.plan.node.write.InsertTabletNode; diff --git a/server/src/main/java/org/apache/iotdb/db/engine/memtable/IMemTable.java b/server/src/main/java/org/apache/iotdb/db/engine/memtable/IMemTable.java index adf995e9487b..8e54667e0add 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/memtable/IMemTable.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/memtable/IMemTable.java @@ -25,7 +25,7 @@ import org.apache.iotdb.db.engine.querycontext.ReadOnlyMemChunk; import org.apache.iotdb.db.exception.WriteProcessException; import org.apache.iotdb.db.exception.query.QueryProcessException; -import org.apache.iotdb.db.metadata.idtable.entry.IDeviceID; +import org.apache.iotdb.db.metadata.idtable.deviceID.IDeviceID; import org.apache.iotdb.db.mpp.plan.planner.plan.node.write.InsertRowNode; import org.apache.iotdb.db.mpp.plan.planner.plan.node.write.InsertTabletNode; import org.apache.iotdb.db.qp.physical.crud.InsertRowPlan; diff --git a/server/src/main/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTable.java b/server/src/main/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTable.java index 9bcf4f5807d7..30951af8622d 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTable.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTable.java @@ -19,7 +19,7 @@ package org.apache.iotdb.db.engine.memtable; -import org.apache.iotdb.db.metadata.idtable.entry.IDeviceID; +import org.apache.iotdb.db.metadata.idtable.deviceID.IDeviceID; import java.util.HashMap; import java.util.Map; diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java index 9d1bac5d9953..a6019faa3daf 100644 --- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java +++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java @@ -44,8 +44,8 @@ import org.apache.iotdb.db.exception.WriteProcessException; import org.apache.iotdb.db.exception.WriteProcessRejectException; import org.apache.iotdb.db.exception.query.QueryProcessException; +import org.apache.iotdb.db.metadata.idtable.deviceID.IDeviceID; import org.apache.iotdb.db.metadata.idtable.entry.DeviceIDFactory; -import org.apache.iotdb.db.metadata.idtable.entry.IDeviceID; import org.apache.iotdb.db.metadata.path.AlignedPath; import org.apache.iotdb.db.metadata.utils.ResourceByPathUtils; import org.apache.iotdb.db.mpp.plan.planner.plan.node.write.InsertRowNode; diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/AppendOnlyDiskSchemaManager.java b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/AppendOnlyDiskSchemaManager.java index 785644479144..0d8225a95618 100644 --- a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/AppendOnlyDiskSchemaManager.java +++ b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/AppendOnlyDiskSchemaManager.java @@ -21,6 +21,7 @@ import org.apache.iotdb.commons.exception.MetadataException; import org.apache.iotdb.commons.utils.TestOnly; +import org.apache.iotdb.db.metadata.idtable.deviceID.IStatefulDeviceID; import org.apache.iotdb.db.metadata.idtable.entry.DeviceIDFactory; import org.apache.iotdb.db.metadata.idtable.entry.DiskSchemaEntry; import org.apache.iotdb.db.metadata.idtable.entry.SchemaEntry; @@ -38,6 +39,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.RandomAccessFile; +import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -158,11 +160,29 @@ public void recover(IDTable idTable) { TSEncoding.deserialize(cur.encoding), CompressionType.deserialize(cur.compressor), loc); + if (IStatefulDeviceID.class.isAssignableFrom( + DeviceIDFactory.getInstance().getDeviceIDClass())) { + IStatefulDeviceID statefulDeviceID = + (IStatefulDeviceID) + DeviceIDFactory.getInstance() + .getDeviceIDClass() + .getDeclaredConstructor() + .newInstance(); + statefulDeviceID.recover( + cur.seriesKey.substring( + 0, cur.seriesKey.length() - cur.measurementName.length() - 1), + cur.deviceID); + } idTable.putSchemaEntry(cur.deviceID, cur.measurementName, schemaEntry, cur.isAligned); } loc += cur.entrySize; } - } catch (IOException | MetadataException e) { + } catch (IOException + | MetadataException + | NoSuchMethodException + | InvocationTargetException + | InstantiationException + | IllegalAccessException e) { logger.info("Last entry is incomplete, we will recover as much as we can."); try { outputStream.getChannel().truncate(loc); diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTable.java b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTable.java index fa44865e4e75..199e3698b17d 100644 --- a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTable.java +++ b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTable.java @@ -24,10 +24,10 @@ import org.apache.iotdb.commons.utils.TestOnly; import org.apache.iotdb.db.conf.IoTDBConfig; import org.apache.iotdb.db.conf.IoTDBDescriptor; +import org.apache.iotdb.db.metadata.idtable.deviceID.IDeviceID; import org.apache.iotdb.db.metadata.idtable.entry.DeviceEntry; import org.apache.iotdb.db.metadata.idtable.entry.DeviceIDFactory; import org.apache.iotdb.db.metadata.idtable.entry.DiskSchemaEntry; -import org.apache.iotdb.db.metadata.idtable.entry.IDeviceID; import org.apache.iotdb.db.metadata.idtable.entry.SchemaEntry; import org.apache.iotdb.db.metadata.idtable.entry.TimeseriesID; import org.apache.iotdb.db.metadata.mnode.IMeasurementMNode; diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTableHashmapImpl.java b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTableHashmapImpl.java index af3cb4d9bc03..a02d82558f47 100644 --- a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTableHashmapImpl.java +++ b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTableHashmapImpl.java @@ -25,10 +25,10 @@ import org.apache.iotdb.db.conf.IoTDBConfig; import org.apache.iotdb.db.conf.IoTDBDescriptor; import org.apache.iotdb.db.exception.metadata.DataTypeMismatchException; +import org.apache.iotdb.db.metadata.idtable.deviceID.IDeviceID; import org.apache.iotdb.db.metadata.idtable.entry.DeviceEntry; import org.apache.iotdb.db.metadata.idtable.entry.DeviceIDFactory; import org.apache.iotdb.db.metadata.idtable.entry.DiskSchemaEntry; -import org.apache.iotdb.db.metadata.idtable.entry.IDeviceID; import org.apache.iotdb.db.metadata.idtable.entry.InsertMeasurementMNode; import org.apache.iotdb.db.metadata.idtable.entry.SchemaEntry; import org.apache.iotdb.db.metadata.idtable.entry.TimeseriesID; diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/IDeviceID.java b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/deviceID/IDeviceID.java similarity index 88% rename from server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/IDeviceID.java rename to server/src/main/java/org/apache/iotdb/db/metadata/idtable/deviceID/IDeviceID.java index f83dc525a528..881d41e9d2c6 100644 --- a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/IDeviceID.java +++ b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/deviceID/IDeviceID.java @@ -17,7 +17,7 @@ * under the License. */ -package org.apache.iotdb.db.metadata.idtable.entry; +package org.apache.iotdb.db.metadata.idtable.deviceID; import java.nio.ByteBuffer; @@ -29,7 +29,7 @@ public interface IDeviceID { * * @return string format device id */ - public String toStringID(); + String toStringID(); - public void serialize(ByteBuffer byteBuffer); + void serialize(ByteBuffer byteBuffer); } diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/deviceID/IStatefulDeviceID.java b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/deviceID/IStatefulDeviceID.java new file mode 100644 index 000000000000..34642d49e662 --- /dev/null +++ b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/deviceID/IStatefulDeviceID.java @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.iotdb.db.metadata.idtable.deviceID; + +/** stateful device id interface */ +public interface IStatefulDeviceID extends IDeviceID { + + /** + * recover state from devicePath and deviceID + * + * @param devicePath device path read from the non-volatile storage medium, like: "root.sg.x.d1" + * @param deviceID device ID read from the non-volatile storage medium + */ + void recover(String devicePath, String deviceID); +} diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/PlainDeviceID.java b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/deviceID/PlainDeviceID.java similarity index 97% rename from server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/PlainDeviceID.java rename to server/src/main/java/org/apache/iotdb/db/metadata/idtable/deviceID/PlainDeviceID.java index eac298cd7087..a799d55fd591 100644 --- a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/PlainDeviceID.java +++ b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/deviceID/PlainDeviceID.java @@ -17,7 +17,7 @@ * under the License. */ -package org.apache.iotdb.db.metadata.idtable.entry; +package org.apache.iotdb.db.metadata.idtable.deviceID; import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils; diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/SHA256DeviceID.java b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/deviceID/SHA256DeviceID.java similarity index 98% rename from server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/SHA256DeviceID.java rename to server/src/main/java/org/apache/iotdb/db/metadata/idtable/deviceID/SHA256DeviceID.java index 1042aa698573..db811b1bc303 100644 --- a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/SHA256DeviceID.java +++ b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/deviceID/SHA256DeviceID.java @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.apache.iotdb.db.metadata.idtable.entry; +package org.apache.iotdb.db.metadata.idtable.deviceID; import org.apache.iotdb.db.metadata.idtable.IDTable; import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils; diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/deviceID/StandAloneAutoIncDeviceID.java b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/deviceID/StandAloneAutoIncDeviceID.java new file mode 100644 index 000000000000..2289473f639c --- /dev/null +++ b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/deviceID/StandAloneAutoIncDeviceID.java @@ -0,0 +1,145 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.iotdb.db.metadata.idtable.deviceID; + +import org.apache.iotdb.commons.utils.TestOnly; +import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils; + +import java.nio.ByteBuffer; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +/** Using auto-incrementing int as device id */ +public class StandAloneAutoIncDeviceID implements IStatefulDeviceID { + + // maintain the mapping relationship of devicePath to autoIncrementID,in order reducing memory + // consumption, the devicePath will actually be converted to SHA256DeviceID in advance + private static final Map devicePath2autoIncrementID; + + // increment from 0 + int autoIncrementID; + + static { + devicePath2autoIncrementID = new ConcurrentHashMap<>(); + } + + public StandAloneAutoIncDeviceID() {} + + public StandAloneAutoIncDeviceID(int id) { + this.autoIncrementID = id; + } + + public StandAloneAutoIncDeviceID(String deviceID) { + // if the device id string is a autoIncrementDeviceID form, like: "`1`", + // convert string directly to autoIncrementID + if (deviceID.startsWith("`") && deviceID.endsWith("`")) { + fromAutoIncrementDeviceID(deviceID); + } else { + buildAutoIncrementDeviceID(deviceID); + } + } + + /** + * convert string directly to autoIncrementID + * + * @param deviceID device ID, like: "`1`" + */ + private void fromAutoIncrementDeviceID(String deviceID) { + deviceID = deviceID.substring(1, deviceID.length() - 1); + this.autoIncrementID = Integer.parseInt(deviceID); + } + + /** + * build device id from a device path + * + * @param devicePath device path, like: "root.sg.x.d1" + */ + private void buildAutoIncrementDeviceID(String devicePath) { + SHA256DeviceID sha256DeviceID = new SHA256DeviceID(devicePath); + this.autoIncrementID = + devicePath2autoIncrementID.computeIfAbsent( + sha256DeviceID, + sha256DeviceID1 -> new StandAloneAutoIncDeviceID(devicePath2autoIncrementID.size())) + .autoIncrementID; + } + + /** + * make sure the hashcode of any AutoIncrementDeviceID object with the equal autoIncrementID are + * equal,so use the autoIncrementID of type Long as the hashcode of the object + */ + @Override + public int hashCode() { + return this.autoIncrementID; + } + + /** make sure any AutoIncrementDeviceID objects with equal autoIncrementID variables are equal */ + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof StandAloneAutoIncDeviceID)) { + return false; + } + StandAloneAutoIncDeviceID that = (StandAloneAutoIncDeviceID) o; + return this.autoIncrementID == that.autoIncrementID; + } + + @Override + public String toString() { + return "AutoIncrementDeviceID{" + "autoIncrementID=" + autoIncrementID + '}'; + } + + /** + * to string format + * + * @return string format device id + */ + @Override + public String toStringID() { + return "`" + autoIncrementID + "`"; + } + + /** + * recover map devicePath2autoIncrementID + * + * @param devicePath device path read from the non-volatile storage medium, like: "root.sg.x.d1" + * @param deviceID device ID read from the non-volatile storage medium, like: "" + */ + @Override + public void recover(String devicePath, String deviceID) { + SHA256DeviceID sha256DeviceID = new SHA256DeviceID(devicePath); + fromAutoIncrementDeviceID(deviceID); + devicePath2autoIncrementID.put(sha256DeviceID, this); + } + + @TestOnly + public static void reset() { + devicePath2autoIncrementID.clear(); + } + + @Override + public void serialize(ByteBuffer byteBuffer) { + ReadWriteIOUtils.write(autoIncrementID, byteBuffer); + } + + public static StandAloneAutoIncDeviceID deserialize(ByteBuffer byteBuffer) { + StandAloneAutoIncDeviceID autoIncrementDeviceID = new StandAloneAutoIncDeviceID(); + autoIncrementDeviceID.autoIncrementID = ReadWriteIOUtils.readInt(byteBuffer); + return autoIncrementDeviceID; + } +} diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/DeviceEntry.java b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/DeviceEntry.java index 3ef77edec71b..0f42b41ab463 100644 --- a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/DeviceEntry.java +++ b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/DeviceEntry.java @@ -19,6 +19,8 @@ package org.apache.iotdb.db.metadata.idtable.entry; +import org.apache.iotdb.db.metadata.idtable.deviceID.IDeviceID; + import java.util.HashMap; import java.util.Map; import java.util.Objects; diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/DeviceIDFactory.java b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/DeviceIDFactory.java index 332183cb3bec..3d922ed7162e 100644 --- a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/DeviceIDFactory.java +++ b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/DeviceIDFactory.java @@ -22,6 +22,10 @@ import org.apache.iotdb.commons.path.PartialPath; import org.apache.iotdb.commons.utils.TestOnly; import org.apache.iotdb.db.conf.IoTDBDescriptor; +import org.apache.iotdb.db.metadata.idtable.deviceID.IDeviceID; +import org.apache.iotdb.db.metadata.idtable.deviceID.PlainDeviceID; +import org.apache.iotdb.db.metadata.idtable.deviceID.SHA256DeviceID; +import org.apache.iotdb.db.metadata.idtable.deviceID.StandAloneAutoIncDeviceID; import java.util.function.Function; @@ -49,15 +53,22 @@ public static DeviceIDFactory getInstance() { } private DeviceIDFactory() { - if (IoTDBDescriptor.getInstance().getConfig().isEnableIDTable() - && IoTDBDescriptor.getInstance() - .getConfig() - .getDeviceIDTransformationMethod() - .equals("SHA256")) { - getDeviceIDFunction = SHA256DeviceID::new; - } else { - getDeviceIDFunction = PlainDeviceID::new; + if (IoTDBDescriptor.getInstance().getConfig().isEnableIDTable()) { + if (IoTDBDescriptor.getInstance() + .getConfig() + .getDeviceIDTransformationMethod() + .equals("SHA256")) { + getDeviceIDFunction = SHA256DeviceID::new; + return; + } else if (IoTDBDescriptor.getInstance() + .getConfig() + .getDeviceIDTransformationMethod() + .equals("AutoIncrement_INT")) { + getDeviceIDFunction = StandAloneAutoIncDeviceID::new; + return; + } } + getDeviceIDFunction = PlainDeviceID::new; } // endregion @@ -84,14 +95,39 @@ public IDeviceID getDeviceID(String devicePath) { /** reset id method */ @TestOnly public void reset() { - if (IoTDBDescriptor.getInstance().getConfig().isEnableIDTable() - && IoTDBDescriptor.getInstance() - .getConfig() - .getDeviceIDTransformationMethod() - .equals("SHA256")) { - getDeviceIDFunction = SHA256DeviceID::new; - } else { - getDeviceIDFunction = PlainDeviceID::new; + if (IoTDBDescriptor.getInstance().getConfig().isEnableIDTable()) { + if (IoTDBDescriptor.getInstance() + .getConfig() + .getDeviceIDTransformationMethod() + .equals("SHA256")) { + getDeviceIDFunction = SHA256DeviceID::new; + return; + } else if (IoTDBDescriptor.getInstance() + .getConfig() + .getDeviceIDTransformationMethod() + .equals("AutoIncrement_INT")) { + getDeviceIDFunction = StandAloneAutoIncDeviceID::new; + StandAloneAutoIncDeviceID.reset(); + return; + } } + getDeviceIDFunction = PlainDeviceID::new; + } + + public Class getDeviceIDClass() { + if (IoTDBDescriptor.getInstance().getConfig().isEnableIDTable()) { + if (IoTDBDescriptor.getInstance() + .getConfig() + .getDeviceIDTransformationMethod() + .equals("SHA256")) { + return SHA256DeviceID.class; + } else if (IoTDBDescriptor.getInstance() + .getConfig() + .getDeviceIDTransformationMethod() + .equals("AutoIncrement_INT")) { + return StandAloneAutoIncDeviceID.class; + } + } + return PlainDeviceID.class; } } diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/SchemaEntry.java b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/SchemaEntry.java index bf95324a4b28..589a7d198697 100644 --- a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/SchemaEntry.java +++ b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/SchemaEntry.java @@ -24,6 +24,7 @@ import org.apache.iotdb.db.conf.IoTDBConfig; import org.apache.iotdb.db.conf.IoTDBDescriptor; import org.apache.iotdb.db.metadata.idtable.IDiskSchemaManager; +import org.apache.iotdb.db.metadata.idtable.deviceID.IDeviceID; import org.apache.iotdb.db.metadata.lastCache.container.ILastCacheContainer; import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor; import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType; diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/TimeseriesID.java b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/TimeseriesID.java index 143ddbc3b37e..2d8ce79e2615 100644 --- a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/TimeseriesID.java +++ b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/entry/TimeseriesID.java @@ -19,6 +19,7 @@ package org.apache.iotdb.db.metadata.idtable.entry; import org.apache.iotdb.commons.path.PartialPath; +import org.apache.iotdb.db.metadata.idtable.deviceID.IDeviceID; /** A po class contains device id and measurement, represents a timeseries */ public class TimeseriesID { diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/utils/ResourceByPathUtils.java b/server/src/main/java/org/apache/iotdb/db/metadata/utils/ResourceByPathUtils.java index 74b8c0b59dc7..86aac6721502 100644 --- a/server/src/main/java/org/apache/iotdb/db/metadata/utils/ResourceByPathUtils.java +++ b/server/src/main/java/org/apache/iotdb/db/metadata/utils/ResourceByPathUtils.java @@ -33,8 +33,8 @@ import org.apache.iotdb.db.engine.querycontext.ReadOnlyMemChunk; import org.apache.iotdb.db.engine.storagegroup.TsFileResource; import org.apache.iotdb.db.exception.query.QueryProcessException; +import org.apache.iotdb.db.metadata.idtable.deviceID.IDeviceID; import org.apache.iotdb.db.metadata.idtable.entry.DeviceIDFactory; -import org.apache.iotdb.db.metadata.idtable.entry.IDeviceID; import org.apache.iotdb.db.metadata.path.AlignedPath; import org.apache.iotdb.db.metadata.path.MeasurementPath; import org.apache.iotdb.db.query.context.QueryContext; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertNode.java index 610628b33434..9cfcfccccf1e 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertNode.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertNode.java @@ -23,7 +23,7 @@ import org.apache.iotdb.consensus.multileader.wal.ConsensusReqReader; import org.apache.iotdb.db.conf.IoTDBDescriptor; import org.apache.iotdb.db.exception.metadata.DataTypeMismatchException; -import org.apache.iotdb.db.metadata.idtable.entry.IDeviceID; +import org.apache.iotdb.db.metadata.idtable.deviceID.IDeviceID; import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree; import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId; import org.apache.iotdb.db.mpp.plan.planner.plan.node.WritePlanNode; diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertPlan.java index a5ef81ff12a5..1333692df520 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertPlan.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/InsertPlan.java @@ -21,7 +21,7 @@ import org.apache.iotdb.commons.path.PartialPath; import org.apache.iotdb.db.exception.query.QueryProcessException; -import org.apache.iotdb.db.metadata.idtable.entry.IDeviceID; +import org.apache.iotdb.db.metadata.idtable.deviceID.IDeviceID; import org.apache.iotdb.db.metadata.mnode.IMeasurementMNode; import org.apache.iotdb.db.qp.logical.Operator; import org.apache.iotdb.db.qp.physical.PhysicalPlan; diff --git a/server/src/main/java/org/apache/iotdb/db/wal/recover/file/UnsealedTsFileRecoverPerformer.java b/server/src/main/java/org/apache/iotdb/db/wal/recover/file/UnsealedTsFileRecoverPerformer.java index 926e54a75b22..631a6cfe7e23 100644 --- a/server/src/main/java/org/apache/iotdb/db/wal/recover/file/UnsealedTsFileRecoverPerformer.java +++ b/server/src/main/java/org/apache/iotdb/db/wal/recover/file/UnsealedTsFileRecoverPerformer.java @@ -28,7 +28,7 @@ import org.apache.iotdb.db.engine.storagegroup.TsFileResource; import org.apache.iotdb.db.exception.DataRegionException; import org.apache.iotdb.db.metadata.idtable.IDTable; -import org.apache.iotdb.db.metadata.idtable.entry.IDeviceID; +import org.apache.iotdb.db.metadata.idtable.deviceID.IDeviceID; import org.apache.iotdb.db.mpp.plan.planner.plan.node.write.InsertNode; import org.apache.iotdb.db.qp.physical.crud.DeletePlan; import org.apache.iotdb.db.qp.physical.crud.InsertPlan; diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/AppendOnlyDiskSchemaManagerTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/AppendOnlyDiskSchemaManagerTest.java new file mode 100644 index 000000000000..61016e6696ab --- /dev/null +++ b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/AppendOnlyDiskSchemaManagerTest.java @@ -0,0 +1,114 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.iotdb.db.metadata.idtable; + +public class AppendOnlyDiskSchemaManagerTest { + + // private String systemDir = + // FilePathUtils.regularizePath(IoTDBDescriptor.getInstance().getConfig().getSystemDir()) + // + "storage_groups"; + // + // private String storageGroupPath = "root.AppendOnlyDiskSchemaManagerTest"; + // + // private AppendOnlyDiskSchemaManager appendOnlyDiskSchemaManager; + // + // private boolean isEnableIDTable = false; + // + // private String originalDeviceIDTransformationMethod = null; + // + // @Before + // public void setUp() throws Exception { + // isEnableIDTable = IoTDBDescriptor.getInstance().getConfig().isEnableIDTable(); + // originalDeviceIDTransformationMethod = + // IoTDBDescriptor.getInstance().getConfig().getDeviceIDTransformationMethod(); + // IoTDBDescriptor.getInstance().getConfig().setEnableIDTable(true); + // + // IoTDBDescriptor.getInstance().getConfig().setDeviceIDTransformationMethod("AutoIncrement_INT"); + // EnvironmentUtils.envSetUp(); + // appendOnlyDiskSchemaManager = + // new AppendOnlyDiskSchemaManager( + // SystemFileFactory.INSTANCE.getFile(systemDir + File.separator + storageGroupPath)); + // } + // + // @After + // public void tearDown() throws Exception { + // appendOnlyDiskSchemaManager.close(); + // EnvironmentUtils.cleanEnv(); + // IoTDBDescriptor.getInstance().getConfig().setEnableIDTable(isEnableIDTable); + // IoTDBDescriptor.getInstance() + // .getConfig() + // .setDeviceIDTransformationMethod(originalDeviceIDTransformationMethod); + // appendOnlyDiskSchemaManager = null; + // } + // + // @Test + // public void serialize() { + // for (int i = 0; i < 10; i++) { + // DiskSchemaEntry diskSchemaEntry = + // new DiskSchemaEntry( + // DeviceIDFactory.getInstance().getDeviceID(storageGroupPath + ".d" + + // i).toStringID(), + // storageGroupPath + ".d" + i + ".s", + // "s", + // Byte.parseByte("0"), + // Byte.parseByte("0"), + // Byte.parseByte("0"), + // false); + // appendOnlyDiskSchemaManager.serialize(diskSchemaEntry); + // } + // } + // + // @Test + // public void recover() { + // serialize(); + // IDTable idTable = + // new IDTableHashmapImpl( + // SystemFileFactory.INSTANCE.getFile(systemDir + File.separator + storageGroupPath)); + // appendOnlyDiskSchemaManager.recover(idTable); + // for (int i = 0; i < 10; i++) { + // assertNotNull(idTable.getDeviceEntry(storageGroupPath + ".d" + i).getDeviceID()); + // assertEquals( + // idTable.getDeviceEntry(storageGroupPath + ".d" + i).getDeviceID(), + // DeviceIDFactory.getInstance() + // .getDeviceID( + // DeviceIDFactory.getInstance() + // .getDeviceID(storageGroupPath + ".d" + i) + // .toStringID())); + // assertEquals( + // idTable.getDeviceEntry(storageGroupPath + ".d" + i).getDeviceID(), + // DeviceIDFactory.getInstance().getDeviceID(storageGroupPath + ".d" + i)); + // } + // } + // + // @Test + // public void getAllSchemaEntry() { + // serialize(); + // try { + // Collection diskSchemaEntrys = + // appendOnlyDiskSchemaManager.getAllSchemaEntry(); + // int i = 0; + // for (DiskSchemaEntry diskSchemaEntry : diskSchemaEntrys) { + // assertEquals(diskSchemaEntry.seriesKey, storageGroupPath + ".d" + i + ".s"); + // i++; + // } + // } catch (IOException e) { + // fail("throw wrong exception"); + // } + // } +} diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableFlushTimeTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableFlushTimeTest.java index cb48267bbf72..12afd27d1b5d 100644 --- a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableFlushTimeTest.java +++ b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableFlushTimeTest.java @@ -77,12 +77,12 @@ public void before() { @After public void clean() throws IOException, StorageEngineException { + EnvironmentUtils.cleanEnv(); IoTDBDescriptor.getInstance().getConfig().setEnableIDTable(isEnableIDTable); IoTDBDescriptor.getInstance() .getConfig() .setDeviceIDTransformationMethod(originalDeviceIDTransformationMethod); IoTDBDescriptor.getInstance().getConfig().setEnableIDTableLogFile(isEnableIDTableLogFile); - EnvironmentUtils.cleanEnv(); } @Test diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableLogFileTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableLogFileTest.java index eb2b337518fd..01dac840f05b 100644 --- a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableLogFileTest.java +++ b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableLogFileTest.java @@ -64,12 +64,12 @@ public void before() { @After public void clean() throws IOException, StorageEngineException { + EnvironmentUtils.cleanEnv(); IoTDBDescriptor.getInstance().getConfig().setEnableIDTable(isEnableIDTable); IoTDBDescriptor.getInstance() .getConfig() .setDeviceIDTransformationMethod(originalDeviceIDTransformationMethod); IoTDBDescriptor.getInstance().getConfig().setEnableIDTableLogFile(isEnableIDTableLogFile); - EnvironmentUtils.cleanEnv(); } @Test diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableRecoverTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableRecoverTest.java index bcacb1607358..520557d2c843 100644 --- a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableRecoverTest.java +++ b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableRecoverTest.java @@ -70,13 +70,12 @@ public void before() { @After public void clean() throws IOException, StorageEngineException { + EnvironmentUtils.cleanEnv(); IoTDBDescriptor.getInstance().getConfig().setEnableIDTable(isEnableIDTable); IoTDBDescriptor.getInstance() .getConfig() .setDeviceIDTransformationMethod(originalDeviceIDTransformationMethod); IoTDBDescriptor.getInstance().getConfig().setEnableIDTableLogFile(isEnableIDTableLogFile); - - EnvironmentUtils.cleanEnv(); } @Test diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableResourceControlTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableResourceControlTest.java index 35c9ff4f1b13..66553ae93c21 100644 --- a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableResourceControlTest.java +++ b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableResourceControlTest.java @@ -27,8 +27,8 @@ import org.apache.iotdb.db.engine.storagegroup.TsFileProcessor; import org.apache.iotdb.db.exception.StorageEngineException; import org.apache.iotdb.db.exception.query.QueryProcessException; +import org.apache.iotdb.db.metadata.idtable.deviceID.IDeviceID; import org.apache.iotdb.db.metadata.idtable.entry.DeviceEntry; -import org.apache.iotdb.db.metadata.idtable.entry.IDeviceID; import org.apache.iotdb.db.qp.Planner; import org.apache.iotdb.db.qp.executor.PlanExecutor; import org.apache.iotdb.db.qp.physical.crud.InsertRowPlan; @@ -71,11 +71,11 @@ public void before() { @After public void clean() throws IOException, StorageEngineException { + EnvironmentUtils.cleanEnv(); IoTDBDescriptor.getInstance().getConfig().setEnableIDTable(isEnableIDTable); IoTDBDescriptor.getInstance() .getConfig() .setDeviceIDTransformationMethod(originalDeviceIDTransformationMethod); - EnvironmentUtils.cleanEnv(); } @Test diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableRestartTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableRestartTest.java index f4801710df50..744b7e7c76cb 100644 --- a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableRestartTest.java +++ b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableRestartTest.java @@ -73,13 +73,12 @@ public void before() { @After public void clean() throws IOException, StorageEngineException { + EnvironmentUtils.cleanEnv(); IoTDBDescriptor.getInstance().getConfig().setEnableIDTable(isEnableIDTable); IoTDBDescriptor.getInstance() .getConfig() .setDeviceIDTransformationMethod(originalDeviceIDTransformationMethod); IoTDBDescriptor.getInstance().getConfig().setEnableIDTableLogFile(isEnableIDTableLogFile); - - EnvironmentUtils.cleanEnv(); } @Test diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableTest.java index 2ea9f8cd35a8..6c71b7838922 100644 --- a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableTest.java +++ b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableTest.java @@ -27,9 +27,9 @@ import org.apache.iotdb.db.exception.metadata.DataTypeMismatchException; import org.apache.iotdb.db.exception.query.QueryProcessException; import org.apache.iotdb.db.metadata.LocalSchemaProcessor; +import org.apache.iotdb.db.metadata.idtable.deviceID.IDeviceID; import org.apache.iotdb.db.metadata.idtable.entry.DeviceIDFactory; import org.apache.iotdb.db.metadata.idtable.entry.DiskSchemaEntry; -import org.apache.iotdb.db.metadata.idtable.entry.IDeviceID; import org.apache.iotdb.db.metadata.idtable.entry.SchemaEntry; import org.apache.iotdb.db.metadata.lastCache.container.ILastCacheContainer; import org.apache.iotdb.db.metadata.mnode.IMeasurementMNode; @@ -95,12 +95,12 @@ public void before() { @After public void clean() throws IOException, StorageEngineException { + EnvironmentUtils.cleanEnv(); IoTDBDescriptor.getInstance().getConfig().setEnableIDTable(isEnableIDTable); IoTDBDescriptor.getInstance() .getConfig() .setDeviceIDTransformationMethod(originalDeviceIDTransformationMethod); IoTDBDescriptor.getInstance().getConfig().setEnableIDTableLogFile(isEnableIDTableLogFile); - EnvironmentUtils.cleanEnv(); } @Test diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/InsertWithIDTableTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/InsertWithIDTableTest.java index 15f677a6a1bb..0f5ea7be6174 100644 --- a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/InsertWithIDTableTest.java +++ b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/InsertWithIDTableTest.java @@ -81,11 +81,11 @@ public void before() { @After public void clean() throws IOException, StorageEngineException { + EnvironmentUtils.cleanEnv(); IoTDBDescriptor.getInstance().getConfig().setEnableIDTable(isEnableIDTable); IoTDBDescriptor.getInstance() .getConfig() .setDeviceIDTransformationMethod(originalDeviceIDTransformationMethod); - EnvironmentUtils.cleanEnv(); } @Test diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/LastQueryWithIDTable.java b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/LastQueryWithIDTable.java index 33bbd75d0a09..401b38850b64 100644 --- a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/LastQueryWithIDTable.java +++ b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/LastQueryWithIDTable.java @@ -88,12 +88,12 @@ public void before() { @After public void clean() throws IOException, StorageEngineException { + EnvironmentUtils.cleanEnv(); IoTDBDescriptor.getInstance().getConfig().setEnableIDTable(isEnableIDTable); IoTDBDescriptor.getInstance() .getConfig() .setDeviceIDTransformationMethod(originalDeviceIDTransformationMethod); IoTDBDescriptor.getInstance().getConfig().setEnableLastCache(originalEnableCache); - EnvironmentUtils.cleanEnv(); } @Test diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/QueryAlignedTimeseriesWithIDTableTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/QueryAlignedTimeseriesWithIDTableTest.java index 22c77325b18f..e74d6f24bdfc 100644 --- a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/QueryAlignedTimeseriesWithIDTableTest.java +++ b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/QueryAlignedTimeseriesWithIDTableTest.java @@ -148,11 +148,11 @@ public void before() { @After public void clean() throws IOException, StorageEngineException { + EnvironmentUtils.cleanEnv(); IoTDBDescriptor.getInstance().getConfig().setEnableIDTable(isEnableIDTable); IoTDBDescriptor.getInstance() .getConfig() .setDeviceIDTransformationMethod(originalDeviceIDTransformationMethod); - EnvironmentUtils.cleanEnv(); } @Test diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/QueryWithIDTableTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/QueryWithIDTableTest.java index ca44e1fc8f7f..b31368819854 100644 --- a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/QueryWithIDTableTest.java +++ b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/QueryWithIDTableTest.java @@ -152,12 +152,12 @@ public void before() { @After public void clean() throws IOException, StorageEngineException { + EnvironmentUtils.cleanEnv(); IoTDBDescriptor.getInstance().getConfig().setEnableIDTable(isEnableIDTable); IoTDBDescriptor.getInstance() .getConfig() .setDeviceIDTransformationMethod(originalDeviceIDTransformationMethod); IoTDBDescriptor.getInstance().getConfig().setEnableIDTableLogFile(isEnableIDTableLogFile); - EnvironmentUtils.cleanEnv(); } @Test diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/deviceID/StandAloneAutoIncDeviceIDTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/deviceID/StandAloneAutoIncDeviceIDTest.java new file mode 100644 index 000000000000..dfe1da8a2cb3 --- /dev/null +++ b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/deviceID/StandAloneAutoIncDeviceIDTest.java @@ -0,0 +1,118 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.iotdb.db.metadata.idtable.deviceID; + +public class StandAloneAutoIncDeviceIDTest { + + // private boolean isEnableIDTable = false; + // + // private String originalDeviceIDTransformationMethod = null; + // + // @Before + // public void before() { + // isEnableIDTable = IoTDBDescriptor.getInstance().getConfig().isEnableIDTable(); + // originalDeviceIDTransformationMethod = + // IoTDBDescriptor.getInstance().getConfig().getDeviceIDTransformationMethod(); + // IoTDBDescriptor.getInstance().getConfig().setEnableIDTable(true); + // + // IoTDBDescriptor.getInstance().getConfig().setDeviceIDTransformationMethod("AutoIncrement_INT"); + // EnvironmentUtils.envSetUp(); + // } + // + // @After + // public void clean() throws IOException, StorageEngineException { + // IoTDBDescriptor.getInstance().getConfig().setEnableIDTable(isEnableIDTable); + // IoTDBDescriptor.getInstance() + // .getConfig() + // .setDeviceIDTransformationMethod(originalDeviceIDTransformationMethod); + // EnvironmentUtils.cleanEnv(); + // } + // + // @Test + // public void testHashCode() { + // IDeviceID deviceID1 = DeviceIDFactory.getInstance().getDeviceID("root.sg.x.d1"); + // IDeviceID deviceID2 = DeviceIDFactory.getInstance().getDeviceID("root.sg.x.d1"); + // IDeviceID deviceID3 = DeviceIDFactory.getInstance().getDeviceID("root.sg.x.d2"); + // assertEquals(deviceID1.hashCode(), deviceID2.hashCode()); + // assertNotEquals(deviceID1.hashCode(), deviceID3.hashCode()); + // + // StandAloneAutoIncDeviceID autoIncrementDeviceID1 = new StandAloneAutoIncDeviceID(); + // autoIncrementDeviceID1.autoIncrementID = 1; + // StandAloneAutoIncDeviceID autoIncrementDeviceID2 = new StandAloneAutoIncDeviceID(); + // autoIncrementDeviceID2.autoIncrementID = 1; + // StandAloneAutoIncDeviceID autoIncrementDeviceID3 = new StandAloneAutoIncDeviceID(); + // autoIncrementDeviceID3.autoIncrementID = 3; + // assertEquals(autoIncrementDeviceID1.hashCode(), autoIncrementDeviceID2.hashCode()); + // assertNotEquals(autoIncrementDeviceID1.hashCode(), autoIncrementDeviceID3.hashCode()); + // } + // + // @Test + // public void testEquals() { + // IDeviceID deviceID1 = DeviceIDFactory.getInstance().getDeviceID("root.sg.x.d1"); + // IDeviceID deviceID2 = DeviceIDFactory.getInstance().getDeviceID("root.sg.x.d1"); + // IDeviceID deviceID3 = DeviceIDFactory.getInstance().getDeviceID("root.sg.x.d2"); + // SHA256DeviceID sha256DeviceID = new SHA256DeviceID("root.sg.x.d1"); + // assertEquals(deviceID1, deviceID2); + // assertNotEquals(deviceID1, deviceID3); + // assertNotEquals(deviceID1, sha256DeviceID); + // + // StandAloneAutoIncDeviceID autoIncrementDeviceID1 = new StandAloneAutoIncDeviceID(); + // autoIncrementDeviceID1.autoIncrementID = 1; + // StandAloneAutoIncDeviceID autoIncrementDeviceID2 = new StandAloneAutoIncDeviceID(); + // autoIncrementDeviceID2.autoIncrementID = 1; + // StandAloneAutoIncDeviceID autoIncrementDeviceID3 = new StandAloneAutoIncDeviceID(); + // autoIncrementDeviceID3.autoIncrementID = 3; + // assertEquals(autoIncrementDeviceID1, autoIncrementDeviceID2); + // assertNotEquals(autoIncrementDeviceID1, autoIncrementDeviceID3); + // } + // + // @Test + // public void testToStringID() { + // IDeviceID deviceID1 = DeviceIDFactory.getInstance().getDeviceID("root.sg.x.d1"); + // assertEquals(deviceID1.toStringID(), "`0`"); + // IDeviceID deviceID2 = DeviceIDFactory.getInstance().getDeviceID("root.sg.x.d1"); + // assertEquals(deviceID2.toStringID(), "`0`"); + // IDeviceID deviceID3 = DeviceIDFactory.getInstance().getDeviceID("root.sg.x.d2"); + // assertEquals(deviceID3.toStringID(), "`1`"); + // } + // + // @Test + // public void testSerializeAndDeserialize() { + // ByteBuffer byteBuffer = ByteBuffer.allocate(100); + // IDeviceID deviceID = DeviceIDFactory.getInstance().getDeviceID("root.sg.x.d1"); + // deviceID.serialize(byteBuffer); + // byteBuffer.flip(); + // IDeviceID deviceID1 = StandAloneAutoIncDeviceID.deserialize(byteBuffer); + // assertEquals(deviceID, deviceID1); + // } + // + // @Test + // public void testAutoIncrementDeviceID() { + // IDeviceID deviceID = DeviceIDFactory.getInstance().getDeviceID("root.sg.x.d1"); + // IDeviceID deviceID1 = DeviceIDFactory.getInstance().getDeviceID("`0`"); + // assertEquals(deviceID, deviceID1); + // deviceID = DeviceIDFactory.getInstance().getDeviceID("root.sg.x.d2"); + // deviceID1 = DeviceIDFactory.getInstance().getDeviceID("`1`"); + // assertEquals(deviceID, deviceID1); + // for (int i = 3; i < 10; i++) { + // deviceID = DeviceIDFactory.getInstance().getDeviceID("root.sg.x.d" + i); + // assertEquals(deviceID.toStringID(), "`" + (i - 1) + "`"); + // } + // } +} diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/entry/DeviceIDTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/entry/DeviceIDTest.java index 54ebc0afeba6..fd297b37b5e6 100644 --- a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/entry/DeviceIDTest.java +++ b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/entry/DeviceIDTest.java @@ -21,6 +21,7 @@ import org.apache.iotdb.commons.exception.IllegalPathException; import org.apache.iotdb.commons.path.PartialPath; +import org.apache.iotdb.db.metadata.idtable.deviceID.IDeviceID; import org.junit.Test;