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");
+    }
+  }
 }

Reply via email to