diff --git a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/AbstractAlignedChunkMetadata.java b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/AbstractAlignedChunkMetadata.java new file mode 100644 index 000000000..4bbc28581 --- /dev/null +++ b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/AbstractAlignedChunkMetadata.java @@ -0,0 +1,195 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tsfile.file.metadata; + +import org.apache.tsfile.enums.TSDataType; +import org.apache.tsfile.file.metadata.statistics.Statistics; +import org.apache.tsfile.read.common.TimeRange; +import org.apache.tsfile.read.controller.IChunkLoader; + +import java.io.OutputStream; +import java.io.Serializable; +import java.util.List; +import java.util.Optional; + +public abstract class AbstractAlignedChunkMetadata implements IChunkMetadata { + + // ChunkMetadata for time column + protected final IChunkMetadata timeChunkMetadata; + // ChunkMetadata for all subSensors in the vector + protected final List valueChunkMetadataList; + + /** ChunkLoader of metadata, used to create IChunkReader */ + private IChunkLoader chunkLoader; + + AbstractAlignedChunkMetadata( + IChunkMetadata timeChunkMetadata, List valueChunkMetadataList) { + this.timeChunkMetadata = timeChunkMetadata; + this.valueChunkMetadataList = valueChunkMetadataList; + } + + @Override + public Statistics getTimeStatistics() { + return timeChunkMetadata.getStatistics(); + } + + @Override + public Optional> getMeasurementStatistics( + int measurementIndex) { + IChunkMetadata chunkMetadata = valueChunkMetadataList.get(measurementIndex); + return Optional.ofNullable(chunkMetadata == null ? null : chunkMetadata.getStatistics()); + } + + @Override + public boolean hasNullValue(int measurementIndex) { + long rowCount = getTimeStatistics().getCount(); + Optional> statistics = + getMeasurementStatistics(measurementIndex); + return statistics.map(stat -> stat.hasNullValue(rowCount)).orElse(true); + } + + @Override + public int getMeasurementCount() { + return valueChunkMetadataList.size(); + } + + @Override + public boolean isModified() { + return timeChunkMetadata.isModified(); + } + + @Override + public void setModified(boolean modified) { + timeChunkMetadata.setModified(modified); + for (IChunkMetadata v : valueChunkMetadataList) { + if (v != null) { + v.setModified(modified); + } + } + } + + @Override + public boolean isSeq() { + return timeChunkMetadata.isSeq(); + } + + @Override + public void setSeq(boolean seq) { + timeChunkMetadata.setSeq(seq); + for (IChunkMetadata v : valueChunkMetadataList) { + if (v != null) { + v.setSeq(seq); + } + } + } + + @Override + public long getVersion() { + return timeChunkMetadata.getVersion(); + } + + @Override + public void setVersion(long version) { + timeChunkMetadata.setVersion(version); + for (IChunkMetadata valueChunkMetadata : valueChunkMetadataList) { + if (valueChunkMetadata != null) { + valueChunkMetadata.setVersion(version); + } + } + } + + @Override + public long getOffsetOfChunkHeader() { + return timeChunkMetadata.getOffsetOfChunkHeader(); + } + + @Override + public long getStartTime() { + return timeChunkMetadata.getStartTime(); + } + + @Override + public long getEndTime() { + return timeChunkMetadata.getEndTime(); + } + + @Override + public IChunkLoader getChunkLoader() { + return chunkLoader; + } + + @Override + public boolean needSetChunkLoader() { + return chunkLoader == null; + } + + @Override + public void setChunkLoader(IChunkLoader chunkLoader) { + this.chunkLoader = chunkLoader; + } + + @Override + public void setClosed(boolean closed) { + timeChunkMetadata.setClosed(closed); + for (IChunkMetadata chunkMetadata : valueChunkMetadataList) { + if (chunkMetadata != null) { + chunkMetadata.setClosed(closed); + } + } + } + + @Override + public TSDataType getDataType() { + return timeChunkMetadata.getDataType(); + } + + @Override + public String getMeasurementUid() { + return timeChunkMetadata.getMeasurementUid(); + } + + @Override + public void insertIntoSortedDeletions(TimeRange timeRange) { + throw new UnsupportedOperationException(); + } + + @Override + public List getDeleteIntervalList() { + throw new UnsupportedOperationException(); + } + + @Override + public int serializeTo(OutputStream outputStream, boolean serializeStatistic) { + throw new UnsupportedOperationException("VectorChunkMetadata doesn't support serial method"); + } + + @Override + public byte getMask() { + return 0; + } + + public IChunkMetadata getTimeChunkMetadata() { + return timeChunkMetadata; + } + + public List getValueChunkMetadataList() { + return valueChunkMetadataList; + } +} diff --git a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/AbstractAlignedTimeSeriesMetadata.java b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/AbstractAlignedTimeSeriesMetadata.java index f9762f07e..f793f7c5d 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/AbstractAlignedTimeSeriesMetadata.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/AbstractAlignedTimeSeriesMetadata.java @@ -112,7 +112,7 @@ public List loadChunkMetadataList() { return chunkMetadataLoader.loadChunkMetadataList(this); } - public List getCopiedChunkMetadataList() { + public List getCopiedChunkMetadataList() { List timeChunkMetadata = timeseriesMetadata.getCopiedChunkMetadataList(); List> valueChunkMetadataList = new ArrayList<>(); for (TimeseriesMetadata metadata : valueTimeseriesMetadataList) { @@ -122,7 +122,7 @@ public List getCopiedChunkMetadataList() { return getAlignedChunkMetadata(timeChunkMetadata, valueChunkMetadataList); } - public List getChunkMetadataList() { + public List getChunkMetadataList() { List timeChunkMetadata = timeseriesMetadata.getChunkMetadataList(); List> valueChunkMetadataList = new ArrayList<>(); for (TimeseriesMetadata metadata : valueTimeseriesMetadataList) { @@ -133,9 +133,9 @@ public List getChunkMetadataList() { } /** Notice: if all the value chunks is empty chunk, then return empty list. */ - private List getAlignedChunkMetadata( + private List getAlignedChunkMetadata( List timeChunkMetadata, List> valueChunkMetadataList) { - List res = new ArrayList<>(); + List res = new ArrayList<>(); for (int i = 0; i < timeChunkMetadata.size(); i++) { // only need time column if (valueTimeseriesMetadataList.isEmpty()) { @@ -160,11 +160,14 @@ private List getAlignedChunkMetadata( } abstract void constructAlignedChunkMetadata( - List res, + List res, IChunkMetadata timeChunkMetadata, List chunkMetadataList, boolean exits); + abstract AbstractAlignedChunkMetadata constructOnlyTimeChunkMetadata( + IChunkMetadata timeChunkMetadata); + @Override public void setChunkMetadataLoader(IChunkMetadataLoader chunkMetadataLoader) { this.chunkMetadataLoader = chunkMetadataLoader; diff --git a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/AlignedChunkMetadata.java b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/AlignedChunkMetadata.java index c92443be1..81df89ca2 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/AlignedChunkMetadata.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/AlignedChunkMetadata.java @@ -19,30 +19,16 @@ package org.apache.tsfile.file.metadata; -import org.apache.tsfile.enums.TSDataType; import org.apache.tsfile.file.metadata.statistics.Statistics; -import org.apache.tsfile.read.common.TimeRange; -import org.apache.tsfile.read.controller.IChunkLoader; -import java.io.OutputStream; import java.io.Serializable; import java.util.List; -import java.util.Optional; -public class AlignedChunkMetadata implements IChunkMetadata { - - // ChunkMetadata for time column - private final IChunkMetadata timeChunkMetadata; - // ChunkMetadata for all subSensors in the vector - private final List valueChunkMetadataList; - - /** ChunkLoader of metadata, used to create IChunkReader */ - private IChunkLoader chunkLoader; +public class AlignedChunkMetadata extends AbstractAlignedChunkMetadata { public AlignedChunkMetadata( IChunkMetadata timeChunkMetadata, List valueChunkMetadataList) { - this.timeChunkMetadata = timeChunkMetadata; - this.valueChunkMetadataList = valueChunkMetadataList; + super(timeChunkMetadata, valueChunkMetadataList); } @Override @@ -52,31 +38,6 @@ public Statistics getStatistics() { : timeChunkMetadata.getStatistics(); } - @Override - public Statistics getTimeStatistics() { - return timeChunkMetadata.getStatistics(); - } - - @Override - public Optional> getMeasurementStatistics( - int measurementIndex) { - IChunkMetadata chunkMetadata = valueChunkMetadataList.get(measurementIndex); - return Optional.ofNullable(chunkMetadata == null ? null : chunkMetadata.getStatistics()); - } - - @Override - public boolean hasNullValue(int measurementIndex) { - long rowCount = getTimeStatistics().getCount(); - Optional> statistics = - getMeasurementStatistics(measurementIndex); - return statistics.map(stat -> stat.hasNullValue(rowCount)).orElse(true); - } - - @Override - public int getMeasurementCount() { - return valueChunkMetadataList.size(); - } - @Override public boolean timeAllSelected() { for (int index = 0; index < getMeasurementCount(); index++) { @@ -88,127 +49,4 @@ public boolean timeAllSelected() { } return false; } - - @Override - public boolean isModified() { - return timeChunkMetadata.isModified(); - } - - @Override - public void setModified(boolean modified) { - timeChunkMetadata.setModified(modified); - for (IChunkMetadata v : valueChunkMetadataList) { - if (v != null) { - v.setModified(modified); - } - } - } - - @Override - public boolean isSeq() { - return timeChunkMetadata.isSeq(); - } - - @Override - public void setSeq(boolean seq) { - timeChunkMetadata.setSeq(seq); - for (IChunkMetadata v : valueChunkMetadataList) { - if (v != null) { - v.setSeq(seq); - } - } - } - - @Override - public long getVersion() { - return timeChunkMetadata.getVersion(); - } - - @Override - public void setVersion(long version) { - timeChunkMetadata.setVersion(version); - for (IChunkMetadata valueChunkMetadata : valueChunkMetadataList) { - if (valueChunkMetadata != null) { - valueChunkMetadata.setVersion(version); - } - } - } - - @Override - public long getOffsetOfChunkHeader() { - return timeChunkMetadata.getOffsetOfChunkHeader(); - } - - @Override - public long getStartTime() { - return timeChunkMetadata.getStartTime(); - } - - @Override - public long getEndTime() { - return timeChunkMetadata.getEndTime(); - } - - @Override - public IChunkLoader getChunkLoader() { - return chunkLoader; - } - - @Override - public boolean needSetChunkLoader() { - return chunkLoader == null; - } - - @Override - public void setChunkLoader(IChunkLoader chunkLoader) { - this.chunkLoader = chunkLoader; - } - - @Override - public void setClosed(boolean closed) { - timeChunkMetadata.setClosed(closed); - for (IChunkMetadata chunkMetadata : valueChunkMetadataList) { - if (chunkMetadata != null) { - chunkMetadata.setClosed(closed); - } - } - } - - @Override - public TSDataType getDataType() { - return timeChunkMetadata.getDataType(); - } - - @Override - public String getMeasurementUid() { - return timeChunkMetadata.getMeasurementUid(); - } - - @Override - public void insertIntoSortedDeletions(TimeRange timeRange) { - throw new UnsupportedOperationException(); - } - - @Override - public List getDeleteIntervalList() { - throw new UnsupportedOperationException(); - } - - @Override - public int serializeTo(OutputStream outputStream, boolean serializeStatistic) { - throw new UnsupportedOperationException("VectorChunkMetadata doesn't support serial method"); - } - - @Override - public byte getMask() { - return 0; - } - - public IChunkMetadata getTimeChunkMetadata() { - return timeChunkMetadata; - } - - public List getValueChunkMetadataList() { - return valueChunkMetadataList; - } } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/AlignedTimeSeriesMetadata.java b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/AlignedTimeSeriesMetadata.java index ba5cbce41..7e1e5bf08 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/AlignedTimeSeriesMetadata.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/AlignedTimeSeriesMetadata.java @@ -21,6 +21,7 @@ import org.apache.tsfile.file.metadata.statistics.Statistics; +import java.util.Collections; import java.util.List; public class AlignedTimeSeriesMetadata extends AbstractAlignedTimeSeriesMetadata { @@ -55,7 +56,7 @@ public boolean timeAllSelected() { @Override void constructAlignedChunkMetadata( - List res, + List res, IChunkMetadata timeChunkMetadata, List chunkMetadataList, boolean exits) { @@ -63,4 +64,9 @@ void constructAlignedChunkMetadata( res.add(new AlignedChunkMetadata(timeChunkMetadata, chunkMetadataList)); } } + + @Override + AbstractAlignedChunkMetadata constructOnlyTimeChunkMetadata(IChunkMetadata timeChunkMetadata) { + return new AlignedChunkMetadata(timeChunkMetadata, Collections.emptyList()); + } } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/TableDeviceChunkMetadata.java b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/TableDeviceChunkMetadata.java new file mode 100644 index 000000000..8daeffc5d --- /dev/null +++ b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/TableDeviceChunkMetadata.java @@ -0,0 +1,38 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.tsfile.file.metadata; + +import org.apache.tsfile.file.metadata.statistics.Statistics; + +import java.io.Serializable; +import java.util.List; + +public class TableDeviceChunkMetadata extends AbstractAlignedChunkMetadata { + + public TableDeviceChunkMetadata( + IChunkMetadata timeChunkMetadata, List valueChunkMetadataList) { + super(timeChunkMetadata, valueChunkMetadataList); + } + + @Override + public Statistics getStatistics() { + return timeChunkMetadata.getStatistics(); + } +} diff --git a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/TableDeviceMetadata.java b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/TableDeviceTimeSeriesMetadata.java similarity index 76% rename from java/tsfile/src/main/java/org/apache/tsfile/file/metadata/TableDeviceMetadata.java rename to java/tsfile/src/main/java/org/apache/tsfile/file/metadata/TableDeviceTimeSeriesMetadata.java index 8614a5326..debacf5ba 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/TableDeviceMetadata.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/TableDeviceTimeSeriesMetadata.java @@ -21,11 +21,12 @@ import org.apache.tsfile.file.metadata.statistics.Statistics; +import java.util.Collections; import java.util.List; -public class TableDeviceMetadata extends AbstractAlignedTimeSeriesMetadata { +public class TableDeviceTimeSeriesMetadata extends AbstractAlignedTimeSeriesMetadata { - public TableDeviceMetadata( + public TableDeviceTimeSeriesMetadata( TimeseriesMetadata timeseriesMetadata, List valueTimeseriesMetadataList) { super(timeseriesMetadata, valueTimeseriesMetadataList); } @@ -41,10 +42,15 @@ public Statistics getStatistics() { @Override void constructAlignedChunkMetadata( - List res, + List res, IChunkMetadata timeChunkMetadata, List chunkMetadataList, boolean exits) { - res.add(new AlignedChunkMetadata(timeChunkMetadata, chunkMetadataList)); + res.add(new TableDeviceChunkMetadata(timeChunkMetadata, chunkMetadataList)); + } + + @Override + AbstractAlignedChunkMetadata constructOnlyTimeChunkMetadata(IChunkMetadata timeChunkMetadata) { + return new TableDeviceChunkMetadata(timeChunkMetadata, Collections.emptyList()); } } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java b/java/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java index 3f7a171b4..3961053bd 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/TsFileSequenceReader.java @@ -52,7 +52,7 @@ import org.apache.tsfile.file.metadata.ITimeSeriesMetadata; import org.apache.tsfile.file.metadata.MeasurementMetadataIndexEntry; import org.apache.tsfile.file.metadata.MetadataIndexNode; -import org.apache.tsfile.file.metadata.TableDeviceMetadata; +import org.apache.tsfile.file.metadata.TableDeviceTimeSeriesMetadata; import org.apache.tsfile.file.metadata.TableSchema; import org.apache.tsfile.file.metadata.TimeseriesMetadata; import org.apache.tsfile.file.metadata.TsFileMetadata; @@ -916,7 +916,7 @@ public List readITimeseriesMetadata( if (valueTimeseriesMetadataList != null && !valueTimeseriesMetadataList.isEmpty()) { if (this.tsFileMetaData.getTableSchemaMap().containsKey(device.getTableName())) { resultTimeseriesMetadataList.add( - new TableDeviceMetadata(timeColumnMetadata, valueTimeseriesMetadataList)); + new TableDeviceTimeSeriesMetadata(timeColumnMetadata, valueTimeseriesMetadataList)); } else { resultTimeseriesMetadataList.add( new AlignedTimeSeriesMetadata(timeColumnMetadata, valueTimeseriesMetadataList)); @@ -2670,7 +2670,7 @@ public List getAlignedChunkMetadataByMetadataIndexNode( new AlignedTimeSeriesMetadata(timeseriesMetadata, valueTimeseriesMetadataList); } else { alignedTimeSeriesMetadata = - new TableDeviceMetadata(timeseriesMetadata, valueTimeseriesMetadataList); + new TableDeviceTimeSeriesMetadata(timeseriesMetadata, valueTimeseriesMetadataList); } List chunkMetadataList = new ArrayList<>(); for (IChunkMetadata chunkMetadata : readIChunkMetaDataList(alignedTimeSeriesMetadata)) { diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/block/DeviceOrderedTsBlockReader.java b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/block/DeviceOrderedTsBlockReader.java index 30ddca8f4..e78e63622 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/block/DeviceOrderedTsBlockReader.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/block/DeviceOrderedTsBlockReader.java @@ -72,7 +72,7 @@ public boolean hasNext() { } catch (IOException e) { LOGGER.error("Failed to construct reader for {}", nextTask, e); } - if (currentReader.hasNext()) { + if (currentReader != null && currentReader.hasNext()) { return true; } } diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/block/SingleDeviceTsBlockReader.java b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/block/SingleDeviceTsBlockReader.java index 6b6d25011..174cdfd9a 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/block/SingleDeviceTsBlockReader.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/block/SingleDeviceTsBlockReader.java @@ -20,7 +20,7 @@ package org.apache.tsfile.read.reader.block; import org.apache.tsfile.block.column.Column; -import org.apache.tsfile.file.metadata.AlignedChunkMetadata; +import org.apache.tsfile.file.metadata.AbstractAlignedChunkMetadata; import org.apache.tsfile.file.metadata.IChunkMetadata; import org.apache.tsfile.read.common.BatchData; import org.apache.tsfile.read.common.block.TsBlock; @@ -107,7 +107,7 @@ private void constructColumnContext( AbstractFileSeriesReader seriesReader = new FileSeriesReader(chunkLoader, chunkMetadataList, timeFilter, false); if (seriesReader.hasNextBatch()) { - if (chunkMetadata instanceof AlignedChunkMetadata) { + if (chunkMetadata instanceof AbstractAlignedChunkMetadata) { final List currentChunkMeasurementNames = seriesReader.getCurrentChunkMeasurementNames(); List> posInResult = new ArrayList<>(); diff --git a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/series/FileSeriesReader.java b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/series/FileSeriesReader.java index bb6b38108..9fa26c829 100644 --- a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/series/FileSeriesReader.java +++ b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/series/FileSeriesReader.java @@ -19,7 +19,7 @@ package org.apache.tsfile.read.reader.series; -import org.apache.tsfile.file.metadata.AlignedChunkMetadata; +import org.apache.tsfile.file.metadata.AbstractAlignedChunkMetadata; import org.apache.tsfile.file.metadata.ChunkMetadata; import org.apache.tsfile.file.metadata.IChunkMetadata; import org.apache.tsfile.read.common.Chunk; @@ -60,7 +60,8 @@ protected void initChunkReader(IChunkMetadata chunkMetaData) throws IOException this.chunkReader = new ChunkReader(chunk, filter); currentChunkMeasurementNames.add(chunkMetaData.getMeasurementUid()); } else { - AlignedChunkMetadata alignedChunkMetadata = (AlignedChunkMetadata) chunkMetaData; + AbstractAlignedChunkMetadata alignedChunkMetadata = + (AbstractAlignedChunkMetadata) chunkMetaData; Chunk timeChunk = chunkLoader.loadChunk((ChunkMetadata) (alignedChunkMetadata.getTimeChunkMetadata())); List valueChunkList = new ArrayList<>(); diff --git a/java/tsfile/src/test/java/org/apache/tsfile/tableview/TableViewTest.java b/java/tsfile/src/test/java/org/apache/tsfile/tableview/TableViewTest.java index 851a126a3..16454fb2a 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/tableview/TableViewTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/tableview/TableViewTest.java @@ -20,7 +20,6 @@ package org.apache.tsfile.tableview; import org.apache.tsfile.enums.TSDataType; -import org.apache.tsfile.exception.read.ReadProcessException; import org.apache.tsfile.exception.write.WriteProcessException; import org.apache.tsfile.file.metadata.IDeviceID; import org.apache.tsfile.file.metadata.IDeviceID.Factory; @@ -109,39 +108,6 @@ public void testWriteOneTable() throws Exception { testWrite(testTableSchema); } - public static void main(String[] args) throws IOException, ReadProcessException { - File testFile = - new File( - "C:\\Users\\JT\\Downloads\\sequence-root.test_g_0-1-2714-1729258251084-4-0-0.tsfile"); - TsFileSequenceReader sequenceReader = new TsFileSequenceReader(testFile.getAbsolutePath()); - TableQueryExecutor tableQueryExecutor = - new TableQueryExecutor( - new MetadataQuerierByFileImpl(sequenceReader), - new CachedChunkLoaderImpl(sequenceReader), - TableQueryOrdering.DEVICE); - - final TsBlockReader reader = - tableQueryExecutor.query("table_5", Arrays.asList("s_0"), null, null, null); - assertTrue(reader.hasNext()); - int cnt = 0; - while (reader.hasNext()) { - final TsBlock result = reader.next(); - for (int i = 0; i < result.getPositionCount(); i++) { - String col = result.getColumn(0).getObject(i).toString(); - StringBuilder builder = new StringBuilder(col); - for (int j = 1; j < result.getValueColumns().length; j++) { - if (result.getColumn(j).isNull(i)) { - builder.append(",").append(result.getColumn(j).getObject(i).toString()); - } else { - builder.append(",").append("null"); - } - } - System.out.println(result.getTimeByIndex(i) + "\t" + builder.toString()); - } - cnt += result.getPositionCount(); - } - } - public static void writeTsFile(TableSchema tableSchema, File file) throws IOException, WriteProcessException { try (TsFileWriter writer = new TsFileWriter(file)) {