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

jiangtian 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 e90a4c0e Modify isDeleted method in page reader to public access (#241)
e90a4c0e is described below

commit e90a4c0e9e9808540fbf3bac9ca884431146b2d8
Author: shuwenwei <[email protected]>
AuthorDate: Fri Sep 20 09:36:22 2024 +0800

    Modify isDeleted method in page reader to public access (#241)
    
    * modify isDeleted method access
    
    * modify getAlignedChunkMetadataByMetadataIndexNode
    
    * spotless
    
    * fix compile
---
 .../apache/tsfile/read/TsFileSequenceReader.java   | 25 ++++++++++++++++------
 .../tsfile/read/reader/page/TimePageReader.java    |  2 +-
 .../tsfile/read/reader/page/ValuePageReader.java   |  2 +-
 .../org/apache/tsfile/read/TsFileReaderTest.java   |  6 +++---
 .../AlignedChunkReaderWithoutStatisticsTest.java   |  3 ++-
 5 files changed, 25 insertions(+), 13 deletions(-)

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 9daff0c1..c1777ed2 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
@@ -38,6 +38,7 @@ import org.apache.tsfile.file.MetaMarker;
 import org.apache.tsfile.file.header.ChunkGroupHeader;
 import org.apache.tsfile.file.header.ChunkHeader;
 import org.apache.tsfile.file.header.PageHeader;
+import org.apache.tsfile.file.metadata.AbstractAlignedTimeSeriesMetadata;
 import org.apache.tsfile.file.metadata.AlignedChunkMetadata;
 import org.apache.tsfile.file.metadata.AlignedTimeSeriesMetadata;
 import org.apache.tsfile.file.metadata.ChunkGroupMetadata;
@@ -48,6 +49,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.TimeseriesMetadata;
 import org.apache.tsfile.file.metadata.TsFileMetadata;
 import org.apache.tsfile.file.metadata.enums.CompressionType;
@@ -2356,7 +2358,8 @@ public class TsFileSequenceReader implements 
AutoCloseable {
    *
    * @param device device name
    */
-  public List<AlignedChunkMetadata> getAlignedChunkMetadata(IDeviceID device) 
throws IOException {
+  public List<AlignedChunkMetadata> getAlignedChunkMetadata(
+      IDeviceID device, boolean ignoreAllNullRows) throws IOException {
     readFileMetadata();
     MetadataIndexNode deviceMetadataIndexNode =
         tsFileMetaData.getTableMetadataIndexNode(device.getTableName());
@@ -2376,7 +2379,7 @@ public class TsFileSequenceReader implements 
AutoCloseable {
       logger.error(METADATA_INDEX_NODE_DESERIALIZE_ERROR, file);
       throw e;
     }
-    return getAlignedChunkMetadataByMetadataIndexNode(device, 
metadataIndexNode);
+    return getAlignedChunkMetadataByMetadataIndexNode(device, 
metadataIndexNode, ignoreAllNullRows);
   }
 
   /**
@@ -2385,9 +2388,11 @@ public class TsFileSequenceReader implements 
AutoCloseable {
    *
    * @param device device name
    * @param metadataIndexNode the first measurement metadata index node of the 
device
+   * @param ignoreAllNullRows ignore all null rows
    */
   public List<AlignedChunkMetadata> getAlignedChunkMetadataByMetadataIndexNode(
-      IDeviceID device, MetadataIndexNode metadataIndexNode) throws 
IOException {
+      IDeviceID device, MetadataIndexNode metadataIndexNode, boolean 
ignoreAllNullRows)
+      throws IOException {
     TimeseriesMetadata firstTimeseriesMetadata = 
getTimeColumnMetadata(metadataIndexNode);
     if (firstTimeseriesMetadata == null) {
       throw new IOException("Timeseries of device {" + device + "} are not 
aligned");
@@ -2438,8 +2443,14 @@ public class TsFileSequenceReader implements 
AutoCloseable {
       valueTimeseriesMetadataList.add(timeseriesMetadataList.get(i));
     }
 
-    AlignedTimeSeriesMetadata alignedTimeSeriesMetadata =
-        new AlignedTimeSeriesMetadata(timeseriesMetadata, 
valueTimeseriesMetadataList);
+    AbstractAlignedTimeSeriesMetadata alignedTimeSeriesMetadata;
+    if (ignoreAllNullRows) {
+      alignedTimeSeriesMetadata =
+          new AlignedTimeSeriesMetadata(timeseriesMetadata, 
valueTimeseriesMetadataList);
+    } else {
+      alignedTimeSeriesMetadata =
+          new TableDeviceMetadata(timeseriesMetadata, 
valueTimeseriesMetadataList);
+    }
     List<AlignedChunkMetadata> chunkMetadataList = new ArrayList<>();
     for (IChunkMetadata chunkMetadata : 
readIChunkMetaDataList(alignedTimeSeriesMetadata)) {
       chunkMetadataList.add((AlignedChunkMetadata) chunkMetadata);
@@ -2461,9 +2472,9 @@ public class TsFileSequenceReader implements 
AutoCloseable {
 
   // This method is only used for TsFile
   public List<IChunkMetadata> readIChunkMetaDataList(ITimeSeriesMetadata 
timeseriesMetaData) {
-    if (timeseriesMetaData instanceof AlignedTimeSeriesMetadata) {
+    if (timeseriesMetaData instanceof AbstractAlignedTimeSeriesMetadata) {
       return new ArrayList<>(
-          ((AlignedTimeSeriesMetadata) 
timeseriesMetaData).getChunkMetadataList());
+          ((AbstractAlignedTimeSeriesMetadata) 
timeseriesMetaData).getChunkMetadataList());
     } else {
       return new ArrayList<>(((TimeseriesMetadata) 
timeseriesMetaData).getChunkMetadataList());
     }
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/TimePageReader.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/TimePageReader.java
index a7964558..aa1b5548 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/TimePageReader.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/TimePageReader.java
@@ -103,7 +103,7 @@ public class TimePageReader {
     return pageHeader.isModified();
   }
 
-  protected boolean isDeleted(long timestamp) {
+  public boolean isDeleted(long timestamp) {
     while (deleteIntervalList != null && deleteCursor < 
deleteIntervalList.size()) {
       if (deleteIntervalList.get(deleteCursor).contains(timestamp)) {
         return true;
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/ValuePageReader.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/ValuePageReader.java
index cf79e68a..317b493c 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/ValuePageReader.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/ValuePageReader.java
@@ -584,7 +584,7 @@ public class ValuePageReader {
     return pageHeader.isModified();
   }
 
-  protected boolean isDeleted(long timestamp) {
+  public boolean isDeleted(long timestamp) {
     while (deleteIntervalList != null && deleteCursor < 
deleteIntervalList.size()) {
       if (deleteIntervalList.get(deleteCursor).contains(timestamp)) {
         return true;
diff --git 
a/java/tsfile/src/test/java/org/apache/tsfile/read/TsFileReaderTest.java 
b/java/tsfile/src/test/java/org/apache/tsfile/read/TsFileReaderTest.java
index 42238509..233d05a5 100644
--- a/java/tsfile/src/test/java/org/apache/tsfile/read/TsFileReaderTest.java
+++ b/java/tsfile/src/test/java/org/apache/tsfile/read/TsFileReaderTest.java
@@ -524,7 +524,7 @@ public class TsFileReaderTest {
       // query for non-exist device
       IDeviceID d3 = IDeviceID.Factory.DEFAULT_FACTORY.create("d3");
       try {
-        reader.getAlignedChunkMetadata(d3);
+        reader.getAlignedChunkMetadata(d3, true);
       } catch (IOException e) {
         Assert.assertEquals("Device {" + d3 + "} is not in tsFileMetaData", 
e.getMessage());
       }
@@ -532,7 +532,7 @@ public class TsFileReaderTest {
       // query for non-aligned device
       IDeviceID d2 = IDeviceID.Factory.DEFAULT_FACTORY.create("d2");
       try {
-        reader.getAlignedChunkMetadata(d2);
+        reader.getAlignedChunkMetadata(d2, true);
       } catch (IOException e) {
         Assert.assertEquals("Timeseries of device {" + d2 + "} are not 
aligned", e.getMessage());
       }
@@ -540,7 +540,7 @@ public class TsFileReaderTest {
       String[] expected = new String[] {"s1", "s2", "s3", "s4"};
 
       List<AlignedChunkMetadata> chunkMetadataList =
-          
reader.getAlignedChunkMetadata(IDeviceID.Factory.DEFAULT_FACTORY.create("d1"));
+          
reader.getAlignedChunkMetadata(IDeviceID.Factory.DEFAULT_FACTORY.create("d1"), 
true);
       AlignedChunkMetadata alignedChunkMetadata = chunkMetadataList.get(0);
       Assert.assertEquals("", 
alignedChunkMetadata.getTimeChunkMetadata().getMeasurementUid());
       int i = 0;
diff --git 
a/java/tsfile/src/test/java/org/apache/tsfile/read/reader/AlignedChunkReaderWithoutStatisticsTest.java
 
b/java/tsfile/src/test/java/org/apache/tsfile/read/reader/AlignedChunkReaderWithoutStatisticsTest.java
index 510ac1fe..7984e3e5 100644
--- 
a/java/tsfile/src/test/java/org/apache/tsfile/read/reader/AlignedChunkReaderWithoutStatisticsTest.java
+++ 
b/java/tsfile/src/test/java/org/apache/tsfile/read/reader/AlignedChunkReaderWithoutStatisticsTest.java
@@ -98,7 +98,8 @@ public class AlignedChunkReaderWithoutStatisticsTest {
       for (int i = 0; i < deviceNum; i++) {
         final List<AlignedChunkMetadata> chunkMetadataList =
             tsFileSequenceReader.getAlignedChunkMetadata(
-                Factory.DEFAULT_FACTORY.create(testStorageGroup + 
PATH_SEPARATOR + "d1000" + i));
+                Factory.DEFAULT_FACTORY.create(testStorageGroup + 
PATH_SEPARATOR + "d1000" + i),
+                true);
         for (final AlignedChunkMetadata chunkMetadata : chunkMetadataList) {
           Chunk timeChunk =
               tsFileSequenceReader.readMemChunk(

Reply via email to