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;