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

haonan pushed a commit to branch rc/2.2.0
in repository https://gitbox.apache.org/repos/asf/tsfile.git

commit 080eb662b1a2064f361f7677a3dc049941503649
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();
+}

Reply via email to