This is an automated email from the ASF dual-hosted git repository. ericpai pushed a commit to branch feature/small-refine in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 8408fd291c0d4af5c99d8d11c76c847d82e41e8d Author: ericpai <[email protected]> AuthorDate: Mon Aug 8 15:09:52 2022 +0800 Refine writeValueColumn() to TsBlockBuilder for common use --- .../schema/TimeSeriesSchemaScanOperator.java | 25 +++++++--------------- .../tsfile/read/common/block/TsBlockBuilder.java | 16 ++++++++++++++ 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/TimeSeriesSchemaScanOperator.java b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/TimeSeriesSchemaScanOperator.java index ba9d4920fd..0580200fe5 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/TimeSeriesSchemaScanOperator.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/execution/operator/schema/TimeSeriesSchemaScanOperator.java @@ -29,7 +29,6 @@ import org.apache.iotdb.db.qp.physical.sys.ShowTimeSeriesPlan; import org.apache.iotdb.db.query.dataset.ShowTimeSeriesResult; import org.apache.iotdb.tsfile.read.common.block.TsBlock; import org.apache.iotdb.tsfile.read.common.block.TsBlockBuilder; -import org.apache.iotdb.tsfile.utils.Binary; import java.util.Map; import java.util.stream.Collectors; @@ -106,25 +105,17 @@ public class TimeSeriesSchemaScanOperator extends SchemaQueryScanOperator { private void setColumns(ShowTimeSeriesResult series, TsBlockBuilder builder) { builder.getTimeColumnBuilder().writeLong(series.getLastTime()); - writeValueColumn(builder, 0, series.getName()); - writeValueColumn(builder, 1, series.getAlias()); - writeValueColumn(builder, 2, series.getSgName()); - writeValueColumn(builder, 3, series.getDataType().toString()); - writeValueColumn(builder, 4, series.getEncoding().toString()); - writeValueColumn(builder, 5, series.getCompressor().toString()); - writeValueColumn(builder, 6, mapToString(series.getTag())); - writeValueColumn(builder, 7, mapToString(series.getAttribute())); + builder.writeNullableText(0, series.getName()); + builder.writeNullableText(1, series.getAlias()); + builder.writeNullableText(2, series.getSgName()); + builder.writeNullableText(3, series.getDataType().toString()); + builder.writeNullableText(4, series.getEncoding().toString()); + builder.writeNullableText(5, series.getCompressor().toString()); + builder.writeNullableText(6, mapToString(series.getTag())); + builder.writeNullableText(7, mapToString(series.getAttribute())); builder.declarePosition(); } - private void writeValueColumn(TsBlockBuilder builder, int columnIndex, String value) { - if (value == null) { - builder.getColumnBuilder(columnIndex).appendNull(); - } else { - builder.getColumnBuilder(columnIndex).writeBinary(new Binary(value)); - } - } - private String mapToString(Map<String, String> map) { String content = map.entrySet().stream() diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilder.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilder.java index b2b47bf43b..d4152d4ddb 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilder.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/block/TsBlockBuilder.java @@ -30,6 +30,7 @@ import org.apache.iotdb.tsfile.read.common.block.column.IntColumnBuilder; import org.apache.iotdb.tsfile.read.common.block.column.LongColumnBuilder; 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.utils.Binary; import java.util.List; @@ -309,6 +310,21 @@ public class TsBlockBuilder { return TsBlock.wrapBlocksWithoutCopy(declaredPositions, timeColumn, columns); } + /** + * Write a text value to the columnIndex. If the value is null, then the place will be recorded + * with null. + * + * @param columnIndex the target column index. + * @param value the text value to be inserted. + */ + public void writeNullableText(int columnIndex, String value) { + if (value == null) { + getColumnBuilder(columnIndex).appendNull(); + } else { + getColumnBuilder(columnIndex).writeBinary(new Binary(value)); + } + } + private static void checkArgument(boolean expression, String errorMessage) { if (!expression) { throw new IllegalArgumentException(errorMessage);
