This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/tsfile.git


The following commit(s) were added to refs/heads/develop by this push:
     new 59b8d0baf Add TableDeviceChunkMetadata for tabel model
59b8d0baf is described below

commit 59b8d0baf03fd3854f52f9fd2e04be2a419e0390
Author: Jackie Tien <[email protected]>
AuthorDate: Sun Jan 26 14:19:23 2025 +0800

    Add TableDeviceChunkMetadata for tabel model
---
 ...data.java => AbstractAlignedChunkMetadata.java} |  27 +---
 .../AbstractAlignedTimeSeriesMetadata.java         |  13 +-
 .../tsfile/file/metadata/AlignedChunkMetadata.java | 166 +--------------------
 .../file/metadata/AlignedTimeSeriesMetadata.java   |   8 +-
 ...Metadata.java => TableDeviceChunkMetadata.java} |  26 +---
 ...ata.java => TableDeviceTimeSeriesMetadata.java} |  14 +-
 .../apache/tsfile/read/TsFileSequenceReader.java   |   6 +-
 .../reader/block/DeviceOrderedTsBlockReader.java   |   2 +-
 .../reader/block/SingleDeviceTsBlockReader.java    |   4 +-
 .../read/reader/series/FileSeriesReader.java       |   5 +-
 .../org/apache/tsfile/tableview/TableViewTest.java |  34 -----
 11 files changed, 47 insertions(+), 258 deletions(-)

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/AbstractAlignedChunkMetadata.java
similarity index 85%
copy from 
java/tsfile/src/main/java/org/apache/tsfile/file/metadata/AlignedChunkMetadata.java
copy to 
java/tsfile/src/main/java/org/apache/tsfile/file/metadata/AbstractAlignedChunkMetadata.java
index c92443be1..4bbc28581 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/AbstractAlignedChunkMetadata.java
@@ -29,29 +29,22 @@ import java.io.Serializable;
 import java.util.List;
 import java.util.Optional;
 
