This is an automated email from the ASF dual-hosted git repository.
xuekaifeng pushed a commit to branch xkf_id_table
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/xkf_id_table by this push:
new d6f6681 add test and fix bug
d6f6681 is described below
commit d6f6681d2d50d32d0a91138ed219284d0d1d1790
Author: 151250176 <[email protected]>
AuthorDate: Wed Dec 8 14:36:40 2021 +0800
add test and fix bug
---
.../apache/iotdb/db/metadata/id_table/IDTable.java | 16 ++-
.../id_table/entry/InsertMeasurementMNode.java | 5 +-
.../db/metadata/id_table/entry/TimeseriesID.java | 2 +-
.../iotdb/db/metadata/id_table/IDTableTest.java | 107 +++++++++++++++++++--
4 files changed, 107 insertions(+), 23 deletions(-)
diff --git
a/server/src/main/java/org/apache/iotdb/db/metadata/id_table/IDTable.java
b/server/src/main/java/org/apache/iotdb/db/metadata/id_table/IDTable.java
index c5a895e..d69ba49 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/id_table/IDTable.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/id_table/IDTable.java
@@ -19,6 +19,13 @@
package org.apache.iotdb.db.metadata.id_table;
+import static
org.apache.iotdb.db.utils.EncodingInferenceUtils.getDefaultEncoding;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import org.apache.iotdb.db.conf.IoTDBConfig;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.exception.metadata.DataTypeMismatchException;
@@ -40,18 +47,9 @@ import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import static
org.apache.iotdb.db.utils.EncodingInferenceUtils.getDefaultEncoding;
-
/** id table belongs to a storage group and mapping timeseries path to it's
schema */
public class IDTable {
diff --git
a/server/src/main/java/org/apache/iotdb/db/metadata/id_table/entry/InsertMeasurementMNode.java
b/server/src/main/java/org/apache/iotdb/db/metadata/id_table/entry/InsertMeasurementMNode.java
index 1969a45..717f7ad 100644
---
a/server/src/main/java/org/apache/iotdb/db/metadata/id_table/entry/InsertMeasurementMNode.java
+++
b/server/src/main/java/org/apache/iotdb/db/metadata/id_table/entry/InsertMeasurementMNode.java
@@ -19,6 +19,7 @@
package org.apache.iotdb.db.metadata.id_table.entry;
+import java.util.Map;
import org.apache.iotdb.db.engine.trigger.executor.TriggerExecutor;
import org.apache.iotdb.db.metadata.lastCache.container.ILastCacheContainer;
import org.apache.iotdb.db.metadata.logfile.MLogWriter;
@@ -33,8 +34,6 @@ import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
import org.apache.iotdb.tsfile.write.schema.UnaryMeasurementSchema;
-import java.util.Map;
-
public class InsertMeasurementMNode implements IMeasurementMNode {
SchemaEntry schemaEntry;
@@ -66,7 +65,7 @@ public class InsertMeasurementMNode implements
IMeasurementMNode {
@Override
public ILastCacheContainer getLastCacheContainer() {
- return null;
+ return schemaEntry;
}
@Override
diff --git
a/server/src/main/java/org/apache/iotdb/db/metadata/id_table/entry/TimeseriesID.java
b/server/src/main/java/org/apache/iotdb/db/metadata/id_table/entry/TimeseriesID.java
index f02fcb5..9125368 100644
---
a/server/src/main/java/org/apache/iotdb/db/metadata/id_table/entry/TimeseriesID.java
+++
b/server/src/main/java/org/apache/iotdb/db/metadata/id_table/entry/TimeseriesID.java
@@ -27,7 +27,7 @@ public class TimeseriesID {
/** build timeseries id from full path */
public TimeseriesID(PartialPath fullPath) {
- deviceID = DeviceIDFactory.getInstance().getDeviceID(fullPath);
+ deviceID =
DeviceIDFactory.getInstance().getDeviceID(fullPath.getDevicePath());
measurement = fullPath.getMeasurement();
}
diff --git
a/server/src/test/java/org/apache/iotdb/db/metadata/id_table/IDTableTest.java
b/server/src/test/java/org/apache/iotdb/db/metadata/id_table/IDTableTest.java
index b41fc42..56b1df8 100644
---
a/server/src/test/java/org/apache/iotdb/db/metadata/id_table/IDTableTest.java
+++
b/server/src/test/java/org/apache/iotdb/db/metadata/id_table/IDTableTest.java
@@ -19,6 +19,14 @@
package org.apache.iotdb.db.metadata.id_table;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.Arrays;
+import java.util.Collections;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.engine.StorageEngine;
import org.apache.iotdb.db.engine.trigger.service.TriggerRegistrationService;
@@ -27,32 +35,27 @@ import
org.apache.iotdb.db.exception.metadata.DataTypeMismatchException;
import org.apache.iotdb.db.exception.metadata.MetadataException;
import org.apache.iotdb.db.exception.query.QueryProcessException;
import org.apache.iotdb.db.metadata.MManager;
+import org.apache.iotdb.db.metadata.id_table.entry.TimeseriesID;
+import org.apache.iotdb.db.metadata.lastCache.container.ILastCacheContainer;
import org.apache.iotdb.db.metadata.mnode.IMeasurementMNode;
import org.apache.iotdb.db.metadata.path.PartialPath;
import org.apache.iotdb.db.qp.Planner;
import org.apache.iotdb.db.qp.physical.crud.InsertRowPlan;
import org.apache.iotdb.db.qp.physical.sys.CreateAlignedTimeSeriesPlan;
import org.apache.iotdb.db.qp.physical.sys.CreateTriggerPlan;
+import org.apache.iotdb.db.qp.physical.sys.DropTriggerPlan;
import org.apache.iotdb.db.service.IoTDB;
import org.apache.iotdb.db.utils.EnvironmentUtils;
import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
-
+import org.apache.iotdb.tsfile.read.TimeValuePair;
+import org.apache.iotdb.tsfile.utils.TsPrimitiveType;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import java.util.Arrays;
-import java.util.Collections;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
public class IDTableTest {
private CompressionType compressionType;
@@ -555,9 +558,93 @@ public class IDTableTest {
assertEquals(TSDataType.INT64, s2Node.getSchema().getType());
assertNull(s2Node.getTriggerExecutor());
+ // drop trigger
+ String sql2 = "Drop trigger trigger1";
+
+ DropTriggerPlan plan2 = (DropTriggerPlan)
processor.parseSQLToPhysicalPlan(sql2);
+ TriggerRegistrationService.getInstance().deregister(plan2);
+
+ idTable.getSeriesSchemas(insertRowPlan);
+ assertNull(s1Node.getTriggerExecutor());
} catch (MetadataException | StorageEngineException |
QueryProcessException e) {
e.printStackTrace();
fail("throw exception");
}
}
+
+ @Test
+ public void testFlushTimeAndLastCache() {
+ MManager manager = IoTDB.metaManager;
+ try {
+ long time = 1L;
+
+ manager.setStorageGroup(new PartialPath("root.laptop"));
+ manager.createTimeseries(
+ new PartialPath("root.laptop.d1.non_aligned_device.s1"),
+ TSDataType.valueOf("INT32"),
+ TSEncoding.valueOf("RLE"),
+ compressionType,
+ Collections.emptyMap());
+ manager.createTimeseries(
+ new PartialPath("root.laptop.d1.non_aligned_device.s2"),
+ TSDataType.valueOf("INT64"),
+ TSEncoding.valueOf("RLE"),
+ compressionType,
+ Collections.emptyMap());
+
+ TSDataType[] dataTypes = new TSDataType[] {TSDataType.INT32,
TSDataType.INT64};
+ String[] columns = new String[2];
+ columns[0] = "1";
+ columns[1] = "2";
+
+ InsertRowPlan insertRowPlan =
+ new InsertRowPlan(
+ new PartialPath("root.laptop.d1.non_aligned_device"),
+ time,
+ new String[] {"s1", "s2"},
+ dataTypes,
+ columns,
+ false);
+ insertRowPlan.setMeasurementMNodes(
+ new IMeasurementMNode[insertRowPlan.getMeasurements().length]);
+
+ // call getSeriesSchemasAndReadLockDevice
+ IDTable idTable =
+ StorageEngine.getInstance().getProcessor(new
PartialPath("root.laptop")).getIdTable();
+
+ idTable.getSeriesSchemas(insertRowPlan);
+
+ IMeasurementMNode s2Node = insertRowPlan.getMeasurementMNodes()[1];
+ ILastCacheContainer cacheContainer = s2Node.getLastCacheContainer();
+ // last cache
+ cacheContainer.updateCachedLast(
+ new TimeValuePair(100L, new TsPrimitiveType.TsLong(1L)), false, 0L);
+ assertEquals(new TsPrimitiveType.TsLong(1L),
cacheContainer.getCachedLast().getValue());
+ assertEquals(100L, cacheContainer.getCachedLast().getTimestamp());
+
+ cacheContainer.updateCachedLast(
+ new TimeValuePair(90L, new TsPrimitiveType.TsLong(2L)), false, 0L);
+ assertEquals(new TsPrimitiveType.TsLong(1L),
cacheContainer.getCachedLast().getValue());
+ assertEquals(100L, cacheContainer.getCachedLast().getTimestamp());
+
+ cacheContainer.updateCachedLast(
+ new TimeValuePair(110L, new TsPrimitiveType.TsLong(2L)), false, 0L);
+ assertEquals(new TsPrimitiveType.TsLong(2L),
cacheContainer.getCachedLast().getValue());
+ assertEquals(110L, cacheContainer.getCachedLast().getTimestamp());
+
+ // flush time
+ TimeseriesID timeseriesID =
+ new TimeseriesID(new
PartialPath("root.laptop.d1.non_aligned_device.s1"));
+ idTable.updateLatestFlushTime(timeseriesID, 10L);
+ assertEquals(10L, idTable.getLatestFlushedTime(timeseriesID));
+ idTable.updateLatestFlushTime(timeseriesID, 8L);
+ assertEquals(10L, idTable.getLatestFlushedTime(timeseriesID));
+ idTable.updateLatestFlushTime(timeseriesID, 12L);
+ assertEquals(12L, idTable.getLatestFlushedTime(timeseriesID));
+
+ } catch (MetadataException | StorageEngineException e) {
+ e.printStackTrace();
+ fail("throw exception");
+ }
+ }
}