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

colinlee pushed a commit to branch colin_support_read_tree
in repository https://gitbox.apache.org/repos/asf/tsfile.git


The following commit(s) were added to refs/heads/colin_support_read_tree by 
this push:
     new 56db8cec fix some code.
56db8cec is described below

commit 56db8cecb933ca783c394947da3f0d3fefc467e2
Author: ColinLee <[email protected]>
AuthorDate: Wed Nov 19 12:43:27 2025 +0800

    fix some code.
---
 cpp/src/file/tsfile_io_writer.cc                   |  2 -
 cpp/src/reader/tsfile_reader.cc                    |  5 +-
 .../reader/tree_view/tsfile_reader_tree_test.cc    | 89 +++++++++++++++++++---
 3 files changed, 80 insertions(+), 16 deletions(-)

diff --git a/cpp/src/file/tsfile_io_writer.cc b/cpp/src/file/tsfile_io_writer.cc
index f65aebc2..0bf0d0e6 100644
--- a/cpp/src/file/tsfile_io_writer.cc
+++ b/cpp/src/file/tsfile_io_writer.cc
@@ -352,11 +352,9 @@ int TsFileIOWriter::write_file_index() {
                 tsm_iter.get_next(device_id, measurement_name, ts_index))) {
             break;
         }
-#if DEBUG_SE
         std::cout << "tsm_iter get next = {device_name=" << device_id
                   << ", measurement_name=" << measurement_name
                   << ", ts_index=" << ts_index << std::endl;
-#endif
 
         // prepare if it is an entry of a new device
         if (prev_device_id == nullptr || prev_device_id != device_id) {
diff --git a/cpp/src/reader/tsfile_reader.cc b/cpp/src/reader/tsfile_reader.cc
index 045dc818..fc416676 100644
--- a/cpp/src/reader/tsfile_reader.cc
+++ b/cpp/src/reader/tsfile_reader.cc
@@ -134,10 +134,11 @@ int TsFileReader::query_table_on_tree(
     }
     std::vector<std::string> columns_names(max_len);
     for (int i = 0; i < max_len; i++) {
-        columns_names[i] = "L_" + std::to_string(i);
+        columns_names[i] = "l_" + std::to_string(i);
     }
     Filter* time_filter = new TimeBetween(star_time, end_time, false);
-    ret = table_query_executor_->query_on_tree(device_ids, columns_names, 
measurement_names, time_filter, result_set);
+    ret = table_query_executor_->query_on_tree(
+        device_ids, columns_names, measurement_names, time_filter, result_set);
     return ret;
 }
 
diff --git a/cpp/test/reader/tree_view/tsfile_reader_tree_test.cc 
b/cpp/test/reader/tree_view/tsfile_reader_tree_test.cc
index e7466c7b..9bd1f462 100644
--- a/cpp/test/reader/tree_view/tsfile_reader_tree_test.cc
+++ b/cpp/test/reader/tree_view/tsfile_reader_tree_test.cc
@@ -32,6 +32,7 @@
 namespace storage {
 class QDSWithoutTimeGenerator;
 }
+
 using namespace storage;
 using namespace common;
 
@@ -49,7 +50,8 @@ class TsFileTreeReaderTest : public ::testing::Test {
         mode_t mode = 0666;
         write_file_.create(file_name_, flags, mode);
     }
-    void TearDown() override { remove(file_name_.c_str()); }
+
+    void TearDown() override {}
     std::string file_name_;
     WriteFile write_file_;
 