-public class AlignedChunkMetadata implements IChunkMetadata {
+public abstract class AbstractAlignedChunkMetadata implements IChunkMetadata {
 
   // ChunkMetadata for time column
-  private final IChunkMetadata timeChunkMetadata;
+  protected final IChunkMetadata timeChunkMetadata;
   // ChunkMetadata for all subSensors in the vector
-  private final List<IChunkMetadata> valueChunkMetadataList;
+  protected final List<IChunkMetadata> valueChunkMetadataList;
 
   /** ChunkLoader of metadata, used to create IChunkReader */
   private IChunkLoader chunkLoader;
 
-  public AlignedChunkMetadata(
+  AbstractAlignedChunkMetadata(
       IChunkMetadata timeChunkMetadata, List<IChunkMetadata> 
valueChunkMetadataList) {
     this.timeChunkMetadata = timeChunkMetadata;
     this.valueChunkMetadataList = valueChunkMetadataList;
   }
 
-  @Override
-  public Statistics<? extends Serializable> getStatistics() {
-    return valueChunkMetadataList.size() == 1 && valueChunkMetadataList.get(0) 
!= null
-        ? valueChunkMetadataList.get(0).getStatistics()
-        : timeChunkMetadata.getStatistics();
-  }
-
   @Override
   public Statistics<? extends Serializable> getTimeStatistics() {
     return timeChunkMetadata.getStatistics();
@@ -77,18 +70,6 @@ public class AlignedChunkMetadata implements IChunkMetadata {
     return valueChunkMetadataList.size();
   }
 
-  @Override
-  public boolean timeAllSelected() {
-    for (int index = 0; index < getMeasurementCount(); index++) {
-      if (!hasNullValue(index)) {
-        // When there is any value page point number that is the same as the 
time page,
-        // it means that all timestamps in time page will be selected.
-        return true;
-      }
-    }
-    return false;
-  }
-
   @Override
   public boolean isModified() {
     return timeChunkMetadata.isModified();
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 abstract class AbstractAlignedTimeSeriesMetadata 
implements ITimeSeriesMe
     return chunkMetadataLoader.loadChunkMetadataList(this);
   }
 
-  public List<AlignedChunkMetadata> getCopiedChunkMetadataList() {
+  public List<AbstractAlignedChunkMetadata> getCopiedChunkMetadataList() {
     List<IChunkMetadata> timeChunkMetadata = 
timeseriesMetadata.getCopiedChunkMetadataList();
     List<List<IChunkMetadata>> valueChunkMetadataList = new ArrayList<>();
     for (TimeseriesMetadata metadata : valueTimeseriesMetadataList) {
@@ -122,7 +122,7 @@ public abstract class AbstractAlignedTimeSeriesMetadata 
implements ITimeSeriesMe
     return getAlignedChunkMetadata(timeChunkMetadata, valueChunkMetadataList);
   }
 
-  public List<AlignedChunkMetadata> getChunkMetadataList() {
+  public List<AbstractAlignedChunkMetadata> getChunkMetadataList() {
     List<IChunkMetadata> timeChunkMetadata = 
timeseriesMetadata.getChunkMetadataList();
     List<List<IChunkMetadata>> valueChunkMetadataList = new ArrayList<>();
     for (TimeseriesMetadata metadata : valueTimeseriesMetadataList) {
@@ -133,9 +133,9 @@ public abstract class AbstractAlignedTimeSeriesMetadata 
implements ITimeSeriesMe
   }
 
   /** Notice: if all the value chunks is empty chunk, then return empty list. 
*/
-  private List<AlignedChunkMetadata> getAlignedChunkMetadata(
+  private List<AbstractAlignedChunkMetadata> getAlignedChunkMetadata(
       List<IChunkMetadata> timeChunkMetadata, List<List<IChunkMetadata>> 
valueChunkMetadataList) {
-    List<AlignedChunkMetadata> res = new ArrayList<>();
+    List<AbstractAlignedChunkMetadata> res = new ArrayList<>();
     for (int i = 0; i < timeChunkMetadata.size(); i++) {
       // only need time column
       if (valueTimeseriesMetadataList.isEmpty()) {
@@ -160,11 +160,14 @@ public abstract class AbstractAlignedTimeSeriesMetadata 
implements ITimeSeriesMe
   }
 
   abstract void constructAlignedChunkMetadata(
-      List<AlignedChunkMetadata> res,
+      List<AbstractAlignedChunkMetadata> res,
       IChunkMetadata timeChunkMetadata,
       List<IChunkMetadata> 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<IChunkMetadata> valueChunkMetadataList;
-
-  /** ChunkLoader of metadata, used to create IChunkReader */
-  private IChunkLoader chunkLoader;
+public class AlignedChunkMetadata extends AbstractAlignedChunkMetadata {
 
   public AlignedChunkMetadata(
       IChunkMetadata timeChunkMetadata, List<IChunkMetadata> 
valueChunkMetadataList) {
-    this.timeChunkMetadata = timeChunkMetadata;
-    this.valueChunkMetadataList = valueChunkMetadataList;
+    super(timeChunkMetadata, valueChunkMetadataList);
   }
 
   @Override
@@ -52,31 +38,6 @@ public class AlignedChunkMetadata implements IChunkMetadata {
         : timeChunkMetadata.getStatistics();
   }
 
-  @Override
-  public Statistics<? extends Serializable> getTimeStatistics() {
-    return timeChunkMetadata.getStatistics();
-  }
-
-  @Override
-  public Optional<Statistics<? extends Serializable>> 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<? extends Serializable>> 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 class AlignedChunkMetadata implements IChunkMetadata 
{
     }
     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<TimeRange> 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<IChunkMetadata> 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 @@ package org.apache.tsfile.file.metadata;
 
 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 class AlignedTimeSeriesMetadata extends 
AbstractAlignedTimeSeriesMetadata
 
   @Override
   void constructAlignedChunkMetadata(
-      List<AlignedChunkMetadata> res,
+      List<AbstractAlignedChunkMetadata> res,
       IChunkMetadata timeChunkMetadata,
       List<IChunkMetadata> chunkMetadataList,
       boolean exits) {
@@ -63,4 +64,9 @@ public class AlignedTimeSeriesMetadata extends 
AbstractAlignedTimeSeriesMetadata
       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/TableDeviceMetadata.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/file/metadata/TableDeviceChunkMetadata.java
similarity index 54%
copy from 
java/tsfile/src/main/java/org/apache/tsfile/file/metadata/TableDeviceMetadata.java
copy to 
java/tsfile/src/main/java/org/apache/tsfile/file/metadata/TableDeviceChunkMetadata.java
index 8614a5326..8daeffc5d 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/TableDeviceChunkMetadata.java
@@ -21,30 +21,18 @@ package org.apache.tsfile.file.metadata;
 
 import org.apache.tsfile.file.metadata.statistics.Statistics;
 
+import java.io.Serializable;
 import java.util.List;
 
-public class TableDeviceMetadata extends AbstractAlignedTimeSeriesMetadata {
+public class TableDeviceChunkMetadata extends AbstractAlignedChunkMetadata {
 
-  public TableDeviceMetadata(
-      TimeseriesMetadata timeseriesMetadata, List<TimeseriesMetadata> 
valueTimeseriesMetadataList) {
-    super(timeseriesMetadata, valueTimeseriesMetadataList);
+  public TableDeviceChunkMetadata(
+      IChunkMetadata timeChunkMetadata, List<IChunkMetadata> 
valueChunkMetadataList) {
+    super(timeChunkMetadata, valueChunkMetadataList);
   }
 
-  /**
-   * If the vector contains only one sub sensor, just return the sub sensor's 
Statistics Otherwise,
-   * return the Statistics of the time column.
-   */
   @Override
-  public Statistics getStatistics() {
-    return timeseriesMetadata.getStatistics();
-  }
-
-  @Override
-  void constructAlignedChunkMetadata(
-      List<AlignedChunkMetadata> res,
-      IChunkMetadata timeChunkMetadata,
-      List<IChunkMetadata> chunkMetadataList,
-      boolean exits) {
-    res.add(new AlignedChunkMetadata(timeChunkMetadata, chunkMetadataList));
+  public Statistics<? extends Serializable> 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 @@ package org.apache.tsfile.file.metadata;
 
 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<TimeseriesMetadata> 
valueTimeseriesMetadataList) {
     super(timeseriesMetadata, valueTimeseriesMetadataList);
   }
@@ -41,10 +42,15 @@ public class TableDeviceMetadata extends 
AbstractAlignedTimeSeriesMetadata {
 
   @Override
   void constructAlignedChunkMetadata(
-      List<AlignedChunkMetadata> res,
+      List<AbstractAlignedChunkMetadata> res,
       IChunkMetadata timeChunkMetadata,
       List<IChunkMetadata> 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.IDeviceID;
 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 class TsFileSequenceReader implements AutoCloseable {
     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 class TsFileSequenceReader implements 
AutoCloseable {
           new AlignedTimeSeriesMetadata(timeseriesMetadata, 
valueTimeseriesMetadataList);
     } else {
       alignedTimeSeriesMetadata =
-          new TableDeviceMetadata(timeseriesMetadata, 
valueTimeseriesMetadataList);
+          new TableDeviceTimeSeriesMetadata(timeseriesMetadata, 
valueTimeseriesMetadataList);
     }
     List<AlignedChunkMetadata> 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 class DeviceOrderedTsBlockReader implements 
TsBlockReader {
       } 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 @@ public class SingleDeviceTsBlockReader implements 
TsBlockReader {
     AbstractFileSeriesReader seriesReader =
         new FileSeriesReader(chunkLoader, chunkMetadataList, timeFilter, 
false);
     if (seriesReader.hasNextBatch()) {
-      if (chunkMetadata instanceof AlignedChunkMetadata) {
+      if (chunkMetadata instanceof AbstractAlignedChunkMetadata) {
         final List<String> currentChunkMeasurementNames =
             seriesReader.getCurrentChunkMeasurementNames();
         List<List<Integer>> 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 @@ public class FileSeriesReader extends 
AbstractFileSeriesReader {
       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<Chunk> 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 class TableViewTest {
     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)) {

Reply via email to