This is an automated email from the ASF dual-hosted git repository.
colinlee 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 2afaa97a fix aligned chunk reader. (#634)
2afaa97a is described below
commit 2afaa97ad14da65cc3f948d1adc2cfa17a0e3390
Author: Colin Lee <[email protected]>
AuthorDate: Wed Nov 5 21:58:15 2025 +0800
fix aligned chunk reader. (#634)
---
cpp/src/reader/aligned_chunk_reader.cc | 2 +-
.../reader/table_view/tsfile_reader_table_test.cc | 48 ++++++++++++++++++++++
2 files changed, 49 insertions(+), 1 deletion(-)
diff --git a/cpp/src/reader/aligned_chunk_reader.cc
b/cpp/src/reader/aligned_chunk_reader.cc
index 9578ecca..fc944ca7 100644
--- a/cpp/src/reader/aligned_chunk_reader.cc
+++ b/cpp/src/reader/aligned_chunk_reader.cc
@@ -360,7 +360,7 @@ int AlignedChunkReader::decode_cur_time_page_data() {
if (RET_FAIL(read_from_file_and_rewrap(
time_in_stream_, time_chunk_meta_, time_chunk_visit_offset_,
file_data_time_buf_size_,
- cur_value_page_header_.compressed_size_))) {
+ cur_time_page_header_.compressed_size_))) {
}
}
diff --git a/cpp/test/reader/table_view/tsfile_reader_table_test.cc
b/cpp/test/reader/table_view/tsfile_reader_table_test.cc
index bb4480f3..02398c68 100644
--- a/cpp/test/reader/table_view/tsfile_reader_table_test.cc
+++ b/cpp/test/reader/table_view/tsfile_reader_table_test.cc
@@ -421,3 +421,51 @@ TEST_F(TsFileTableReaderTest, ReadNonExistColumn) {
reader.close();
delete table_schema;
}
+
+TEST_F(TsFileTableReaderTest, TestDecoder) {
+ std::vector<ColumnSchema> column_schema;
+ column_schema.emplace_back("value1", TSDataType::INT32);
+ auto* schema = new TableSchema("test_table", column_schema);
+ auto tsfile_table_writer_ =
+ std::make_shared<TsFileTableWriter>(&write_file_, schema);
+ std::vector<std::string> columns = {"value1"};
+ std::vector<TSDataType> datatypes = {TSDataType::INT32};
+ storage::Tablet tablet("test_table", &columns, &datatypes, 5000);
+ std::random_device rd;
+ std::mt19937 gen(rd());
+ std::uniform_int_distribution<> dis(1, 200);
+ int64_t timestamp = 0;
+ for (int i = 0; i < 5000; i++) {
+ // Time will bigger than value after encoding and compression.
+ timestamp += dis(gen);
+ tablet.add_timestamp(i, timestamp);
+ tablet.add_value(i, 0, (int32_t)i);
+ }
+ int ret_ = tsfile_table_writer_->write_table(tablet);
+ ASSERT_EQ(ret_, common::E_OK);
+ ret_ = tsfile_table_writer_->flush();
+ ASSERT_EQ(ret_, common::E_OK);
+ ret_ = tsfile_table_writer_->close();
+ ASSERT_EQ(ret_, common::E_OK);
+ TsFileReader reader = TsFileReader();
+ reader.open(write_file_.get_file_path());
+ ResultSet* ret = nullptr;
+ int ret_value =
+ reader.query("test_table", columns, INT64_MIN, INT64_MAX, ret);
+ auto* table_result_set = (storage::TableResultSet*)ret;
+ bool has_next = false;
+ int cur_lin = 0;
+ int64_t prev_time = 0;
+ while (IS_SUCC(table_result_set->next(has_next)) && has_next) {
+ auto t = table_result_set->get_value<int64_t>(1);
+ ASSERT_TRUE(t - prev_time <= 200);
+ prev_time = t;
+ auto value = table_result_set->get_value<int32_t>(2);
+ ASSERT_EQ(value, cur_lin);
+ cur_lin++;
+ }
+ ASSERT_EQ(cur_lin, 5000);
+ delete schema;
+ reader.destroy_query_data_set(table_result_set);
+ reader.close();
+}