This is an automated email from the ASF dual-hosted git repository.

haonan pushed a commit to branch new_vector
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/new_vector by this push:
     new 0adae7e  reduce more usage of ifisAligned
0adae7e is described below

commit 0adae7e38aec5a6c07bc3adb125f33bdc916cc6f
Author: HTHou <[email protected]>
AuthorDate: Thu Oct 28 17:23:53 2021 +0800

    reduce more usage of ifisAligned
---
 .../iotdb/db/engine/memtable/AbstractMemTable.java | 23 ++++++++++++++++++----
 .../db/engine/memtable/PrimitiveMemTable.java      |  9 +++++----
 2 files changed, 24 insertions(+), 8 deletions(-)

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 eb8dcd4..e9707ae 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
@@ -113,14 +113,29 @@ public abstract class AbstractMemTable implements 
IMemTable {
         schema.getMeasurementId(),
         k -> {
           seriesNumber++;
-          totalPointsNumThreshold +=
-              ((long) avgSeriesPointNumThreshold * 
schema.getSubMeasurementsCount());
+          totalPointsNumThreshold += avgSeriesPointNumThreshold;
           return genMemSeries(schema);
         });
   }
 
+  private IWritableMemChunk createVectorMemChunkIfNotExistAndGet(
+      String deviceId, IMeasurementSchema schema) {
+    Map<String, IWritableMemChunk> memSeries =
+        memTableMap.computeIfAbsent(deviceId, k -> new HashMap<>());
+
+    return memSeries.computeIfAbsent(
+        schema.getMeasurementId(),
+        k -> {
+          seriesNumber++;
+          totalPointsNumThreshold += avgSeriesPointNumThreshold + 
schema.getSubMeasurementsCount();
+          return genVectorMemSeries(schema);
+        });
+  }
+
   protected abstract IWritableMemChunk genMemSeries(IMeasurementSchema schema);
 
+  protected abstract IWritableMemChunk genVectorMemSeries(IMeasurementSchema 
schema);
+
   @Override
   public void insert(InsertRowPlan insertRowPlan) {
     updatePlanIndexes(insertRowPlan.getIndex());
@@ -220,7 +235,7 @@ public abstract class AbstractMemTable implements IMemTable 
{
   @Override
   public void writeAlignedRow(
       String deviceId, IMeasurementSchema schema, long insertTime, Object 
objectValue) {
-    IWritableMemChunk memSeries = createMemChunkIfNotExistAndGet(deviceId, 
schema);
+    IWritableMemChunk memSeries = 
createVectorMemChunkIfNotExistAndGet(deviceId, schema);
     memSeries.write(insertTime, objectValue);
   }
 
@@ -270,7 +285,7 @@ public abstract class AbstractMemTable implements IMemTable 
{
             encodings.toArray(new TSEncoding[measurements.size()]),
             compressionType);
     IWritableMemChunk memSeries =
-        createMemChunkIfNotExistAndGet(
+        createVectorMemChunkIfNotExistAndGet(
             insertTabletPlan.getPrefixPath().getFullPath(), vectorSchema);
     memSeries.writeVector(
         insertTabletPlan.getTimes(),
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 2b85280..a827a1f 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,6 @@
 
 package org.apache.iotdb.db.engine.memtable;
 
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
 
 import java.util.HashMap;
@@ -39,13 +38,15 @@ public class PrimitiveMemTable extends AbstractMemTable {
 
   @Override
   protected IWritableMemChunk genMemSeries(IMeasurementSchema schema) {
-    if (schema.getType() == TSDataType.VECTOR) {
-      return new VectorWritableMemChunk(schema);
-    }
     return new WritableMemChunk(schema);
   }
 
   @Override
+  protected IWritableMemChunk genVectorMemSeries(IMeasurementSchema schema) {
+    return new VectorWritableMemChunk(schema);
+  }
+
+  @Override
   public IMemTable copy() {
     Map<String, Map<String, IWritableMemChunk>> newMap = new 
HashMap<>(getMemTableMap());
 

Reply via email to