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 c114c5114bd8c01bbc448b1d5ff4b0cc98d85463 Author: Hongzhi Gao <[email protected]> AuthorDate: Thu Nov 20 10:01:00 2025 +0800 Fix/cpp get device schema (#642) * fix tree-interface get_device_schema * fix tree-interface get_device_schema --- cpp/src/file/tsfile_io_reader.cc | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/cpp/src/file/tsfile_io_reader.cc b/cpp/src/file/tsfile_io_reader.cc index c70c429e..273f09a4 100644 --- a/cpp/src/file/tsfile_io_reader.cc +++ b/cpp/src/file/tsfile_io_reader.cc @@ -701,13 +701,26 @@ int TsFileIOReader::do_load_all_timeseries_index( for (const auto &index_node_entry : index_node_entry_list) { int64_t start_offset = index_node_entry.first->get_offset(), end_offset = index_node_entry.second; - const std::string target_measurement_name( - index_node_entry.first->get_name().to_std_string()); - ITimeseriesIndex *ts_idx; - ret = do_load_timeseries_index(target_measurement_name, start_offset, - end_offset, in_timeseries_index_pa, - ts_idx); - if (IS_SUCC(ret)) { + int32_t read_size = (int32_t)(end_offset - start_offset); + int32_t ret_read_len = 0; + char *ti_buf = in_timeseries_index_pa.alloc(read_size); + if (IS_NULL(ti_buf)) { + return E_OOM; + } + if (RET_FAIL(read_file_->read(start_offset, ti_buf, read_size, + ret_read_len))) { + return ret; + } + ByteStream bs; + bs.wrap_from(ti_buf, read_size); + while (bs.has_remaining()) { + void *buf = in_timeseries_index_pa.alloc(sizeof(TimeseriesIndex)); + auto ts_idx = new (buf) TimeseriesIndex; + if (RET_FAIL( + ts_idx->deserialize_from(bs, &in_timeseries_index_pa))) { + return ret; + } + if (ts_idx->get_measurement_name().len_ == 0) continue; ts_indexs.push_back(ts_idx); } }
