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

jiangtian pushed a commit to branch snapshot/1.2.0-241018
in repository https://gitbox.apache.org/repos/asf/tsfile.git


The following commit(s) were added to refs/heads/snapshot/1.2.0-241018 by this 
push:
     new 54437d49 Fix column position count not updated.
54437d49 is described below

commit 54437d49026518191617705e567fc4184e7fc925
Author: DESKTOP-L0L5GPJ\jt <[email protected]>
AuthorDate: Fri Oct 18 22:13:31 2024 +0800

    Fix column position count not updated.
    
    (cherry picked from commit a9f54614bd2093efc7de30fbff0062910395b1a9)
    (cherry picked from commit c20d8da3d4a25750ec0aa7fc016bb6ea4581154a)
---
 .../reader/block/SingleDeviceTsBlockReader.java    |  1 +
 .../org/apache/tsfile/tableview/TableViewTest.java | 83 +++++++++++++++++-----
 2 files changed, 66 insertions(+), 18 deletions(-)

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 dcd01045..5bcbcf00 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
@@ -391,6 +391,7 @@ public class SingleDeviceTsBlockReader implements 
TsBlockReader {
             default:
               throw new IllegalArgumentException("Unsupported data type: " + 
value.getDataType());
           }
+          block.getColumn(pos).setPositionCount(blockRowNum + 1);
         }
       }
     }
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 3332a4af..68cd0f02 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
@@ -61,10 +61,14 @@ import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 public class TableViewTest {
@@ -73,6 +77,7 @@ public class TableViewTest {
   private final int idSchemaNum = 5;
   private final int measurementSchemaNum = 5;
   private TableSchema testTableSchema;
+  private int numTimestampPerDevice = 10;
 
   @Before
   public void setUp() throws Exception {
@@ -105,6 +110,39 @@ 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();
+    }
+  }
+
   private void testWrite(TableSchema tableSchema)
       throws IOException, WriteProcessException, ReadProcessException {
     final File testFile = new File(testDir, "testFile");
@@ -136,11 +174,12 @@ public class TableViewTest {
         String col = result.getColumn(0).getObject(i).toString();
         for (int j = 1; j < tableSchema.getColumnSchemas().size(); j++) {
           assertEquals(col, result.getColumn(j).getObject(i).toString());
+          assertFalse(result.getColumn(j).isNull(i));
         }
       }
       cnt += result.getPositionCount();
     }
-    assertEquals(100, cnt);
+    assertEquals(1000, cnt);
   }
 
   @Test
@@ -185,7 +224,7 @@ public class TableViewTest {
           cnt += result.getPositionCount();
         }
       }
-      assertEquals(100, cnt);
+      assertEquals(1000, cnt);
     }
   }
 
@@ -284,7 +323,7 @@ public class TableViewTest {
         final TsBlock result = reader.next();
         cnt += result.getPositionCount();
       }
-      assertEquals(100, cnt);
+      assertEquals(1000, cnt);
     }
 
     // tree-view read tree-view
@@ -342,10 +381,14 @@ public class TableViewTest {
               new CachedChunkLoaderImpl(sequenceReader));
 
       List<Path> selectedSeries = new ArrayList<>();
-      for (int i = 0; i < 100; i++) {
+      Set<IDeviceID> deviceIDS = new HashSet<>();
+      for (int i = 0; i < tablet.rowSize; i++) {
         final IDeviceID tabletDeviceID = tablet.getDeviceID(i);
-        for (int j = 0; j < measurementSchemaNum; j++) {
-          selectedSeries.add(new Path(tabletDeviceID, "s" + j, false));
+        if (!deviceIDS.contains(tabletDeviceID)) {
+          deviceIDS.add(tabletDeviceID);
+          for (int j = 0; j < measurementSchemaNum; j++) {
+            selectedSeries.add(new Path(tabletDeviceID, "s" + j, false));
+          }
         }
       }
 
@@ -357,28 +400,32 @@ public class TableViewTest {
         rowRecords.add(queryDataSet.next());
         cnt++;
       }
-      assertEquals(100, cnt);
+      assertEquals(10, cnt);
     }
   }
 
-  private Tablet genTablet(TableSchema tableSchema, int offset, int num) {
+  private Tablet genTablet(TableSchema tableSchema, int offset, int deviceNum) 
{
     Tablet tablet =
         new Tablet(
             tableSchema.getTableName(),
             tableSchema.getColumnSchemas(),
             tableSchema.getColumnTypes());
-    for (int i = 0; i < num; i++) {
-      tablet.addTimestamp(i, offset + i);
-      List<IMeasurementSchema> columnSchemas = tableSchema.getColumnSchemas();
-      for (int j = 0; j < columnSchemas.size(); j++) {
-        IMeasurementSchema columnSchema = columnSchemas.get(j);
-        tablet.addValue(
-            columnSchema.getMeasurementId(),
-            i,
-            getValue(columnSchema.getType(), i, 
tableSchema.getColumnTypes().get(j)));
+
+    for (int i = 0; i < deviceNum; i++) {
+      for (int l = 0; l < numTimestampPerDevice; l++) {
+        int rowIndex = i * numTimestampPerDevice + l;
+        tablet.addTimestamp(rowIndex, offset + l);
+        List<IMeasurementSchema> columnSchemas = 
tableSchema.getColumnSchemas();
+        for (int j = 0; j < columnSchemas.size(); j++) {
+          IMeasurementSchema columnSchema = columnSchemas.get(j);
+          tablet.addValue(
+              columnSchema.getMeasurementId(),
+              rowIndex,
+              getValue(columnSchema.getType(), i, 
tableSchema.getColumnTypes().get(j)));
+        }
       }
     }
-    tablet.rowSize = num;
+    tablet.rowSize = deviceNum * numTimestampPerDevice;
     return tablet;
   }
 

Reply via email to