From 631001166c1df3a2fbb4f1700c07583b6fa0f208 Mon Sep 17 00:00:00 2001 From: colin Date: Wed, 5 Nov 2025 21:00:08 +0800 Subject: [PATCH 1/4] fix aligned chunk reader. --- cpp/src/reader/aligned_chunk_reader.cc | 2 +- .../table_view/tsfile_reader_table_test.cc | 42 +++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/cpp/src/reader/aligned_chunk_reader.cc b/cpp/src/reader/aligned_chunk_reader.cc index 9578eccae..fc944ca7c 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 bb4480f3e..649a8d423 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,45 @@ TEST_F(TsFileTableReaderTest, ReadNonExistColumn) { reader.close(); delete table_schema; } + +TEST_F(TsFileTableReaderTest, TestDecoder) { + std::vector column_schema; + column_schema.emplace_back("value1", TSDataType::INT32); + auto* schema = new TableSchema("test_table", column_schema); + auto tsfile_table_writer_ = + std::make_shared(&write_file_, schema); + std::vector columns = {"value1"}; + std::vector 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); + ret_ = tsfile_table_writer_->flush(); + ret_ = tsfile_table_writer_->close(); + 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 time = 0; + while (IS_SUCC(table_result_set->next(has_next)) && has_next) { + auto t = table_result_set->get_value(1); + ASSERT_TRUE(t - time <= 200); + time += t; + int32_t value = table_result_set->get_value(2); + ASSERT_EQ(value, cur_lin); + cur_lin++; + } + ASSERT_EQ(cur_lin, 5000); +} From b8d3b39fe2acecdaafee78a8e26c56a38f63cbbe Mon Sep 17 00:00:00 2001 From: colin Date: Wed, 5 Nov 2025 21:04:35 +0800 Subject: [PATCH 2/4] fix err. --- cpp/test/reader/table_view/tsfile_reader_table_test.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 649a8d423..8bea03520 100644 --- a/cpp/test/reader/table_view/tsfile_reader_table_test.cc +++ b/cpp/test/reader/table_view/tsfile_reader_table_test.cc @@ -452,12 +452,12 @@ TEST_F(TsFileTableReaderTest, TestDecoder) { auto* table_result_set = (storage::TableResultSet*)ret; bool has_next = false; int cur_lin = 0; - int64_t time = 0; + int64_t prev_time = 0; while (IS_SUCC(table_result_set->next(has_next)) && has_next) { auto t = table_result_set->get_value(1); - ASSERT_TRUE(t - time <= 200); - time += t; - int32_t value = table_result_set->get_value(2); + ASSERT_TRUE(t - prev_time <= 200); + prev_time = t; + auto value = table_result_set->get_value(2); ASSERT_EQ(value, cur_lin); cur_lin++; } From 190324c780dead7b1baff48c3a9bf563a68c26a0 Mon Sep 17 00:00:00 2001 From: colin Date: Wed, 5 Nov 2025 21:06:30 +0800 Subject: [PATCH 3/4] update. --- cpp/test/reader/table_view/tsfile_reader_table_test.cc | 3 +++ 1 file changed, 3 insertions(+) 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 8bea03520..146ac8780 100644 --- a/cpp/test/reader/table_view/tsfile_reader_table_test.cc +++ b/cpp/test/reader/table_view/tsfile_reader_table_test.cc @@ -442,8 +442,11 @@ TEST_F(TsFileTableReaderTest, TestDecoder) { 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; From 449658e72fe09c7bbec3bd4b7aaf1840cfab160e Mon Sep 17 00:00:00 2001 From: colin Date: Wed, 5 Nov 2025 21:31:50 +0800 Subject: [PATCH 4/4] fix memory leak. --- cpp/test/reader/table_view/tsfile_reader_table_test.cc | 3 +++ 1 file changed, 3 insertions(+) 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 146ac8780..02398c683 100644 --- a/cpp/test/reader/table_view/tsfile_reader_table_test.cc +++ b/cpp/test/reader/table_view/tsfile_reader_table_test.cc @@ -465,4 +465,7 @@ TEST_F(TsFileTableReaderTest, TestDecoder) { cur_lin++; } ASSERT_EQ(cur_lin, 5000); + delete schema; + reader.destroy_query_data_set(table_result_set); + reader.close(); }