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