@@ -78,7 +80,7 @@ TEST_F(TsFileTreeReaderTest, BasicTest) {
     TsFileTreeWriter writer(&write_file_);
     std::string device_id = "test_device";
     std::string measurement_id = "test_measurement";
-    auto* measurement = new MeasurementSchema(measurement_id, INT64);
+    auto *measurement = new MeasurementSchema(measurement_id, INT64);
     writer.register_timeseries(device_id, measurement);
     TsRecord record(device_id, 0);
     record.add_point(measurement_id, static_cast<int64_t>(1));
@@ -94,12 +96,12 @@ TEST_F(TsFileTreeReaderTest, BasicTest) {
     ASSERT_EQ(device_ids[0], device_id);
 
     std::vector<std::string> measurement_ids{measurement_id};
-    ResultSet* result;
+    ResultSet *result;
     int ret =
         reader.query(device_ids, measurement_ids, INT64_MIN, INT64_MAX, 
result);
     ASSERT_EQ(ret, E_OK);
     auto iter = result->iterator();
-    RowRecord* read_record;
+    RowRecord *read_record;
     while (iter.hasNext()) {
         read_record = iter.next();
         EXPECT_EQ(read_record->get_field(1)->type_, INT64);
@@ -108,19 +110,82 @@ TEST_F(TsFileTreeReaderTest, BasicTest) {
     reader.close();
 }
 
+TEST_F(TsFileTreeReaderTest, ReadTreeByTable) {
+    TsFileTreeWriter writer(&write_file_);
+    std::vector<std::string> device_ids = {"root.db1.t1",    "root.db2.t1",
+                                           "root.db3.t2.t3", "root.db3.t3",
+                                           "device",         "device.ln"};
+    std::vector<std::string> measurement_ids = {"temperature", "hudi", 
"level"};
+    for (auto &device_id : device_ids) {
+        for (auto const &measurement : measurement_ids) {
+            ASSERT_EQ(E_OK,
+                      writer.register_timeseries(
+                          device_id, new storage::MeasurementSchema(
+                                         measurement, TSDataType::INT32)));
+            TsRecord record(device_id, 0);
+            record.add_point(measurement, static_cast<int64_t>(1));
+            ASSERT_EQ(E_OK,writer.write(record));
+        }
+    }
+    writer.flush();
+    writer.close();
+
+    TsFileReader reader;
+    reader.open(file_name_);
+    ResultSet *result;
+    int ret = reader.query_table_on_tree({"temperature"}, INT64_MIN, INT64_MAX,
+                                         result);
+    ASSERT_EQ(ret, E_OK);
+
+    auto *table_result_set = (storage::TableResultSet *)result;
+    bool has_next = false;
+    while (IS_SUCC(table_result_set->next(has_next)) && has_next) {
+        auto t = table_result_set->get_value<int64_t>(1);
+        int num = table_result_set->get_metadata()->get_column_count();
+        for (int i = 1; i < num + 1; ++i) {
+            switch (table_result_set->get_metadata()->get_column_type(i)) {
+                case INT64:
+                    std::cout << table_result_set->get_value<int64_t>(i)
+                              << std::endl;
+                    break;
+                case DOUBLE:
+                    std::cout << table_result_set->get_value<double>(i)
+                              << std::endl;
+                    break;
+                case FLOAT:
+                    std::cout << table_result_set->get_value<float>(i)
+                              << std::endl;
+                    break;
+                case INT32:
+                    std::cout << table_result_set->get_value<int32_t>(i)
+                              << std::endl;
+                    break;
+                case STRING:
+                    std::cout
+                        << table_result_set->get_value<common::String *>(i)
+                        << std::endl;
+                    break;
+            }
+        }
+    }
+
+    reader.destroy_query_data_set(result);
+    reader.close();
+}
+
 TEST_F(TsFileTreeReaderTest, ExtendedRowsAndColumnsTest) {
     TsFileTreeWriter writer(&write_file_);
     std::vector<std::string> device_ids = {"device_1", "device_2", "device_3"};
     std::vector<std::string> measurement_ids = {"temperature", "humidity",
                                                 "pressure", "voltage"};
     std::vector<TSDataType> data_types = {INT64, DOUBLE, FLOAT, INT32};
-    std::vector<MeasurementSchema*> measurements;
+    std::vector<MeasurementSchema *> measurements;
     for (size_t i = 0; i < measurement_ids.size(); ++i) {
-        auto* measurement =
+        auto *measurement =
             new MeasurementSchema(measurement_ids[i], data_types[i]);
         measurements.push_back(measurement);
     }
-    for (auto& device_id : device_ids) {
+    for (auto &device_id : device_ids) {
         for (auto measurement : measurements) {
             writer.register_timeseries(device_id, measurement);
         }
@@ -128,7 +193,7 @@ TEST_F(TsFileTreeReaderTest, ExtendedRowsAndColumnsTest) {
 
     const int NUM_ROWS = 100;
     for (int row = 0; row < NUM_ROWS; ++row) {
-        for (const auto& device_id : device_ids) {
+        for (const auto &device_id : device_ids) {
             TsRecord record(device_id, row * 1000);
             for (size_t i = 0; i < measurement_ids.size(); ++i) {
                 switch (data_types[i]) {
@@ -168,7 +233,7 @@ TEST_F(TsFileTreeReaderTest, ExtendedRowsAndColumnsTest) {
         EXPECT_EQ(read_device_ids[i], device_ids[i]);
     }
 
-    ResultSet* result;
+    ResultSet *result;
     int ret =
         reader.query(device_ids, measurement_ids, 0, NUM_ROWS * 1000, result);
     ASSERT_EQ(ret, E_OK);
@@ -177,14 +242,14 @@ TEST_F(TsFileTreeReaderTest, ExtendedRowsAndColumnsTest) {
     int row_count = 0;
 
     while (iter.hasNext()) {
-        RowRecord* read_record = iter.next();
+        RowRecord *read_record = iter.next();
         row_count++;
         EXPECT_EQ(read_record->get_fields()->size(),
                   device_ids.size() * measurement_ids.size() + 1);
 
         // device_id1
         for (size_t i = 0; i < measurement_ids.size(); ++i) {
-            Field* field = read_record->get_field(i + 1);
+            Field *field = read_record->get_field(i + 1);
             ASSERT_NE(field, nullptr);
             EXPECT_EQ(field->type_, data_types[i]);
 
@@ -220,7 +285,7 @@ TEST_F(TsFileTreeReaderTest, ExtendedRowsAndColumnsTest) {
     EXPECT_EQ(row_count * device_ids.size(), NUM_ROWS * device_ids.size());
     reader.destroy_query_data_set(result);
     reader.close();
-    for (auto* measurement : measurements) {
+    for (auto *measurement : measurements) {
         delete measurement;
     }
 }

Reply via email to