This is an automated email from the ASF dual-hosted git repository. haonan pushed a commit to branch fix_cpp_query_with_timefilter in repository https://gitbox.apache.org/repos/asf/tsfile.git
commit be69acb173fd78fd882479aebd60d2a3adf80290 Author: HTHou <[email protected]> AuthorDate: Fri Apr 25 17:45:26 2025 +0800 Fix CPP TsFile query with time filter error --- cpp/src/reader/tsfile_series_scan_iterator.cc | 2 +- cpp/test/reader/table_view/tsfile_reader_table_test.cc | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/cpp/src/reader/tsfile_series_scan_iterator.cc b/cpp/src/reader/tsfile_series_scan_iterator.cc index ee41231e..eb3bd1ed 100644 --- a/cpp/src/reader/tsfile_series_scan_iterator.cc +++ b/cpp/src/reader/tsfile_series_scan_iterator.cc @@ -79,7 +79,7 @@ int TsFileSeriesScanIterator::get_next(TsBlock *&ret_tsblock, bool alloc, if (alloc) { ret_tsblock = alloc_tsblock(); } - ret = chunk_reader_->get_next_page(ret_tsblock, oneshoot_filter, + ret = chunk_reader_->get_next_page(ret_tsblock, filter, *data_pa_); } return ret; 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 58288a23..d2f4a8a3 100644 --- a/cpp/test/reader/table_view/tsfile_reader_table_test.cc +++ b/cpp/test/reader/table_view/tsfile_reader_table_test.cc @@ -133,7 +133,7 @@ class TsFileTableReaderTest : public ::testing::Test { return tablet; } - void test_table_model_query(uint32_t points_per_device = 10, uint32_t device_num = 1) { + void test_table_model_query(uint32_t points_per_device = 10, uint32_t device_num = 1, int64_t end_time = 1000000000000) { auto table_schema = gen_table_schema(0); auto tsfile_table_writer_ = std::make_shared<TsFileTableWriter>(&write_file_, table_schema); @@ -149,7 +149,7 @@ class TsFileTableReaderTest : public ::testing::Test { ResultSet* tmp_result_set = nullptr; ret = reader.query(table_schema->get_table_name(), table_schema->get_measurement_names(), 0, - 1000000000000, tmp_result_set); + end_time, tmp_result_set); auto* table_result_set = (TableResultSet*)tmp_result_set; char* literal = new char[std::strlen("device_id") + 1]; std::strcpy(literal, "device_id"); @@ -188,7 +188,7 @@ class TsFileTableReaderTest : public ::testing::Test { ASSERT_EQ(table_result_set->get_value<int64_t>(1), row_num % points_per_device); row_num++; } - ASSERT_EQ(row_num, points_per_device * device_num); + ASSERT_EQ(row_num, std::min<int64_t>(points_per_device * device_num, end_time + 1)); reader.destroy_query_data_set(table_result_set); delete[] literal; ASSERT_EQ(reader.close(), common::E_OK); @@ -226,6 +226,10 @@ TEST_F(TsFileTableReaderTest, TableModelQueryMultiDevices) { g_config_value_.page_writer_max_point_num_ = prev_config; } +TEST_F(TsFileTableReaderTest, TableModelQueryWithTimeFilter) { + test_table_model_query(10, 1, 2); +} + TEST_F(TsFileTableReaderTest, TableModelResultMetadata) { auto table_schema = gen_table_schema(0); auto tsfile_table_writer_ =
