You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2022/11/27 03:16:10 UTC
[iotdb] 01/03: [IOTDB-5050] Try to make TsBlock returned by ScanOperator larger
This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch IOTDB-5050
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 10105f484aab908b85cf23d9f570f2fe341fe2d3
Author: JackieTien97 <ja...@gmail.com>
AuthorDate: Sat Nov 26 20:12:03 2022 +0800
[IOTDB-5050] Try to make TsBlock returned by ScanOperator larger
---
.../operator/source/AlignedSeriesScanOperator.java | 110 ++++++++++++++-------
.../operator/source/SeriesScanOperator.java | 105 +++++++++++++-------
.../apache/iotdb/db/utils/ErrorHandlingUtils.java | 4 +-
.../read/common/block/column/BinaryColumn.java | 9 --
.../read/common/block/column/BooleanColumn.java | 9 --
.../read/common/block/column/DoubleColumn.java | 9 --
.../read/common/block/column/FloatColumn.java | 9 --
.../tsfile/read/common/block/column/IntColumn.java | 9 --
.../read/common/block/column/LongColumn.java | 9 --
.../block/column/RunLengthEncodedColumn.java | 15 ---
.../read/common/block/column/TimeColumn.java | 7 --
11 files changed, 141 insertions(+), 154 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/AlignedSeriesScanOperator.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/AlignedSeriesScanOperator.java
index 8406437802..8eb1d44925 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/AlignedSeriesScanOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/AlignedSeriesScanOperator.java
@@ -24,18 +24,24 @@ import org.apache.iotdb.db.mpp.execution.operator.OperatorContext;
import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
import org.apache.iotdb.tsfile.read.common.block.TsBlock;
+import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.iotdb.tsfile.read.common.block.column.Column;
+import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
+import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
+import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
import org.apache.iotdb.tsfile.read.filter.basic.Filter;
import java.io.IOException;
import java.util.HashSet;
+import java.util.concurrent.TimeUnit;
public class AlignedSeriesScanOperator implements DataSourceOperator {
private final OperatorContext operatorContext;
private final AlignedSeriesScanUtil seriesScanUtil;
private final PlanNodeId sourceId;
- private TsBlock tsBlock;
- private boolean hasCachedTsBlock = false;
+
+ private final TsBlockBuilder builder;
private boolean finished = false;
private final long maxReturnSize;
@@ -61,6 +67,7 @@ public class AlignedSeriesScanOperator implements DataSourceOperator {
this.maxReturnSize =
(1L + seriesPath.getMeasurementList().size())
* TSFileDescriptor.getInstance().getConfig().getPageSizeInByte();
+ this.builder = new TsBlockBuilder(seriesScanUtil.getTsDataTypeList());
}
@Override
@@ -70,49 +77,48 @@ public class AlignedSeriesScanOperator implements DataSourceOperator {
@Override
public TsBlock next() {
- if (hasCachedTsBlock || hasNext()) {
- hasCachedTsBlock = false;
- TsBlock res = tsBlock;
- tsBlock = null;
- return res;
- }
- throw new IllegalStateException("no next batch");
+ TsBlock block = builder.build();
+ builder.reset();
+ return block;
}
@Override
public boolean hasNext() {
-
try {
- if (hasCachedTsBlock) {
- return true;
- }
-
- /*
- * consume page data firstly
- */
- if (readPageData()) {
- hasCachedTsBlock = true;
- return true;
- }
- /*
- * consume chunk data secondly
- */
- if (readChunkData()) {
- hasCachedTsBlock = true;
- return true;
- }
+ // start stopwatch
+ long maxRuntime = operatorContext.getMaxRunTime().roundTo(TimeUnit.NANOSECONDS);
+ long start = System.nanoTime();
+
+ // here use do-while to promise doing this at least once
+ do {
+ /*
+ * consume page data firstly
+ */
+ if (readPageData()) {
+ continue;
+ }
- /*
- * consume next file finally
- */
- while (seriesScanUtil.hasNextFile()) {
+ /*
+ * consume chunk data secondly
+ */
if (readChunkData()) {
- hasCachedTsBlock = true;
- return true;
+ continue;
}
- }
- return hasCachedTsBlock;
+
+ /*
+ * consume next file finally
+ */
+ if (readFileData()) {
+ continue;
+ }
+ break;
+
+ } while (System.nanoTime() - start < maxRuntime && !builder.isFull());
+
+ finished = builder.isEmpty();
+
+ return !finished;
} catch (IOException e) {
throw new RuntimeException("Error happened while scanning the file", e);
}
@@ -120,7 +126,7 @@ public class AlignedSeriesScanOperator implements DataSourceOperator {
@Override
public boolean isFinished() {
- return finished || (finished = !hasNext());
+ return finished;
}
@Override
@@ -138,6 +144,15 @@ public class AlignedSeriesScanOperator implements DataSourceOperator {
return 0L;
}
+ private boolean readFileData() throws IOException {
+ while (seriesScanUtil.hasNextFile()) {
+ if (readChunkData()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
private boolean readChunkData() throws IOException {
while (seriesScanUtil.hasNextChunk()) {
if (readPageData()) {
@@ -149,14 +164,33 @@ public class AlignedSeriesScanOperator implements DataSourceOperator {
private boolean readPageData() throws IOException {
while (seriesScanUtil.hasNextPage()) {
- tsBlock = seriesScanUtil.nextPage();
+ TsBlock tsBlock = seriesScanUtil.nextPage();
if (!isEmpty(tsBlock)) {
+ appendToBuilder(tsBlock);
return true;
}
}
return false;
}
+ private void appendToBuilder(TsBlock tsBlock) {
+ int size = tsBlock.getPositionCount();
+ TimeColumnBuilder timeColumnBuilder = builder.getTimeColumnBuilder();
+ TimeColumn timeColumn = tsBlock.getTimeColumn();
+ for (int i = 0; i < size; i++) {
+ timeColumnBuilder.writeLong(timeColumn.getLong(i));
+ }
+ for (int columnIndex = 0, columnSize = tsBlock.getValueColumnCount();
+ columnIndex < columnSize;
+ columnIndex++) {
+ ColumnBuilder columnBuilder = builder.getColumnBuilder(columnIndex);
+ Column column = tsBlock.getColumn(columnIndex);
+ for (int i = 0; i < size; i++) {
+ columnBuilder.write(column, i);
+ }
+ }
+ }
+
private boolean isEmpty(TsBlock tsBlock) {
return tsBlock == null || tsBlock.isEmpty();
}
diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/SeriesScanOperator.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/SeriesScanOperator.java
index 05685f758d..d20ea48b2d 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/SeriesScanOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/source/SeriesScanOperator.java
@@ -25,18 +25,24 @@ import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.block.TsBlock;
+import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder;
+import org.apache.iotdb.tsfile.read.common.block.column.Column;
+import org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder;
+import org.apache.iotdb.tsfile.read.common.block.column.TimeColumn;
+import org.apache.iotdb.tsfile.read.common.block.column.TimeColumnBuilder;
import org.apache.iotdb.tsfile.read.filter.basic.Filter;
import java.io.IOException;
import java.util.Set;
+import java.util.concurrent.TimeUnit;
public class SeriesScanOperator implements DataSourceOperator {
private final OperatorContext operatorContext;
private final SeriesScanUtil seriesScanUtil;
private final PlanNodeId sourceId;
- private TsBlock tsBlock;
- private boolean hasCachedTsBlock = false;
+ private final TsBlockBuilder builder;
+
private boolean finished = false;
private final long maxReturnSize;
@@ -62,6 +68,7 @@ public class SeriesScanOperator implements DataSourceOperator {
valueFilter,
ascending);
this.maxReturnSize = TSFileDescriptor.getInstance().getConfig().getPageSizeInByte();
+ this.builder = new TsBlockBuilder(seriesScanUtil.getTsDataTypeList());
}
@Override
@@ -71,49 +78,48 @@ public class SeriesScanOperator implements DataSourceOperator {
@Override
public TsBlock next() {
- if (hasCachedTsBlock || hasNext()) {
- hasCachedTsBlock = false;
- TsBlock res = tsBlock;
- tsBlock = null;
- return res;
- }
- throw new IllegalStateException("no next batch");
+ TsBlock block = builder.build();
+ builder.reset();
+ return block;
}
@Override
public boolean hasNext() {
-
try {
- if (hasCachedTsBlock) {
- return true;
- }
-
- /*
- * consume page data firstly
- */
- if (readPageData()) {
- hasCachedTsBlock = true;
- return true;
- }
- /*
- * consume chunk data secondly
- */
- if (readChunkData()) {
- hasCachedTsBlock = true;
- return true;
- }
+ // start stopwatch
+ long maxRuntime = operatorContext.getMaxRunTime().roundTo(TimeUnit.NANOSECONDS);
+ long start = System.nanoTime();
+
+ // here use do-while to promise doing this at least once
+ do {
+ /*
+ * consume page data firstly
+ */
+ if (readPageData()) {
+ continue;
+ }
- /*
- * consume next file finally
- */
- while (seriesScanUtil.hasNextFile()) {
+ /*
+ * consume chunk data secondly
+ */
if (readChunkData()) {
- hasCachedTsBlock = true;
- return true;
+ continue;
}
- }
- return hasCachedTsBlock;
+
+ /*
+ * consume next file finally
+ */
+ if (readFileData()) {
+ continue;
+ }
+ break;
+
+ } while (System.nanoTime() - start < maxRuntime && !builder.isFull());
+
+ finished = builder.isEmpty();
+
+ return !finished;
} catch (IOException e) {
throw new RuntimeException("Error happened while scanning the file", e);
}
@@ -121,7 +127,7 @@ public class SeriesScanOperator implements DataSourceOperator {
@Override
public boolean isFinished() {
- return finished || (finished = !hasNext());
+ return finished;
}
@Override
@@ -139,6 +145,15 @@ public class SeriesScanOperator implements DataSourceOperator {
return 0L;
}
+ private boolean readFileData() throws IOException {
+ while (seriesScanUtil.hasNextFile()) {
+ if (readChunkData()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
private boolean readChunkData() throws IOException {
while (seriesScanUtil.hasNextChunk()) {
if (readPageData()) {
@@ -150,14 +165,28 @@ public class SeriesScanOperator implements DataSourceOperator {
private boolean readPageData() throws IOException {
while (seriesScanUtil.hasNextPage()) {
- tsBlock = seriesScanUtil.nextPage();
+ TsBlock tsBlock = seriesScanUtil.nextPage();
+
if (!isEmpty(tsBlock)) {
+ appendToBuilder(tsBlock);
return true;
}
}
return false;
}
+ private void appendToBuilder(TsBlock tsBlock) {
+ TimeColumnBuilder timeColumnBuilder = builder.getTimeColumnBuilder();
+ TimeColumn timeColumn = tsBlock.getTimeColumn();
+ ColumnBuilder columnBuilder = builder.getColumnBuilder(0);
+ Column column = tsBlock.getColumn(0);
+
+ for (int i = 0, size = tsBlock.getPositionCount(); i < size; i++) {
+ timeColumnBuilder.writeLong(timeColumn.getLong(i));
+ columnBuilder.write(column, i);
+ }
+ }
+
private boolean isEmpty(TsBlock tsBlock) {
return tsBlock == null || tsBlock.isEmpty();
}
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/ErrorHandlingUtils.java b/server/src/main/java/org/apache/iotdb/db/utils/ErrorHandlingUtils.java
index 782c990c59..c993bf74a0 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/ErrorHandlingUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/ErrorHandlingUtils.java
@@ -85,9 +85,9 @@ public class ErrorHandlingUtils {
String.format(
"Status code: %s, Query Statement: %s failed", status.getCode(), operation);
if (status.getCode() == TSStatusCode.SQL_PARSE_ERROR.getStatusCode()) {
- LOGGER.error(message);
+ LOGGER.warn(message);
} else {
- LOGGER.error(message, e);
+ LOGGER.warn(message, e);
}
}
return status;
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumn.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumn.java
index 21d822da9d..85d910fd88 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumn.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BinaryColumn.java
@@ -82,7 +82,6 @@ public class BinaryColumn implements Column {
@Override
public Binary getBinary(int position) {
- checkReadablePosition(position);
return values[position + arrayOffset];
}
@@ -98,7 +97,6 @@ public class BinaryColumn implements Column {
@Override
public TsPrimitiveType getTsPrimitiveType(int position) {
- checkReadablePosition(position);
return new TsPrimitiveType.TsBinary(getBinary(position));
}
@@ -109,7 +107,6 @@ public class BinaryColumn implements Column {
@Override
public boolean isNull(int position) {
- checkReadablePosition(position);
return valueIsNull != null && valueIsNull[position + arrayOffset];
}
@@ -163,10 +160,4 @@ public class BinaryColumn implements Column {
}
}
}
-
- private void checkReadablePosition(int position) {
- if (position < 0 || position >= getPositionCount()) {
- throw new IllegalArgumentException("position is not valid");
- }
- }
}
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumn.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumn.java
index cf2e6a4f2d..5dc1d427b6 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumn.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/BooleanColumn.java
@@ -81,7 +81,6 @@ public class BooleanColumn implements Column {
@Override
public boolean getBoolean(int position) {
- checkReadablePosition(position);
return values[position + arrayOffset];
}
@@ -97,7 +96,6 @@ public class BooleanColumn implements Column {
@Override
public TsPrimitiveType getTsPrimitiveType(int position) {
- checkReadablePosition(position);
return new TsPrimitiveType.TsBoolean(getBoolean(position));
}
@@ -108,7 +106,6 @@ public class BooleanColumn implements Column {
@Override
public boolean isNull(int position) {
- checkReadablePosition(position);
return valueIsNull != null && valueIsNull[position + arrayOffset];
}
@@ -162,10 +159,4 @@ public class BooleanColumn implements Column {
}
}
}
-
- private void checkReadablePosition(int position) {
- if (position < 0 || position >= getPositionCount()) {
- throw new IllegalArgumentException("position is not valid");
- }
- }
}
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumn.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumn.java
index cac26a14cc..9b13800838 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumn.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/DoubleColumn.java
@@ -81,7 +81,6 @@ public class DoubleColumn implements Column {
@Override
public double getDouble(int position) {
- checkReadablePosition(position);
return values[position + arrayOffset];
}
@@ -97,7 +96,6 @@ public class DoubleColumn implements Column {
@Override
public TsPrimitiveType getTsPrimitiveType(int position) {
- checkReadablePosition(position);
return new TsPrimitiveType.TsDouble(getDouble(position));
}
@@ -108,7 +106,6 @@ public class DoubleColumn implements Column {
@Override
public boolean isNull(int position) {
- checkReadablePosition(position);
return valueIsNull != null && valueIsNull[position + arrayOffset];
}
@@ -162,10 +159,4 @@ public class DoubleColumn implements Column {
}
}
}
-
- private void checkReadablePosition(int position) {
- if (position < 0 || position >= getPositionCount()) {
- throw new IllegalArgumentException("position is not valid");
- }
- }
}
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumn.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumn.java
index 12c1178691..4d8f3e0440 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumn.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/FloatColumn.java
@@ -80,7 +80,6 @@ public class FloatColumn implements Column {
@Override
public float getFloat(int position) {
- checkReadablePosition(position);
return values[position + arrayOffset];
}
@@ -96,7 +95,6 @@ public class FloatColumn implements Column {
@Override
public TsPrimitiveType getTsPrimitiveType(int position) {
- checkReadablePosition(position);
return new TsPrimitiveType.TsFloat(getFloat(position));
}
@@ -107,7 +105,6 @@ public class FloatColumn implements Column {
@Override
public boolean isNull(int position) {
- checkReadablePosition(position);
return valueIsNull != null && valueIsNull[position + arrayOffset];
}
@@ -160,10 +157,4 @@ public class FloatColumn implements Column {
}
}
}
-
- private void checkReadablePosition(int position) {
- if (position < 0 || position >= getPositionCount()) {
- throw new IllegalArgumentException("position is not valid");
- }
- }
}
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumn.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumn.java
index 5a6a71ab60..120e4f44da 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumn.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/IntColumn.java
@@ -80,7 +80,6 @@ public class IntColumn implements Column {
@Override
public int getInt(int position) {
- checkReadablePosition(position);
return values[position + arrayOffset];
}
@@ -96,7 +95,6 @@ public class IntColumn implements Column {
@Override
public TsPrimitiveType getTsPrimitiveType(int position) {
- checkReadablePosition(position);
return new TsPrimitiveType.TsInt(getInt(position));
}
@@ -107,7 +105,6 @@ public class IntColumn implements Column {
@Override
public boolean isNull(int position) {
- checkReadablePosition(position);
return valueIsNull != null && valueIsNull[position + arrayOffset];
}
@@ -160,10 +157,4 @@ public class IntColumn implements Column {
}
}
}
-
- private void checkReadablePosition(int position) {
- if (position < 0 || position >= getPositionCount()) {
- throw new IllegalArgumentException("position is not valid");
- }
- }
}
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumn.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumn.java
index 3eb65f3d04..b87b61d2b3 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumn.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/LongColumn.java
@@ -80,7 +80,6 @@ public class LongColumn implements Column {
@Override
public long getLong(int position) {
- checkReadablePosition(position);
return values[position + arrayOffset];
}
@@ -96,7 +95,6 @@ public class LongColumn implements Column {
@Override
public TsPrimitiveType getTsPrimitiveType(int position) {
- checkReadablePosition(position);
return new TsPrimitiveType.TsLong(getLong(position));
}
@@ -107,7 +105,6 @@ public class LongColumn implements Column {
@Override
public boolean isNull(int position) {
- checkReadablePosition(position);
return valueIsNull != null && valueIsNull[position + arrayOffset];
}
@@ -160,10 +157,4 @@ public class LongColumn implements Column {
}
}
}
-
- private void checkReadablePosition(int position) {
- if (position < 0 || position >= getPositionCount()) {
- throw new IllegalArgumentException("position is not valid");
- }
- }
}
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/RunLengthEncodedColumn.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/RunLengthEncodedColumn.java
index 0446782087..b512b9f252 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/RunLengthEncodedColumn.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/RunLengthEncodedColumn.java
@@ -76,43 +76,36 @@ public class RunLengthEncodedColumn implements Column {
@Override
public boolean getBoolean(int position) {
- checkReadablePosition(position);
return value.getBoolean(0);
}
@Override
public int getInt(int position) {
- checkReadablePosition(position);
return value.getInt(0);
}
@Override
public long getLong(int position) {
- checkReadablePosition(position);
return value.getLong(0);
}
@Override
public float getFloat(int position) {
- checkReadablePosition(position);
return value.getFloat(0);
}
@Override
public double getDouble(int position) {
- checkReadablePosition(position);
return value.getDouble(0);
}
@Override
public Binary getBinary(int position) {
- checkReadablePosition(position);
return value.getBinary(0);
}
@Override
public Object getObject(int position) {
- checkReadablePosition(position);
return value.getObject(0);
}
@@ -167,7 +160,6 @@ public class RunLengthEncodedColumn implements Column {
@Override
public TsPrimitiveType getTsPrimitiveType(int position) {
- checkReadablePosition(position);
return value.getTsPrimitiveType(0);
}
@@ -178,7 +170,6 @@ public class RunLengthEncodedColumn implements Column {
@Override
public boolean isNull(int position) {
- checkReadablePosition(position);
return value.isNull(0);
}
@@ -217,10 +208,4 @@ public class RunLengthEncodedColumn implements Column {
public void reverse() {
// do nothing because the underlying column has only one value
}
-
- private void checkReadablePosition(int position) {
- if (position < 0 || position >= positionCount) {
- throw new IllegalArgumentException("position is not valid");
- }
- }
}
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumn.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumn.java
index af7ba86808..df6232ed9f 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumn.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/column/TimeColumn.java
@@ -71,7 +71,6 @@ public class TimeColumn implements Column {
@Override
public long getLong(int position) {
- checkReadablePosition(position);
return values[position + arrayOffset];
}
@@ -143,10 +142,4 @@ public class TimeColumn implements Column {
public long[] getTimes() {
return values;
}
-
- private void checkReadablePosition(int position) {
- if (position < 0 || position >= getPositionCount()) {
- throw new IllegalArgumentException("position is not valid");
- }
- }
}