This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch tsFile_v4
in repository https://gitbox.apache.org/repos/asf/tsfile.git
The following commit(s) were added to refs/heads/tsFile_v4 by this push:
new 0923fe32 apply spotless
0923fe32 is described below
commit 0923fe323b7132f268c9b07876450ec085d45e6a
Author: jt2594838 <[email protected]>
AuthorDate: Thu Apr 11 18:49:37 2024 +0800
apply spotless
---
.../org/apache/tsfile/block/column/Column.java | 4 +-
.../tsfile/exception/read/NoColumnException.java | 2 +-
.../exception/read/ReadProcessException.java | 2 +-
.../exception/write/ConflictDataTypeException.java | 4 +-
.../tsfile/exception/write/NoTableException.java | 2 +-
.../tsfile/file/metadata/StringArrayDeviceID.java | 15 +-
.../apache/tsfile/file/metadata/TableSchema.java | 3 +-
.../apache/tsfile/read/TsFileSequenceReader.java | 23 +--
.../apache/tsfile/read/common/block/TsBlock.java | 4 +-
.../read/common/block/column/NullColumn.java | 3 +
.../read/common/block/column/TimeColumn.java | 4 +-
.../tsfile/read/controller/DeviceMetaIterator.java | 38 +++--
.../tsfile/read/controller/IMetadataQuerier.java | 18 +--
.../read/controller/MetadataQuerierByFileImpl.java | 20 +--
.../tsfile/read/expression/ExpressionTree.java | 1 +
.../tsfile/read/query/executor/QueryExecutor.java | 4 -
.../read/query/executor/TableQueryExecutor.java | 54 ++++---
.../tsfile/read/query/executor/TsFileExecutor.java | 8 +-
.../read/query/executor/task/DeviceQueryTask.java | 16 +-
.../query/executor/task/DeviceTaskIterator.java | 13 +-
.../reader/block/DeviceOrderedTsBlockReader.java | 18 ++-
.../reader/block/SingleDeviceTsBlockReader.java | 76 ++++++----
.../tsfile/read/reader/block/TsBlockReader.java | 4 +-
.../java/org/apache/tsfile/utils/WriteUtils.java | 6 +-
.../java/org/apache/tsfile/write/TsFileWriter.java | 19 ++-
.../write/chunk/AlignedChunkGroupWriterImpl.java | 19 ++-
.../tsfile/write/chunk/IChunkGroupWriter.java | 1 -
.../chunk/NonAlignedChunkGroupWriterImpl.java | 9 +-
.../org/apache/tsfile/write/record/Tablet.java | 167 +++++++++------------
29 files changed, 301 insertions(+), 256 deletions(-)
diff --git a/common/src/main/java/org/apache/tsfile/block/column/Column.java
b/common/src/main/java/org/apache/tsfile/block/column/Column.java
index 8e438f70..1f2c0f60 100644
--- a/common/src/main/java/org/apache/tsfile/block/column/Column.java
+++ b/common/src/main/java/org/apache/tsfile/block/column/Column.java
@@ -19,11 +19,12 @@
package org.apache.tsfile.block.column;
-import java.util.Arrays;
import org.apache.tsfile.enums.TSDataType;
import org.apache.tsfile.utils.Binary;
import org.apache.tsfile.utils.TsPrimitiveType;
+import java.util.Arrays;
+
public interface Column {
/** Get the data type. */
@@ -127,6 +128,7 @@ public interface Column {
/**
* Set the given range as null.
+ *
* @param start start position (inclusive)
* @param end end position (exclusive)
*/
diff --git
a/tsfile/src/main/java/org/apache/tsfile/exception/read/NoColumnException.java
b/tsfile/src/main/java/org/apache/tsfile/exception/read/NoColumnException.java
index e52f0835..a87a819c 100644
---
a/tsfile/src/main/java/org/apache/tsfile/exception/read/NoColumnException.java
+++
b/tsfile/src/main/java/org/apache/tsfile/exception/read/NoColumnException.java
@@ -1,6 +1,6 @@
package org.apache.tsfile.exception.read;
-public class NoColumnException extends ReadProcessException{
+public class NoColumnException extends ReadProcessException {
public NoColumnException(String columnName) {
super(String.format("No column: %s", columnName));
diff --git
a/tsfile/src/main/java/org/apache/tsfile/exception/read/ReadProcessException.java
b/tsfile/src/main/java/org/apache/tsfile/exception/read/ReadProcessException.java
index 1e9daf17..7bd7c77e 100644
---
a/tsfile/src/main/java/org/apache/tsfile/exception/read/ReadProcessException.java
+++
b/tsfile/src/main/java/org/apache/tsfile/exception/read/ReadProcessException.java
@@ -19,7 +19,7 @@
package org.apache.tsfile.exception.read;
-public class ReadProcessException extends Exception{
+public class ReadProcessException extends Exception {
public ReadProcessException(String message) {
super(message);
diff --git
a/tsfile/src/main/java/org/apache/tsfile/exception/write/ConflictDataTypeException.java
b/tsfile/src/main/java/org/apache/tsfile/exception/write/ConflictDataTypeException.java
index 0523c234..da0cee54 100644
---
a/tsfile/src/main/java/org/apache/tsfile/exception/write/ConflictDataTypeException.java
+++
b/tsfile/src/main/java/org/apache/tsfile/exception/write/ConflictDataTypeException.java
@@ -24,7 +24,7 @@ import org.apache.tsfile.enums.TSDataType;
public class ConflictDataTypeException extends WriteProcessException {
public ConflictDataTypeException(TSDataType writing, TSDataType registered) {
- super(String.format("Conflict data type: %s (writing) and %s
(registered)", writing,
- registered));
+ super(
+ String.format("Conflict data type: %s (writing) and %s (registered)",
writing, registered));
}
}
diff --git
a/tsfile/src/main/java/org/apache/tsfile/exception/write/NoTableException.java
b/tsfile/src/main/java/org/apache/tsfile/exception/write/NoTableException.java
index 43a80796..e1636d88 100644
---
a/tsfile/src/main/java/org/apache/tsfile/exception/write/NoTableException.java
+++
b/tsfile/src/main/java/org/apache/tsfile/exception/write/NoTableException.java
@@ -1,6 +1,6 @@
package org.apache.tsfile.exception.write;
-public class NoTableException extends WriteProcessException{
+public class NoTableException extends WriteProcessException {
public NoTableException(String tableName) {
super(String.format("Table %s not found", tableName));
diff --git
a/tsfile/src/main/java/org/apache/tsfile/file/metadata/StringArrayDeviceID.java
b/tsfile/src/main/java/org/apache/tsfile/file/metadata/StringArrayDeviceID.java
index 14901c36..45b10610 100644
---
a/tsfile/src/main/java/org/apache/tsfile/file/metadata/StringArrayDeviceID.java
+++
b/tsfile/src/main/java/org/apache/tsfile/file/metadata/StringArrayDeviceID.java
@@ -19,23 +19,24 @@
package org.apache.tsfile.file.metadata;
+import org.apache.tsfile.exception.TsFileRuntimeException;
+import org.apache.tsfile.utils.RamUsageEstimator;
+import org.apache.tsfile.utils.ReadWriteIOUtils;
+import org.apache.tsfile.utils.WriteUtils;
+
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.util.Objects;
-import org.apache.tsfile.exception.TsFileRuntimeException;
-import org.apache.tsfile.utils.RamUsageEstimator;
-import org.apache.tsfile.utils.ReadWriteIOUtils;
-import org.apache.tsfile.utils.WriteUtils;
public class StringArrayDeviceID implements IDeviceID {
private static final long INSTANCE_SIZE =
RamUsageEstimator.shallowSizeOfInstance(StringArrayDeviceID.class);
- //TODO: change to Object[] and rename to just ArrayDeviceID
+ // TODO: change to Object[] and rename to just ArrayDeviceID
// or we can just use a tuple like Relational DB.
private final String[] segments;
@@ -105,8 +106,8 @@ public class StringArrayDeviceID implements IDeviceID {
// the other ID is a prefix of this one
return 1;
}
- final int comp = Objects.compare(this.segment(i), ((String)
o.segment(i)),
- WriteUtils::compareStrings);
+ final int comp =
+ Objects.compare(this.segment(i), ((String) o.segment(i)),
WriteUtils::compareStrings);
if (comp != 0) {
// the partial comparison has a result
return comp;
diff --git
a/tsfile/src/main/java/org/apache/tsfile/file/metadata/TableSchema.java
b/tsfile/src/main/java/org/apache/tsfile/file/metadata/TableSchema.java
index 870ef2e4..1a391d0a 100644
--- a/tsfile/src/main/java/org/apache/tsfile/file/metadata/TableSchema.java
+++ b/tsfile/src/main/java/org/apache/tsfile/file/metadata/TableSchema.java
@@ -49,7 +49,8 @@ public class TableSchema {
this.updatable = true;
}
- public TableSchema(String tableName, List<MeasurementSchema> columnSchemas,
List<ColumnType> columnTypes) {
+ public TableSchema(
+ String tableName, List<MeasurementSchema> columnSchemas,
List<ColumnType> columnTypes) {
this.tableName = tableName;
this.columnSchemas = columnSchemas;
this.columnTypes = columnTypes;
diff --git
a/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java
b/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java
index ad9478aa..4efdd504 100644
--- a/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java
+++ b/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java
@@ -573,8 +573,9 @@ public class TsFileSequenceReader implements AutoCloseable {
IDeviceID device, Set<String> measurements, MetadataIndexNode root)
throws IOException {
readFileMetadata();
MetadataIndexNode deviceMetadataIndexNode =
- root != null ? root :
-
tsFileMetaData.getTableMetadataIndexNodeMap().get(device.getTableName());
+ root != null
+ ? root
+ :
tsFileMetaData.getTableMetadataIndexNodeMap().get(device.getTableName());
Pair<IMetadataIndexEntry, Long> metadataIndexPair =
getMetadataAndEndOffsetOfDeviceNode(deviceMetadataIndexNode, device,
false);
if (metadataIndexPair == null) {
@@ -2170,9 +2171,10 @@ public class TsFileSequenceReader implements
AutoCloseable {
return chunkMetadataList;
}
- public List<IChunkMetadata> getIChunkMetadataList(IDeviceID deviceID, String
measurementName) throws IOException {
- List<ITimeSeriesMetadata> timeseriesMetaData =
readITimeseriesMetadata(deviceID,
- Collections.singleton(measurementName), null);
+ public List<IChunkMetadata> getIChunkMetadataList(IDeviceID deviceID, String
measurementName)
+ throws IOException {
+ List<ITimeSeriesMetadata> timeseriesMetaData =
+ readITimeseriesMetadata(deviceID,
Collections.singleton(measurementName), null);
if (timeseriesMetaData == null || timeseriesMetaData.isEmpty()) {
return Collections.emptyList();
}
@@ -2181,17 +2183,18 @@ public class TsFileSequenceReader implements
AutoCloseable {
return chunkMetadataList;
}
- public List<List<IChunkMetadata>> getIChunkMetadataList(IDeviceID deviceID,
- Set<String> measurementNames, MetadataIndexNode root) throws IOException
{
- List<ITimeSeriesMetadata> timeseriesMetaData =
readITimeseriesMetadata(deviceID,
- measurementNames, root);
+ public List<List<IChunkMetadata>> getIChunkMetadataList(
+ IDeviceID deviceID, Set<String> measurementNames, MetadataIndexNode
root) throws IOException {
+ List<ITimeSeriesMetadata> timeseriesMetaData =
+ readITimeseriesMetadata(deviceID, measurementNames, root);
if (timeseriesMetaData == null || timeseriesMetaData.isEmpty()) {
return Collections.emptyList();
}
List<List<IChunkMetadata>> results = new
ArrayList<>(timeseriesMetaData.size());
for (ITimeSeriesMetadata timeseriesMetaDatum : timeseriesMetaData) {
List<IChunkMetadata> chunkMetadataList =
readIChunkMetaDataList(timeseriesMetaDatum);
-
chunkMetadataList.sort(Comparator.comparingLong(org.apache.tsfile.file.metadata.IChunkMetadata::getStartTime));
+ chunkMetadataList.sort(
+
Comparator.comparingLong(org.apache.tsfile.file.metadata.IChunkMetadata::getStartTime));
results.add(chunkMetadataList);
}
return results;
diff --git
a/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlock.java
b/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlock.java
index 43eb29b4..2774a2c3 100644
--- a/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlock.java
+++ b/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlock.java
@@ -19,7 +19,6 @@
package org.apache.tsfile.read.common.block;
-import java.util.List;
import org.apache.tsfile.block.column.Column;
import org.apache.tsfile.file.metadata.TableSchema;
import org.apache.tsfile.read.TimeValuePair;
@@ -30,11 +29,12 @@ import org.apache.tsfile.read.reader.IPointReader;
import org.apache.tsfile.utils.RamUsageEstimator;
import org.apache.tsfile.utils.TsPrimitiveType;
import org.apache.tsfile.write.UnSupportedDataTypeException;
+import org.apache.tsfile.write.schema.MeasurementSchema;
import java.util.Arrays;
import java.util.Iterator;
+import java.util.List;
import java.util.NoSuchElementException;
-import org.apache.tsfile.write.schema.MeasurementSchema;
import static java.lang.String.format;
import static java.util.Objects.requireNonNull;
diff --git
a/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/NullColumn.java
b/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/NullColumn.java
index 7e19b26b..4f28a2e9 100644
---
a/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/NullColumn.java
+++
b/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/NullColumn.java
@@ -131,4 +131,7 @@ public class NullColumn implements Column {
public void setPositionCount(int count) {
this.positionCount = count;
}
+
+ @Override
+ public void setNull(int start, int end) {}
}
diff --git
a/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/TimeColumn.java
b/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/TimeColumn.java
index 2d2d364b..5e7e7c77 100644
---
a/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/TimeColumn.java
+++
b/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/TimeColumn.java
@@ -19,7 +19,6 @@
package org.apache.tsfile.read.common.block.column;
-import java.util.Arrays;
import org.apache.tsfile.block.column.Column;
import org.apache.tsfile.block.column.ColumnEncoding;
import org.apache.tsfile.enums.TSDataType;
@@ -166,6 +165,5 @@ public class TimeColumn implements Column {
}
@Override
- public void setNull(int start, int end) {
- }
+ public void setNull(int start, int end) {}
}
diff --git
a/tsfile/src/main/java/org/apache/tsfile/read/controller/DeviceMetaIterator.java
b/tsfile/src/main/java/org/apache/tsfile/read/controller/DeviceMetaIterator.java
index 95e9834a..a3dc3a98 100644
---
a/tsfile/src/main/java/org/apache/tsfile/read/controller/DeviceMetaIterator.java
+++
b/tsfile/src/main/java/org/apache/tsfile/read/controller/DeviceMetaIterator.java
@@ -1,11 +1,5 @@
package org.apache.tsfile.read.controller;
-import java.io.IOException;
-import java.util.ArrayDeque;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.Queue;
import org.apache.tsfile.file.IMetadataIndexEntry;
import org.apache.tsfile.file.metadata.DeviceMetadataIndexEntry;
import org.apache.tsfile.file.metadata.IDeviceID;
@@ -14,9 +8,17 @@ import
org.apache.tsfile.file.metadata.enums.MetadataIndexNodeType;
import org.apache.tsfile.read.TsFileSequenceReader;
import org.apache.tsfile.read.expression.ExpressionTree;
import org.apache.tsfile.utils.Pair;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.io.IOException;
+import java.util.ArrayDeque;
+import java.util.Iterator;
+import java.util.List;
+import java.util.NoSuchElementException;
+import java.util.Queue;
+
public class DeviceMetaIterator implements Iterator<Pair<IDeviceID,
MetadataIndexNode>> {
private static final Logger LOGGER =
LoggerFactory.getLogger(DeviceMetaIterator.class);
@@ -25,7 +27,9 @@ public class DeviceMetaIterator implements
Iterator<Pair<IDeviceID, MetadataInde
private final Queue<Pair<IDeviceID, MetadataIndexNode>> resultCache = new
ArrayDeque<>();
private final ExpressionTree idFilter;
- public DeviceMetaIterator(TsFileSequenceReader tsFileSequenceReader,
MetadataIndexNode metadataIndexNode,
+ public DeviceMetaIterator(
+ TsFileSequenceReader tsFileSequenceReader,
+ MetadataIndexNode metadataIndexNode,
ExpressionTree idFilter) {
this.tsFileSequenceReader = tsFileSequenceReader;
this.metadataIndexNodes.add(metadataIndexNode);
@@ -57,10 +61,12 @@ public class DeviceMetaIterator implements
Iterator<Pair<IDeviceID, MetadataInde
}
long startOffset = child.getOffset();
- long endOffset = i < leafChildren.size() - 1 ? leafChildren.get(i +
1).getOffset() :
- currentNode.getEndOffset();
- final MetadataIndexNode childNode =
tsFileSequenceReader.readMetadataIndexNode(
- startOffset, endOffset, false);
+ long endOffset =
+ i < leafChildren.size() - 1
+ ? leafChildren.get(i + 1).getOffset()
+ : currentNode.getEndOffset();
+ final MetadataIndexNode childNode =
+ tsFileSequenceReader.readMetadataIndexNode(startOffset, endOffset,
false);
resultCache.add(new Pair<>(deviceID, childNode));
}
}
@@ -70,10 +76,12 @@ public class DeviceMetaIterator implements
Iterator<Pair<IDeviceID, MetadataInde
for (int i = 0; i < internalChildren.size(); i++) {
IMetadataIndexEntry child = internalChildren.get(i);
long startOffset = child.getOffset();
- long endOffset = i < internalChildren.size() - 1 ?
internalChildren.get(i + 1).getOffset() :
- currentNode.getEndOffset();
- final MetadataIndexNode childNode =
tsFileSequenceReader.readMetadataIndexNode(
- startOffset, endOffset, true);
+ long endOffset =
+ i < internalChildren.size() - 1
+ ? internalChildren.get(i + 1).getOffset()
+ : currentNode.getEndOffset();
+ final MetadataIndexNode childNode =
+ tsFileSequenceReader.readMetadataIndexNode(startOffset, endOffset,
true);
metadataIndexNodes.add(childNode);
}
}
diff --git
a/tsfile/src/main/java/org/apache/tsfile/read/controller/IMetadataQuerier.java
b/tsfile/src/main/java/org/apache/tsfile/read/controller/IMetadataQuerier.java
index 844de99a..b6d9654a 100644
---
a/tsfile/src/main/java/org/apache/tsfile/read/controller/IMetadataQuerier.java
+++
b/tsfile/src/main/java/org/apache/tsfile/read/controller/IMetadataQuerier.java
@@ -19,8 +19,6 @@
package org.apache.tsfile.read.controller;
-import java.util.Iterator;
-import java.util.Set;
import org.apache.tsfile.enums.TSDataType;
import org.apache.tsfile.exception.write.NoMeasurementException;
import org.apache.tsfile.file.metadata.IChunkMetadata;
@@ -29,27 +27,29 @@ import org.apache.tsfile.file.metadata.MetadataIndexNode;
import org.apache.tsfile.file.metadata.TsFileMetadata;
import org.apache.tsfile.read.common.Path;
import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.expression.ExpressionTree;
+import org.apache.tsfile.utils.Pair;
import java.io.IOException;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import org.apache.tsfile.read.expression.ExpressionTree;
-import org.apache.tsfile.utils.Pair;
+import java.util.Set;
public interface IMetadataQuerier {
List<IChunkMetadata> getChunkMetaDataList(Path path) throws IOException;
/**
- *
* @param deviceID the deviceID to be queried
* @param measurementNames the measurementNames to be queried
* @param measurementNode nullable, if provided, the search will start from
the node
* @return each list is the ChunkMetadata of those timeseries who exists
* @throws IOException if IO error occurs
*/
- List<List<IChunkMetadata>> getChunkMetadataLists(IDeviceID deviceID,
- Set<String> measurementNames, MetadataIndexNode measurementNode) throws
IOException;
+ List<List<IChunkMetadata>> getChunkMetadataLists(
+ IDeviceID deviceID, Set<String> measurementNames, MetadataIndexNode
measurementNode)
+ throws IOException;
Map<Path, List<IChunkMetadata>> getChunkMetaDataMap(List<Path> paths) throws
IOException;
@@ -83,6 +83,6 @@ public interface IMetadataQuerier {
/** clear caches (if used) to release memory. */
void clear();
- Iterator<Pair<IDeviceID, MetadataIndexNode>>
deviceIterator(MetadataIndexNode root,
- ExpressionTree idFilter);
+ Iterator<Pair<IDeviceID, MetadataIndexNode>> deviceIterator(
+ MetadataIndexNode root, ExpressionTree idFilter);
}
diff --git
a/tsfile/src/main/java/org/apache/tsfile/read/controller/MetadataQuerierByFileImpl.java
b/tsfile/src/main/java/org/apache/tsfile/read/controller/MetadataQuerierByFileImpl.java
index 18426390..fd04df6b 100644
---
a/tsfile/src/main/java/org/apache/tsfile/read/controller/MetadataQuerierByFileImpl.java
+++
b/tsfile/src/main/java/org/apache/tsfile/read/controller/MetadataQuerierByFileImpl.java
@@ -19,7 +19,6 @@
package org.apache.tsfile.read.controller;
-import java.util.Iterator;
import org.apache.tsfile.common.cache.LRUCache;
import org.apache.tsfile.enums.TSDataType;
import org.apache.tsfile.file.metadata.AlignedTimeSeriesMetadata;
@@ -30,11 +29,12 @@ import org.apache.tsfile.file.metadata.ITimeSeriesMetadata;
import org.apache.tsfile.file.metadata.MetadataIndexNode;
import org.apache.tsfile.file.metadata.TimeseriesMetadata;
import org.apache.tsfile.file.metadata.TsFileMetadata;
-import org.apache.tsfile.file.metadata.enums.MetadataIndexNodeType;
import org.apache.tsfile.read.TsFileSequenceReader;
import org.apache.tsfile.read.TsFileSequenceReader.LocateStatus;
import org.apache.tsfile.read.common.Path;
import org.apache.tsfile.read.common.TimeRange;
+import org.apache.tsfile.read.expression.ExpressionTree;
+import org.apache.tsfile.utils.Pair;
import java.io.IOException;
import java.util.ArrayList;
@@ -42,13 +42,12 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
-import org.apache.tsfile.read.expression.ExpressionTree;
-import org.apache.tsfile.utils.Pair;
public class MetadataQuerierByFileImpl implements IMetadataQuerier {
@@ -89,8 +88,9 @@ public class MetadataQuerierByFileImpl implements
IMetadataQuerier {
return new ArrayList<>(chunkMetaDataCache.get(timeseriesPath));
}
- public List<List<IChunkMetadata>> getChunkMetadataLists(IDeviceID deviceID,
- Set<String> measurementNames, MetadataIndexNode measurementNode) throws
IOException {
+ public List<List<IChunkMetadata>> getChunkMetadataLists(
+ IDeviceID deviceID, Set<String> measurementNames, MetadataIndexNode
measurementNode)
+ throws IOException {
List<List<IChunkMetadata>> results = new
ArrayList<>(measurementNames.size());
final Iterator<String> iterator = measurementNames.iterator();
// use cache when possible
@@ -105,8 +105,8 @@ public class MetadataQuerierByFileImpl implements
IMetadataQuerier {
}
}
// the remaining is not in the cache, search them in file
- final List<List<IChunkMetadata>> iChunkMetadataList =
tsFileReader.getIChunkMetadataList(
- deviceID, measurementNames, measurementNode);
+ final List<List<IChunkMetadata>> iChunkMetadataList =
+ tsFileReader.getIChunkMetadataList(deviceID, measurementNames,
measurementNode);
for (List<IChunkMetadata> metadataList : iChunkMetadataList) {
final String measurementUid = metadataList.get(0).getMeasurementUid();
// cache the result
@@ -302,8 +302,8 @@ public class MetadataQuerierByFileImpl implements
IMetadataQuerier {
}
@Override
- public Iterator<Pair<IDeviceID, MetadataIndexNode>>
deviceIterator(MetadataIndexNode root,
- ExpressionTree idFilter) {
+ public Iterator<Pair<IDeviceID, MetadataIndexNode>> deviceIterator(
+ MetadataIndexNode root, ExpressionTree idFilter) {
return new DeviceMetaIterator(tsFileReader, root, idFilter);
}
}
diff --git
a/tsfile/src/main/java/org/apache/tsfile/read/expression/ExpressionTree.java
b/tsfile/src/main/java/org/apache/tsfile/read/expression/ExpressionTree.java
index b22dc872..3e9657d7 100644
--- a/tsfile/src/main/java/org/apache/tsfile/read/expression/ExpressionTree.java
+++ b/tsfile/src/main/java/org/apache/tsfile/read/expression/ExpressionTree.java
@@ -4,5 +4,6 @@ import org.apache.tsfile.read.filter.basic.Filter;
public interface ExpressionTree {
boolean satisfy(Object value);
+
Filter toFilter();
}
diff --git
a/tsfile/src/main/java/org/apache/tsfile/read/query/executor/QueryExecutor.java
b/tsfile/src/main/java/org/apache/tsfile/read/query/executor/QueryExecutor.java
index ae40c2d9..8ce0d2bb 100644
---
a/tsfile/src/main/java/org/apache/tsfile/read/query/executor/QueryExecutor.java
+++
b/tsfile/src/main/java/org/apache/tsfile/read/query/executor/QueryExecutor.java
@@ -19,14 +19,10 @@
package org.apache.tsfile.read.query.executor;
-import java.util.List;
-import org.apache.tsfile.exception.read.ReadProcessException;
-import org.apache.tsfile.read.expression.ExpressionTree;
import org.apache.tsfile.read.expression.QueryExpression;
import org.apache.tsfile.read.query.dataset.QueryDataSet;
import java.io.IOException;
-import org.apache.tsfile.read.reader.block.TsBlockReader;
public interface QueryExecutor {
diff --git
a/tsfile/src/main/java/org/apache/tsfile/read/query/executor/TableQueryExecutor.java
b/tsfile/src/main/java/org/apache/tsfile/read/query/executor/TableQueryExecutor.java
index 954719a4..da1fe0c7 100644
---
a/tsfile/src/main/java/org/apache/tsfile/read/query/executor/TableQueryExecutor.java
+++
b/tsfile/src/main/java/org/apache/tsfile/read/query/executor/TableQueryExecutor.java
@@ -1,12 +1,5 @@
package org.apache.tsfile.read.query.executor;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
import org.apache.tsfile.exception.read.NoColumnException;
import org.apache.tsfile.exception.read.ReadProcessException;
import org.apache.tsfile.exception.read.UnsupportedOrderingException;
@@ -22,6 +15,14 @@ import org.apache.tsfile.read.reader.block.TsBlockReader;
import org.apache.tsfile.read.reader.block.TsBlockReader.EmptyTsBlockReader;
import org.apache.tsfile.write.record.Tablet.ColumnType;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
public class TableQueryExecutor {
private IMetadataQuerier metadataQuerier;
@@ -29,18 +30,24 @@ public class TableQueryExecutor {
private TableQueryOrdering tableQueryOrdering;
private int blockSize = 1024;
- public TableQueryExecutor(IMetadataQuerier metadataQuerier, IChunkLoader
chunkLoader,
+ public TableQueryExecutor(
+ IMetadataQuerier metadataQuerier,
+ IChunkLoader chunkLoader,
TableQueryOrdering tableQueryOrdering) {
this.metadataQuerier = metadataQuerier;
this.chunkLoader = chunkLoader;
this.tableQueryOrdering = tableQueryOrdering;
}
- public TsBlockReader query(String tableName, List<String> columns,
ExpressionTree timeFilter,
- ExpressionTree idFilter, ExpressionTree measurementFilter) throws
ReadProcessException {
+ public TsBlockReader query(
+ String tableName,
+ List<String> columns,
+ ExpressionTree timeFilter,
+ ExpressionTree idFilter,
+ ExpressionTree measurementFilter)
+ throws ReadProcessException {
TsFileMetadata fileMetadata = metadataQuerier.getWholeFileMetadata();
- MetadataIndexNode tableRoot = fileMetadata.getTableMetadataIndexNodeMap()
- .get(tableName);
+ MetadataIndexNode tableRoot =
fileMetadata.getTableMetadataIndexNodeMap().get(tableName);
TableSchema tableSchema = fileMetadata.getTableSchemaMap().get(tableName);
if (tableRoot == null || tableSchema == null) {
return new EmptyTsBlockReader();
@@ -53,12 +60,18 @@ public class TableQueryExecutor {
}
columnMapping.add(measurementFilter);
- DeviceTaskIterator deviceTaskIterator = new DeviceTaskIterator(columns,
tableRoot,
- columnMapping, metadataQuerier, idFilter, tableSchema);
+ DeviceTaskIterator deviceTaskIterator =
+ new DeviceTaskIterator(
+ columns, tableRoot, columnMapping, metadataQuerier, idFilter,
tableSchema);
switch (tableQueryOrdering) {
case DEVICE:
- return new DeviceOrderedTsBlockReader(deviceTaskIterator,
metadataQuerier, chunkLoader,
- timeFilter, measurementFilter, blockSize);
+ return new DeviceOrderedTsBlockReader(
+ deviceTaskIterator,
+ metadataQuerier,
+ chunkLoader,
+ timeFilter,
+ measurementFilter,
+ blockSize);
case TIME:
default:
throw new UnsupportedOrderingException(tableQueryOrdering.toString());
@@ -67,10 +80,11 @@ public class TableQueryExecutor {
public class ColumnMapping {
/**
- * The same column may occur multiple times in a query, but we surely do
not want to read it redundantly.
- * This mapping is used to put data of the same series into multiple
columns.
+ * The same column may occur multiple times in a query, but we surely do
not want to read it
+ * redundantly. This mapping is used to put data of the same series into
multiple columns.
*/
private Map<String, List<Integer>> columnPosMap = new HashMap<>();
+
private Set<String> idColumns = new HashSet<>();
private Set<String> measurementColumns = new HashSet<>();
@@ -90,7 +104,7 @@ public class TableQueryExecutor {
}
public void add(ExpressionTree measurementFilter) {
- //TODO: get measurements in the filter and add them to measurementColumns
+ // TODO: get measurements in the filter and add them to
measurementColumns
}
public List<Integer> getColumnPos(String columnName) {
@@ -118,4 +132,4 @@ public class TableQueryExecutor {
TIME,
DEVICE
}
-}
\ No newline at end of file
+}
diff --git
a/tsfile/src/main/java/org/apache/tsfile/read/query/executor/TsFileExecutor.java
b/tsfile/src/main/java/org/apache/tsfile/read/query/executor/TsFileExecutor.java
index 1ba683ac..e599e765 100644
---
a/tsfile/src/main/java/org/apache/tsfile/read/query/executor/TsFileExecutor.java
+++
b/tsfile/src/main/java/org/apache/tsfile/read/query/executor/TsFileExecutor.java
@@ -99,9 +99,9 @@ public class TsFileExecutor implements QueryExecutor {
/**
* Query with the space partition constraint.
*
- * @param queryExpression query expression
+ * @param queryExpression query expression
* @param spacePartitionStartPos the start position of the space partition
- * @param spacePartitionEndPos the end position of the space partition
+ * @param spacePartitionEndPos the end position of the space partition
* @return QueryDataSet
*/
public QueryDataSet execute(
@@ -157,7 +157,7 @@ public class TsFileExecutor implements QueryExecutor {
* has a GlobalTimeExpression, can use multi-way merge.
*
* @param selectedPathList all selected paths
- * @param timeFilter GlobalTimeExpression that takes effect to all
selected paths
+ * @param timeFilter GlobalTimeExpression that takes effect to all selected
paths
* @return DataSet without TimeGenerator
*/
private QueryDataSet execute(List<Path> selectedPathList,
GlobalTimeExpression timeFilter)
@@ -167,7 +167,7 @@ public class TsFileExecutor implements QueryExecutor {
/**
* @param selectedPathList completed path
- * @param timeExpression a GlobalTimeExpression or null
+ * @param timeExpression a GlobalTimeExpression or null
* @return DataSetWithoutTimeGenerator
*/
private QueryDataSet executeMayAttachTimeFiler(
diff --git
a/tsfile/src/main/java/org/apache/tsfile/read/query/executor/task/DeviceQueryTask.java
b/tsfile/src/main/java/org/apache/tsfile/read/query/executor/task/DeviceQueryTask.java
index 6b1510c5..e88218e6 100644
---
a/tsfile/src/main/java/org/apache/tsfile/read/query/executor/task/DeviceQueryTask.java
+++
b/tsfile/src/main/java/org/apache/tsfile/read/query/executor/task/DeviceQueryTask.java
@@ -19,12 +19,13 @@
package org.apache.tsfile.read.query.executor.task;
-import java.util.List;
import org.apache.tsfile.file.metadata.IDeviceID;
import org.apache.tsfile.file.metadata.MetadataIndexNode;
import org.apache.tsfile.file.metadata.TableSchema;
import org.apache.tsfile.read.query.executor.TableQueryExecutor.ColumnMapping;
+import java.util.List;
+
public class DeviceQueryTask {
private final IDeviceID deviceID;
private final List<String> columnNames;
@@ -32,8 +33,12 @@ public class DeviceQueryTask {
private final MetadataIndexNode indexRoot;
private final TableSchema tableSchema;
- public DeviceQueryTask(IDeviceID deviceID, List<String> columnNames,
ColumnMapping columnMapping,
- MetadataIndexNode indexRoot, TableSchema tableSchema) {
+ public DeviceQueryTask(
+ IDeviceID deviceID,
+ List<String> columnNames,
+ ColumnMapping columnMapping,
+ MetadataIndexNode indexRoot,
+ TableSchema tableSchema) {
this.deviceID = deviceID;
this.columnNames = columnNames;
this.columnMapping = columnMapping;
@@ -63,9 +68,6 @@ public class DeviceQueryTask {
@Override
public String toString() {
- return "DeviceQueryTask{" +
- "deviceID=" + deviceID +
- ", columnNames=" + columnNames +
- '}';
+ return "DeviceQueryTask{" + "deviceID=" + deviceID + ", columnNames=" +
columnNames + '}';
}
}
diff --git
a/tsfile/src/main/java/org/apache/tsfile/read/query/executor/task/DeviceTaskIterator.java
b/tsfile/src/main/java/org/apache/tsfile/read/query/executor/task/DeviceTaskIterator.java
index 69bdefae..3850b86d 100644
---
a/tsfile/src/main/java/org/apache/tsfile/read/query/executor/task/DeviceTaskIterator.java
+++
b/tsfile/src/main/java/org/apache/tsfile/read/query/executor/task/DeviceTaskIterator.java
@@ -1,7 +1,5 @@
package org.apache.tsfile.read.query.executor.task;
-import java.util.Iterator;
-import java.util.List;
import org.apache.tsfile.file.metadata.IDeviceID;
import org.apache.tsfile.file.metadata.MetadataIndexNode;
import org.apache.tsfile.file.metadata.TableSchema;
@@ -10,14 +8,21 @@ import org.apache.tsfile.read.expression.ExpressionTree;
import org.apache.tsfile.read.query.executor.TableQueryExecutor.ColumnMapping;
import org.apache.tsfile.utils.Pair;
+import java.util.Iterator;
+import java.util.List;
+
public class DeviceTaskIterator implements Iterator<DeviceQueryTask> {
private List<String> columnNames;
private ColumnMapping columnMapping;
private TableSchema tableSchema;
private Iterator<Pair<IDeviceID, MetadataIndexNode>> deviceMetaIterator;
- public DeviceTaskIterator(List<String> columnNames, MetadataIndexNode
indexRoot,
- ColumnMapping columnMapping, IMetadataQuerier metadataQuerier,
ExpressionTree idFilter,
+ public DeviceTaskIterator(
+ List<String> columnNames,
+ MetadataIndexNode indexRoot,
+ ColumnMapping columnMapping,
+ IMetadataQuerier metadataQuerier,
+ ExpressionTree idFilter,
TableSchema tableSchema) {
this.columnNames = columnNames;
this.columnMapping = columnMapping;
diff --git
a/tsfile/src/main/java/org/apache/tsfile/read/reader/block/DeviceOrderedTsBlockReader.java
b/tsfile/src/main/java/org/apache/tsfile/read/reader/block/DeviceOrderedTsBlockReader.java
index 8a8c981c..37243777 100644
---
a/tsfile/src/main/java/org/apache/tsfile/read/reader/block/DeviceOrderedTsBlockReader.java
+++
b/tsfile/src/main/java/org/apache/tsfile/read/reader/block/DeviceOrderedTsBlockReader.java
@@ -1,16 +1,18 @@
package org.apache.tsfile.read.reader.block;
-import java.io.IOException;
-import java.util.NoSuchElementException;
import org.apache.tsfile.read.common.block.TsBlock;
import org.apache.tsfile.read.controller.IChunkLoader;
import org.apache.tsfile.read.controller.IMetadataQuerier;
import org.apache.tsfile.read.expression.ExpressionTree;
import org.apache.tsfile.read.query.executor.task.DeviceQueryTask;
import org.apache.tsfile.read.query.executor.task.DeviceTaskIterator;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.io.IOException;
+import java.util.NoSuchElementException;
+
public class DeviceOrderedTsBlockReader implements TsBlockReader {
private static final Logger LOGGER =
LoggerFactory.getLogger(DeviceOrderedTsBlockReader.class);
@@ -22,9 +24,12 @@ public class DeviceOrderedTsBlockReader implements
TsBlockReader {
private ExpressionTree timeFilter;
private ExpressionTree measurementFilter;
- public DeviceOrderedTsBlockReader(DeviceTaskIterator taskIterator,
+ public DeviceOrderedTsBlockReader(
+ DeviceTaskIterator taskIterator,
IMetadataQuerier metadataQuerier,
- IChunkLoader chunkLoader, ExpressionTree timeFilter, ExpressionTree
measurementFilter,
+ IChunkLoader chunkLoader,
+ ExpressionTree timeFilter,
+ ExpressionTree measurementFilter,
int blockSize) {
this.taskIterator = taskIterator;
this.metadataQuerier = metadataQuerier;
@@ -42,8 +47,9 @@ public class DeviceOrderedTsBlockReader implements
TsBlockReader {
while (taskIterator.hasNext()) {
final DeviceQueryTask nextTask = taskIterator.next();
try {
- currentReader = new SingleDeviceTsBlockReader(nextTask,
metadataQuerier, chunkLoader,
- blockSize, timeFilter, measurementFilter);
+ currentReader =
+ new SingleDeviceTsBlockReader(
+ nextTask, metadataQuerier, chunkLoader, blockSize, timeFilter,
measurementFilter);
} catch (IOException e) {
LOGGER.error("Failed to construct reader for {}", nextTask, e);
}
diff --git
a/tsfile/src/main/java/org/apache/tsfile/read/reader/block/SingleDeviceTsBlockReader.java
b/tsfile/src/main/java/org/apache/tsfile/read/reader/block/SingleDeviceTsBlockReader.java
index 2f2c1783..f9b635c5 100644
---
a/tsfile/src/main/java/org/apache/tsfile/read/reader/block/SingleDeviceTsBlockReader.java
+++
b/tsfile/src/main/java/org/apache/tsfile/read/reader/block/SingleDeviceTsBlockReader.java
@@ -1,14 +1,5 @@
package org.apache.tsfile.read.reader.block;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.NoSuchElementException;
import org.apache.tsfile.block.column.Column;
import org.apache.tsfile.file.metadata.IChunkMetadata;
import org.apache.tsfile.read.common.BatchData;
@@ -21,9 +12,20 @@ import
org.apache.tsfile.read.query.executor.task.DeviceQueryTask;
import org.apache.tsfile.read.reader.series.AbstractFileSeriesReader;
import org.apache.tsfile.read.reader.series.FileSeriesReader;
import org.apache.tsfile.utils.Binary;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.NoSuchElementException;
+
public class SingleDeviceTsBlockReader implements TsBlockReader {
private static final Logger LOGGER =
LoggerFactory.getLogger(SingleDeviceTsBlockReader.class);
@@ -38,32 +40,43 @@ public class SingleDeviceTsBlockReader implements
TsBlockReader {
private long nextTime;
- public SingleDeviceTsBlockReader(DeviceQueryTask task, IMetadataQuerier
metadataQuerier,
- IChunkLoader chunkLoader, int blockSize, ExpressionTree timeExpression,
- ExpressionTree measurementFilter) throws IOException {
+ public SingleDeviceTsBlockReader(
+ DeviceQueryTask task,
+ IMetadataQuerier metadataQuerier,
+ IChunkLoader chunkLoader,
+ int blockSize,
+ ExpressionTree timeExpression,
+ ExpressionTree measurementFilter)
+ throws IOException {
this.task = task;
this.blockSize = blockSize;
this.measurementExpression = measurementFilter;
- this.currentBlock = TsBlock.buildTsBlock(task.getColumnNames(),
task.getTableSchema(),
- blockSize);
+ this.currentBlock =
+ TsBlock.buildTsBlock(task.getColumnNames(), task.getTableSchema(),
blockSize);
this.measureColumnContextMap = new HashMap<>();
this.idColumnContextMap = new HashMap<>();
- final List<List<IChunkMetadata>> chunkMetadataLists =
metadataQuerier.getChunkMetadataLists(
- task.getDeviceID(), task.getColumnMapping()
- .getMeasurementColumns(), task.getIndexRoot());
+ final List<List<IChunkMetadata>> chunkMetadataLists =
+ metadataQuerier.getChunkMetadataLists(
+ task.getDeviceID(),
+ task.getColumnMapping().getMeasurementColumns(),
+ task.getIndexRoot());
Filter timeFilter = timeExpression == null ? null :
timeExpression.toFilter();
for (List<IChunkMetadata> chunkMetadataList : chunkMetadataLists) {
if (!chunkMetadataList.isEmpty()) {
final String measurementUid =
chunkMetadataList.get(0).getMeasurementUid();
- AbstractFileSeriesReader seriesReader = new
FileSeriesReader(chunkLoader,
- chunkMetadataList, timeFilter);
+ AbstractFileSeriesReader seriesReader =
+ new FileSeriesReader(chunkLoader, chunkMetadataList, timeFilter);
if (seriesReader.hasNextBatch()) {
- measureColumnContextMap.put(measurementUid, new
MeasurementColumnContext(measurementUid,
- task.getColumnMapping().getColumnPos(measurementUid),
seriesReader.nextBatch(),
- seriesReader));
+ measureColumnContextMap.put(
+ measurementUid,
+ new MeasurementColumnContext(
+ measurementUid,
+ task.getColumnMapping().getColumnPos(measurementUid),
+ seriesReader.nextBatch(),
+ seriesReader));
}
}
}
@@ -130,7 +143,10 @@ public class SingleDeviceTsBlockReader implements
TsBlockReader {
final IdColumnContext idColumnContext = entry.getValue();
for (Integer pos : idColumnContext.posInResult) {
final Column column = currentBlock.getColumn(pos);
- fillIdColumn(column,
task.getDeviceID().segment(idColumnContext.posInDeviceId), 0,
+ fillIdColumn(
+ column,
+ task.getDeviceID().segment(idColumnContext.posInDeviceId),
+ 0,
currentBlock.getPositionCount());
}
}
@@ -202,9 +218,9 @@ public class SingleDeviceTsBlockReader implements
TsBlockReader {
case DOUBLE:
column.getDoubles()[pos] = batchData.getDouble();
break;
- case FLOAT:
- column.getFloats()[pos] = batchData.getFloat();
- break;
+ case FLOAT:
+ column.getFloats()[pos] = batchData.getFloat();
+ break;
case INT32:
column.getInts()[pos] = batchData.getInt();
break;
@@ -220,7 +236,6 @@ public class SingleDeviceTsBlockReader implements
TsBlockReader {
column.setPositionCount(pos + 1);
}
-
@Override
public TsBlock next() throws IOException {
if (!hasNext()) {
@@ -243,7 +258,9 @@ public class SingleDeviceTsBlockReader implements
TsBlockReader {
private BatchData currentBatch;
private final AbstractFileSeriesReader seriesReader;
- public MeasurementColumnContext(String columnName, List<Integer>
posInResult,
+ public MeasurementColumnContext(
+ String columnName,
+ List<Integer> posInResult,
BatchData currentBatch,
AbstractFileSeriesReader seriesReader) {
this.columnName = columnName;
@@ -258,8 +275,7 @@ public class SingleDeviceTsBlockReader implements
TsBlockReader {
private final List<Integer> posInResult;
private final int posInDeviceId;
- public IdColumnContext(List<Integer> posInResult,
- int posInDeviceId) {
+ public IdColumnContext(List<Integer> posInResult, int posInDeviceId) {
this.posInResult = posInResult;
this.posInDeviceId = posInDeviceId;
}
diff --git
a/tsfile/src/main/java/org/apache/tsfile/read/reader/block/TsBlockReader.java
b/tsfile/src/main/java/org/apache/tsfile/read/reader/block/TsBlockReader.java
index f542ac7d..a63c0717 100644
---
a/tsfile/src/main/java/org/apache/tsfile/read/reader/block/TsBlockReader.java
+++
b/tsfile/src/main/java/org/apache/tsfile/read/reader/block/TsBlockReader.java
@@ -19,11 +19,13 @@
package org.apache.tsfile.read.reader.block;
-import java.io.IOException;
import org.apache.tsfile.read.common.block.TsBlock;
+import java.io.IOException;
+
public interface TsBlockReader extends AutoCloseable {
boolean hasNext();
+
TsBlock next() throws IOException;
class EmptyTsBlockReader implements TsBlockReader {
diff --git a/tsfile/src/main/java/org/apache/tsfile/utils/WriteUtils.java
b/tsfile/src/main/java/org/apache/tsfile/utils/WriteUtils.java
index 1cd92b43..2fb13466 100644
--- a/tsfile/src/main/java/org/apache/tsfile/utils/WriteUtils.java
+++ b/tsfile/src/main/java/org/apache/tsfile/utils/WriteUtils.java
@@ -18,16 +18,18 @@
*/
package org.apache.tsfile.utils;
-import java.util.ArrayList;
-import java.util.List;
import org.apache.tsfile.file.metadata.IDeviceID;
import org.apache.tsfile.write.record.Tablet;
+import java.util.ArrayList;
+import java.util.List;
+
public class WriteUtils {
/**
* A Tablet for the table-view insert interface may contain more than one
device. This method
* splits a Tablet by different deviceIds so that the caller can insert them
device-by-device.
+ *
* @return (deviceId, endRowNum) pairs
*/
public static List<Pair<IDeviceID, Integer>> splitTabletByDevice(Tablet
tablet) {
diff --git a/tsfile/src/main/java/org/apache/tsfile/write/TsFileWriter.java
b/tsfile/src/main/java/org/apache/tsfile/write/TsFileWriter.java
index 727089ff..b4d282d3 100644
--- a/tsfile/src/main/java/org/apache/tsfile/write/TsFileWriter.java
+++ b/tsfile/src/main/java/org/apache/tsfile/write/TsFileWriter.java
@@ -369,9 +369,11 @@ public class TsFileWriter implements AutoCloseable {
if (columnIndex < 0) {
throw new
NoMeasurementException(writingColumnSchema.getMeasurementId());
}
- final MeasurementSchema registeredColumnSchema =
tableSchema.getColumnSchemas().get(columnIndex);
+ final MeasurementSchema registeredColumnSchema =
+ tableSchema.getColumnSchemas().get(columnIndex);
if
(!writingColumnSchema.getType().equals(registeredColumnSchema.getType())) {
- throw new ConflictDataTypeException(writingColumnSchema.getType(),
registeredColumnSchema.getType());
+ throw new ConflictDataTypeException(
+ writingColumnSchema.getType(), registeredColumnSchema.getType());
}
}
}
@@ -681,13 +683,20 @@ public class TsFileWriter implements AutoCloseable {
// make sure the ChunkGroupWriter for this Tablet exist and there is no
type conflict
checkIsTableExist(tablet);
// spilt the tablet by deviceId
- final List<Pair<IDeviceID, Integer>> deviceIdEndIndexPairs =
WriteUtils.splitTabletByDevice(tablet);
+ final List<Pair<IDeviceID, Integer>> deviceIdEndIndexPairs =
+ WriteUtils.splitTabletByDevice(tablet);
int startIndex = 0;
for (Pair<IDeviceID, Integer> pair : deviceIdEndIndexPairs) {
// get corresponding ChunkGroupWriter and write this Tablet
- recordCount += tryToInitialGroupWriter(pair.left,
isTableWriteAligned).write(tablet, startIndex, pair.right,
- tablet.getIdColumnRange(), tablet.getSchemas().size());
+ recordCount +=
+ tryToInitialGroupWriter(pair.left, isTableWriteAligned)
+ .write(
+ tablet,
+ startIndex,
+ pair.right,
+ tablet.getIdColumnRange(),
+ tablet.getSchemas().size());
startIndex = pair.right;
}
return checkMemorySizeAndMayFlushChunks();
diff --git
a/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkGroupWriterImpl.java
b/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkGroupWriterImpl.java
index 67552726..ecf669f5 100644
---
a/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkGroupWriterImpl.java
+++
b/tsfile/src/main/java/org/apache/tsfile/write/chunk/AlignedChunkGroupWriterImpl.java
@@ -74,8 +74,10 @@ public class AlignedChunkGroupWriterImpl implements
IChunkGroupWriter {
tryToAddSeriesWriterInternal(measurementSchema);
}
- public ValueChunkWriter tryToAddSeriesWriterInternal(MeasurementSchema
measurementSchema) throws IOException {
- ValueChunkWriter valueChunkWriter =
valueChunkWriterMap.get(measurementSchema.getMeasurementId());
+ public ValueChunkWriter tryToAddSeriesWriterInternal(MeasurementSchema
measurementSchema)
+ throws IOException {
+ ValueChunkWriter valueChunkWriter =
+ valueChunkWriterMap.get(measurementSchema.getMeasurementId());
if (valueChunkWriter == null) {
valueChunkWriter =
new ValueChunkWriter(
@@ -161,18 +163,19 @@ public class AlignedChunkGroupWriterImpl implements
IChunkGroupWriter {
return write(tablet, 0, tablet.rowSize, 0, tablet.getSchemas().size());
}
- public int write(Tablet tablet, int startRowIndex, int endRowIndex) throws
IOException, WriteProcessException {
+ public int write(Tablet tablet, int startRowIndex, int endRowIndex)
+ throws IOException, WriteProcessException {
return write(tablet, startRowIndex, endRowIndex, 0,
tablet.getSchemas().size());
}
@Override
- public int write(Tablet tablet, int startRowIndex, int endRowIndex, int
startColIndex,
- int endColIndex) throws WriteProcessException,
- IOException {
+ public int write(
+ Tablet tablet, int startRowIndex, int endRowIndex, int startColIndex,
int endColIndex)
+ throws WriteProcessException, IOException {
int pointCount = 0;
List<MeasurementSchema> measurementSchemas = tablet.getSchemas();
List<ValueChunkWriter> emptyValueChunkWriters = new ArrayList<>();
- //TODO: should we allow duplicated measurements in a Tablet?
+ // TODO: should we allow duplicated measurements in a Tablet?
Set<String> existingMeasurements =
measurementSchemas.stream()
.map(MeasurementSchema::getMeasurementId)
@@ -182,7 +185,7 @@ public class AlignedChunkGroupWriterImpl implements
IChunkGroupWriter {
emptyValueChunkWriters.add(entry.getValue());
}
}
- //TODO: changing to a column-first style by calculating the remaining page
space of each
+ // TODO: changing to a column-first style by calculating the remaining
page space of each
// column firsts
for (int row = startRowIndex; row < endRowIndex; row++) {
long time = tablet.timestamps[row];
diff --git
a/tsfile/src/main/java/org/apache/tsfile/write/chunk/IChunkGroupWriter.java
b/tsfile/src/main/java/org/apache/tsfile/write/chunk/IChunkGroupWriter.java
index d20997a7..f63c8950 100644
--- a/tsfile/src/main/java/org/apache/tsfile/write/chunk/IChunkGroupWriter.java
+++ b/tsfile/src/main/java/org/apache/tsfile/write/chunk/IChunkGroupWriter.java
@@ -58,7 +58,6 @@ public interface IChunkGroupWriter {
int write(Tablet table, int startRowIndex, int endRowIndex, int
startColIndex, int endColIndex)
throws WriteProcessException, IOException;
-
/**
* flushing method for serializing to local file system or HDFS. Implemented
by
* ChunkWriterImpl.writeToFileWriter().
diff --git
a/tsfile/src/main/java/org/apache/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java
b/tsfile/src/main/java/org/apache/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java
index 70cd407e..da5a635f 100644
---
a/tsfile/src/main/java/org/apache/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java
+++
b/tsfile/src/main/java/org/apache/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java
@@ -94,14 +94,15 @@ public class NonAlignedChunkGroupWriterImpl implements
IChunkGroupWriter {
return write(tablet, 0, tablet.rowSize, 0, tablet.getSchemas().size());
}
- public int write(Tablet tablet, int startRowIndex, int endRowIndex) throws
IOException, WriteProcessException {
+ public int write(Tablet tablet, int startRowIndex, int endRowIndex)
+ throws IOException, WriteProcessException {
return write(tablet, startRowIndex, endRowIndex, 0,
tablet.getSchemas().size());
}
@Override
- public int write(Tablet tablet, int startRowIndex, int endRowIndex, int
startColIndex,
- int endColIndex) throws WriteProcessException,
- IOException {
+ public int write(
+ Tablet tablet, int startRowIndex, int endRowIndex, int startColIndex,
int endColIndex)
+ throws WriteProcessException, IOException {
int maxPointCount = 0, pointCount;
List<MeasurementSchema> timeseries = tablet.getSchemas();
for (int column = startColIndex; column < endColIndex; column++) {
diff --git a/tsfile/src/main/java/org/apache/tsfile/write/record/Tablet.java
b/tsfile/src/main/java/org/apache/tsfile/write/record/Tablet.java
index 879e7be6..0e007bb7 100644
--- a/tsfile/src/main/java/org/apache/tsfile/write/record/Tablet.java
+++ b/tsfile/src/main/java/org/apache/tsfile/write/record/Tablet.java
@@ -55,14 +55,10 @@ public class Tablet {
private static final int DEFAULT_SIZE = 1024;
private static final String NOT_SUPPORT_DATATYPE = "Data type %s is not
supported.";
- /**
- * DeviceId if using tree-view interfaces or TableName when using table-view
interfaces.
- */
+ /** DeviceId if using tree-view interfaces or TableName when using
table-view interfaces. */
public String insertTargetName;
- /**
- * The list of {@link MeasurementSchema}s for creating the {@link Tablet}
- */
+ /** The list of {@link MeasurementSchema}s for creating the {@link Tablet} */
private List<MeasurementSchema> schemas;
/**
* Marking the type of each column, namely ID or MEASUREMENT. Notice: the ID
columns must be the
@@ -70,35 +66,21 @@ public class Tablet {
*/
private List<ColumnType> columnTypes;
- /**
- * Columns in [0, idColumnRange) are all ID columns.
- */
+ /** Columns in [0, idColumnRange) are all ID columns. */
private int idColumnRange;
- /**
- * MeasurementId->indexOf({@link MeasurementSchema})
- */
+ /** MeasurementId->indexOf({@link MeasurementSchema}) */
private final Map<String, Integer> measurementIndex;
- /**
- * Timestamps in this {@link Tablet}
- */
+ /** Timestamps in this {@link Tablet} */
public long[] timestamps;
- /**
- * Each object is a primitive type array, which represents values of one
measurement
- */
+ /** Each object is a primitive type array, which represents values of one
measurement */
public Object[] values;
- /**
- * Each {@link BitMap} represents the existence of each value in the current
column.
- */
+ /** Each {@link BitMap} represents the existence of each value in the
current column. */
public BitMap[] bitMaps;
- /**
- * The number of rows to include in this {@link Tablet}
- */
+ /** The number of rows to include in this {@link Tablet} */
public int rowSize;
- /**
- * The maximum number of rows for this {@link Tablet}
- */
+ /** The maximum number of rows for this {@link Tablet} */
private final int maxRowNumber;
/**
@@ -107,7 +89,7 @@ public class Tablet {
*
* @param insertTargetName the name of the device specified to be written in
* @param schemas the list of {@link MeasurementSchema}s for creating the
tablet, only
- * measurementId and type take effects
+ * measurementId and type take effects
*/
public Tablet(String insertTargetName, List<MeasurementSchema> schemas) {
this(insertTargetName, schemas, DEFAULT_SIZE);
@@ -120,7 +102,7 @@ public class Tablet {
*
* @param insertTargetName the name of the device specified to be written in
* @param schemas the list of {@link MeasurementSchema}s for creating the
row batch, only
- * measurementId and type take effects
+ * measurementId and type take effects
* @param maxRowNumber the maximum number of rows for this tablet
*/
public Tablet(String insertTargetName, List<MeasurementSchema> schemas, int
maxRowNumber) {
@@ -142,7 +124,7 @@ public class Tablet {
*
* @param insertTargetName the name of the device specified to be written in
* @param schemas the list of {@link MeasurementSchema}s for creating the
row batch, only
- * measurementId and type take effects
+ * measurementId and type take effects
* @param timestamps given timestamps
* @param values given values
* @param bitMaps given {@link BitMap}s
@@ -155,9 +137,14 @@ public class Tablet {
Object[] values,
BitMap[] bitMaps,
int maxRowNumber) {
- this(insertTargetName, schemas, ColumnType.nCopy(ColumnType.MEASUREMENT,
schemas.size()),
+ this(
+ insertTargetName,
+ schemas,
+ ColumnType.nCopy(ColumnType.MEASUREMENT, schemas.size()),
timestamps,
- values, bitMaps, maxRowNumber);
+ values,
+ bitMaps,
+ maxRowNumber);
}
public Tablet(
@@ -181,7 +168,6 @@ public class Tablet {
constructMeasurementIndexMap();
}
-
private void constructMeasurementIndexMap() {
int indexInSchema = 0;
for (MeasurementSchema schema : schemas) {
@@ -230,43 +216,49 @@ public class Tablet {
bitMaps[indexOfSchema].mark(rowIndex);
}
switch (dataType) {
- case TEXT: {
- Binary[] sensor = (Binary[]) values[indexOfSchema];
- if (value instanceof Binary) {
- sensor[rowIndex] = (Binary) value;
- } else {
- sensor[rowIndex] =
- value != null
- ? new Binary((String) value, TSFileConfig.STRING_CHARSET)
- : Binary.EMPTY_VALUE;
+ case TEXT:
+ {
+ Binary[] sensor = (Binary[]) values[indexOfSchema];
+ if (value instanceof Binary) {
+ sensor[rowIndex] = (Binary) value;
+ } else {
+ sensor[rowIndex] =
+ value != null
+ ? new Binary((String) value, TSFileConfig.STRING_CHARSET)
+ : Binary.EMPTY_VALUE;
+ }
+ break;
+ }
+ case FLOAT:
+ {
+ float[] sensor = (float[]) values[indexOfSchema];
+ sensor[rowIndex] = value != null ? (float) value : Float.MIN_VALUE;
+ break;
+ }
+ case INT32:
+ {
+ int[] sensor = (int[]) values[indexOfSchema];
+ sensor[rowIndex] = value != null ? (int) value : Integer.MIN_VALUE;
+ break;
+ }
+ case INT64:
+ {
+ long[] sensor = (long[]) values[indexOfSchema];
+ sensor[rowIndex] = value != null ? (long) value : Long.MIN_VALUE;
+ break;
+ }
+ case DOUBLE:
+ {
+ double[] sensor = (double[]) values[indexOfSchema];
+ sensor[rowIndex] = value != null ? (double) value : Double.MIN_VALUE;
+ break;
+ }
+ case BOOLEAN:
+ {
+ boolean[] sensor = (boolean[]) values[indexOfSchema];
+ sensor[rowIndex] = value != null && (boolean) value;
+ break;
}
- break;
- }
- case FLOAT: {
- float[] sensor = (float[]) values[indexOfSchema];
- sensor[rowIndex] = value != null ? (float) value : Float.MIN_VALUE;
- break;
- }
- case INT32: {
- int[] sensor = (int[]) values[indexOfSchema];
- sensor[rowIndex] = value != null ? (int) value : Integer.MIN_VALUE;
- break;
- }
- case INT64: {
- long[] sensor = (long[]) values[indexOfSchema];
- sensor[rowIndex] = value != null ? (long) value : Long.MIN_VALUE;
- break;
- }
- case DOUBLE: {
- double[] sensor = (double[]) values[indexOfSchema];
- sensor[rowIndex] = value != null ? (double) value : Double.MIN_VALUE;
- break;
- }
- case BOOLEAN: {
- boolean[] sensor = (boolean[]) values[indexOfSchema];
- sensor[rowIndex] = value != null && (boolean) value;
- break;
- }
default:
throw new
UnSupportedDataTypeException(String.format(NOT_SUPPORT_DATATYPE, dataType));
}
@@ -276,16 +268,12 @@ public class Tablet {
return schemas;
}
- /**
- * Return the maximum number of rows for this tablet
- */
+ /** Return the maximum number of rows for this tablet */
public int getMaxRowNumber() {
return maxRowNumber;
}
- /**
- * Reset Tablet to the default state - set the rowSize to 0 and reset bitMaps
- */
+ /** Reset Tablet to the default state - set the rowSize to 0 and reset
bitMaps */
public void reset() {
rowSize = 0;
if (bitMaps != null) {
@@ -346,9 +334,7 @@ public class Tablet {
return rowSize * 8;
}
- /**
- * @return Total bytes of values
- */
+ /** @return Total bytes of values */
public int getTotalValueOccupation() {
int valueOccupation = 0;
int columnIndex = 0;
@@ -396,9 +382,7 @@ public class Tablet {
return valueOccupation;
}
- /**
- * Serialize {@link Tablet}
- */
+ /** Serialize {@link Tablet} */
public ByteBuffer serialize() throws IOException {
try (PublicBAOS byteArrayOutputStream = new PublicBAOS();
DataOutputStream outputStream = new
DataOutputStream(byteArrayOutputStream)) {
@@ -416,9 +400,7 @@ public class Tablet {
writeValues(stream);
}
- /**
- * Serialize {@link MeasurementSchema}s
- */
+ /** Serialize {@link MeasurementSchema}s */
private void writeMeasurementSchemas(DataOutputStream stream) throws
IOException {
ReadWriteIOUtils.write(BytesUtils.boolToByte(schemas != null), stream);
if (schemas != null) {
@@ -443,9 +425,7 @@ public class Tablet {
}
}
- /**
- * Serialize {@link BitMap}s
- */
+ /** Serialize {@link BitMap}s */
private void writeBitMaps(DataOutputStream stream) throws IOException {
ReadWriteIOUtils.write(BytesUtils.boolToByte(bitMaps != null), stream);
if (bitMaps != null) {
@@ -462,9 +442,7 @@ public class Tablet {
}
}
- /**
- * Serialize values
- */
+ /** Serialize values */
private void writeValues(DataOutputStream stream) throws IOException {
ReadWriteIOUtils.write(BytesUtils.boolToByte(values != null), stream);
if (values != null) {
@@ -527,9 +505,7 @@ public class Tablet {
}
}
- /**
- * Deserialize Tablet
- */
+ /** Deserialize Tablet */
public static Tablet deserialize(ByteBuffer byteBuffer) {
String deviceId = ReadWriteIOUtils.readString(byteBuffer);
int rowSize = ReadWriteIOUtils.readInt(byteBuffer);
@@ -578,9 +554,7 @@ public class Tablet {
return tablet;
}
- /**
- * deserialize bitmaps
- */
+ /** deserialize bitmaps */
public static BitMap[] readBitMapsFromBuffer(ByteBuffer byteBuffer, int
columns) {
BitMap[] bitMaps = new BitMap[columns];
for (int i = 0; i < columns; i++) {
@@ -853,7 +827,6 @@ public class Tablet {
return bitMaps != null && bitMaps[j] != null && !bitMaps[j].isMarked(i);
}
/**
- *
* @param i row number
* @param j column number
* @return the string format of the i-th value in the j-th column.