You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2021/08/30 06:00:22 UTC

[iotdb] branch master updated: [IOTDB-1572] Optimize WriteableMemChunk's toString() (#3863)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 146274c  [IOTDB-1572] Optimize WriteableMemChunk's toString() (#3863)
146274c is described below

commit 146274cd462625258b584e76366de35cf57e4a1e
Author: xinzhongtianxia <45...@qq.com>
AuthorDate: Mon Aug 30 13:59:53 2021 +0800

    [IOTDB-1572] Optimize WriteableMemChunk's toString() (#3863)
---
 .../iotdb/db/engine/memtable/WritableMemChunk.java | 22 +++++++++++++++---
 .../db/engine/memtable/PrimitiveMemTableTest.java  | 27 ++++++++++++++++++++++
 2 files changed, 46 insertions(+), 3 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java b/server/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java
index 3679cc3..c93c71a 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/memtable/WritableMemChunk.java
@@ -243,15 +243,31 @@ public class WritableMemChunk implements IWritableMemChunk {
 
   @Override
   public String toString() {
-    int size = getSortedTvListForQuery().size();
+    int size = list.size();
+    int firstIndex = 0;
+    int lastIndex = size - 1;
+    long minTime = Long.MAX_VALUE;
+    long maxTime = Long.MIN_VALUE;
+    for (int i = 0; i < size; i++) {
+      long currentTime = list.getTime(i);
+      if (currentTime < minTime) {
+        firstIndex = i;
+        minTime = currentTime;
+      }
+      if (currentTime >= maxTime) {
+        lastIndex = i;
+        maxTime = currentTime;
+      }
+    }
+
     StringBuilder out = new StringBuilder("MemChunk Size: " + size + System.lineSeparator());
     if (size != 0) {
       out.append("Data type:").append(schema.getType()).append(System.lineSeparator());
       out.append("First point:")
-          .append(getSortedTvListForQuery().getTimeValuePair(0))
+          .append(list.getTimeValuePair(firstIndex))
           .append(System.lineSeparator());
       out.append("Last point:")
-          .append(getSortedTvListForQuery().getTimeValuePair(size - 1))
+          .append(list.getTimeValuePair(lastIndex))
           .append(System.lineSeparator());
     }
     return out.toString();
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTableTest.java b/server/src/test/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTableTest.java
index 1d30d62..b71d334 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTableTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTableTest.java
@@ -81,6 +81,33 @@ public class PrimitiveMemTableTest {
   }
 
   @Test
+  public void memSeriesToStringTest() throws IOException {
+    TSDataType dataType = TSDataType.INT32;
+    WritableMemChunk series =
+        new WritableMemChunk(
+            new MeasurementSchema("s1", dataType, TSEncoding.PLAIN), TVList.newList(dataType));
+    int count = 100;
+    for (int i = 0; i < count; i++) {
+      series.write(i, i);
+    }
+    series.write(0, 21);
+    series.write(99, 20);
+    series.write(20, 21);
+    String str = series.toString();
+    Assert.assertFalse(series.getTVList().isSorted());
+    Assert.assertEquals(
+        "MemChunk Size: 103"
+            + System.lineSeparator()
+            + "Data type:INT32"
+            + System.lineSeparator()
+            + "First point:0 : 0"
+            + System.lineSeparator()
+            + "Last point:99 : 20"
+            + System.lineSeparator(),
+        str);
+  }
+
+  @Test
   public void simpleTest() throws IOException, QueryProcessException, MetadataException {
     IMemTable memTable = new PrimitiveMemTable();
     int count = 10;