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;
}