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

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


The following commit(s) were added to refs/heads/develop by this push:
     new 58fa12f4 fix read from iotdb data. (#520)
58fa12f4 is described below

commit 58fa12f403d32d712b32823fe94ffe539c378c55
Author: Colin Lee <[email protected]>
AuthorDate: Fri Jun 20 10:28:31 2025 +0800

    fix read from iotdb data. (#520)
---
 cpp/src/common/tsfile_common.cc       |  36 +-
 cpp/src/common/tsfile_common.h        |  10 +-
 cpp/src/file/tsfile_io_writer.cc      |   6 +-
 cpp/test/common/tsfile_common_test.cc | 675 +++++++++++++++++-----------------
 4 files changed, 372 insertions(+), 355 deletions(-)

diff --git a/cpp/src/common/tsfile_common.cc b/cpp/src/common/tsfile_common.cc
index 17c3d479..06c415bc 100644
--- a/cpp/src/common/tsfile_common.cc
+++ b/cpp/src/common/tsfile_common.cc
@@ -30,7 +30,7 @@ namespace storage {
 
 const char *MAGIC_STRING_TSFILE = "TsFile";
 const int MAGIC_STRING_TSFILE_LEN = 6;
-const char VERSION_NUM_BYTE = 0x04;//0x03;
+const char VERSION_NUM_BYTE = 0x04;  // 0x03;
 const char CHUNK_GROUP_HEADER_MARKER = 0;
 const char CHUNK_HEADER_MARKER = 1;
 const char ONLY_ONE_PAGE_CHUNK_HEADER_MARKER = 5;
@@ -104,13 +104,14 @@ int TSMIterator::init() {
             chunk_meta_iter_++;
         }
         if (!tmp.empty()) {
-            tsm_chunk_meta_info_[chunk_group_meta_iter_.get()
-                                     ->device_id_] = tmp;
+            tsm_chunk_meta_info_[chunk_group_meta_iter_.get()->device_id_] =
+                tmp;
         }
 
         chunk_group_meta_iter_++;
     }
-    if (!tsm_chunk_meta_info_.empty() && 
!tsm_chunk_meta_info_.begin()->second.empty()) {
+    if (!tsm_chunk_meta_info_.empty() &&
+        !tsm_chunk_meta_info_.begin()->second.empty()) {
         tsm_measurement_iter_ = tsm_chunk_meta_info_.begin()->second.begin();
     }
     tsm_device_iter_ = tsm_chunk_meta_info_.begin();
@@ -121,7 +122,8 @@ bool TSMIterator::has_next() const {
     return tsm_device_iter_ != tsm_chunk_meta_info_.end();
 }
 
-int TSMIterator::get_next(std::shared_ptr<IDeviceID> &ret_device_id, String 
&ret_measurement_name,
+int TSMIterator::get_next(std::shared_ptr<IDeviceID> &ret_device_id,
+                          String &ret_measurement_name,
                           TimeseriesIndex &ret_ts_index) {
     int ret = E_OK;
     SimpleList<ChunkMeta *> chunk_meta_list_of_this_ts(
@@ -153,7 +155,6 @@ int TSMIterator::get_next(std::shared_ptr<IDeviceID> 
&ret_device_id, String &ret
     ret_ts_index.set_data_type(data_type);
     ret_ts_index.init_statistic(data_type);
 
-
     SimpleList<ChunkMeta *>::Iterator ts_chunk_meta_iter =
         chunk_meta_list_of_this_ts.begin();
     for (;
@@ -199,9 +200,10 @@ int TsFileMeta::serialize_to(common::ByteStream &out) {
     }
 
     common::SerializationUtil::write_var_int(tsfile_properties_.size(), out);
-    for (const auto& tsfile_property : tsfile_properties_) {
+    for (const auto &tsfile_property : tsfile_properties_) {
         common::SerializationUtil::write_var_str(tsfile_property.first, out);
-        common::SerializationUtil::write_var_str(tsfile_property.second, out);
+        common::SerializationUtil::write_var_char_ptr(tsfile_property.second,
+                                                      out);
     }
 
     return out.total_size() - start_idx;
@@ -250,24 +252,26 @@ int TsFileMeta::deserialize_from(common::ByteStream &in) {
     int32_t tsfile_properties_size = 0;
     common::SerializationUtil::read_var_int(tsfile_properties_size, in);
     for (int i = 0; i < tsfile_properties_size; i++) {
-        std::string key, value;
+        std::string key, *value;
         common::SerializationUtil::read_var_str(key, in);
-        common::SerializationUtil::read_var_str(value, in);
-        tsfile_properties_.emplace(key, std::move(value));
+        common::SerializationUtil::read_var_char_ptr(value, in);
+        tsfile_properties_.emplace(key, value);
     }
     return ret;
 }
 
 /* ================ MetaIndexNode ================ */
-int MetaIndexNode::binary_search_children(std::shared_ptr<IComparable> key, 
bool exact_search,
-                                          std::shared_ptr<IMetaIndexEntry> 
&ret_index_entry,
-                                          int64_t &ret_end_offset) {
+int MetaIndexNode::binary_search_children(
+    std::shared_ptr<IComparable> key, bool exact_search,
+    std::shared_ptr<IMetaIndexEntry> &ret_index_entry,
+    int64_t &ret_end_offset) {
 #if DEBUG_SE
     std::cout << "MetaIndexNode::binary_search_children start, name=" << key
               << ", exact_search=" << exact_search
               << ", children_.size=" << children_.size() << std::endl;
     for (int i = 0; i < (int)children_.size(); i++) {
-        std::cout << "Iterating children: " << children_[i]->get_name() << 
std::endl;
+        std::cout << "Iterating children: " << children_[i]->get_name()
+                  << std::endl;
     }
 #endif
     bool is_aligned = false;
@@ -298,7 +302,7 @@ int 
MetaIndexNode::binary_search_children(std::shared_ptr<IComparable> key, bool
                 break;
             } else if (cmp > 0) {  // children_[m] > name
                 h = m;
-            } else {               // children_[m] < name
+            } else {  // children_[m] < name
                 l = m;
             }
         }
diff --git a/cpp/src/common/tsfile_common.h b/cpp/src/common/tsfile_common.h
index f20632ee..1f39abde 100644
--- a/cpp/src/common/tsfile_common.h
+++ b/cpp/src/common/tsfile_common.h
@@ -677,7 +677,8 @@ struct DeviceIDComparable : IComparable {
         const auto *other_device =
             dynamic_cast<const DeviceIDComparable *>(&other);
         if (!other_device) throw std::runtime_error("Incompatible comparison");
-        return *device_id_ != *other_device->device_id_ && !(*device_id_ < 
*other_device->device_id_);
+        return *device_id_ != *other_device->device_id_ &&
+               !(*device_id_ < *other_device->device_id_);
     }
 
     bool operator==(const IComparable &other) const override {
@@ -1066,7 +1067,7 @@ struct TsFileMeta {
         DeviceNodeMap;
     std::map<std::string, std::shared_ptr<MetaIndexNode>>
         table_metadata_index_node_map_;
-    std::unordered_map<std::string, std::string> tsfile_properties_;
+    std::unordered_map<std::string, std::string *> tsfile_properties_;
     typedef std::unordered_map<std::string, std::shared_ptr<TableSchema>>
         TableSchemasMap;
     TableSchemasMap table_schemas_;
@@ -1104,6 +1105,11 @@ struct TsFileMeta {
         if (bloom_filter_ != nullptr) {
             bloom_filter_->destroy();
         }
+        for (auto properties : tsfile_properties_) {
+            if (properties.second != nullptr) {
+                delete properties.second;
+            }
+        }
         table_metadata_index_node_map_.clear();
         table_schemas_.clear();
     }
diff --git a/cpp/src/file/tsfile_io_writer.cc b/cpp/src/file/tsfile_io_writer.cc
index 4d19b12e..3355fce3 100644
--- a/cpp/src/file/tsfile_io_writer.cc
+++ b/cpp/src/file/tsfile_io_writer.cc
@@ -460,11 +460,11 @@ int TsFileIOWriter::write_file_index() {
         tsfile_meta.table_metadata_index_node_map_ = table_nodes_map;
         tsfile_meta.table_schemas_ = schema_->table_schema_map_;
         tsfile_meta.tsfile_properties_.insert(
-            std::make_pair("encryptLevel", encrypt_level_));
+            std::make_pair("encryptLevel", new std::string(encrypt_level_)));
         tsfile_meta.tsfile_properties_.insert(
-            std::make_pair("encryptType", encrypt_type_));
+            std::make_pair("encryptType", new std::string(encrypt_type_)));
         tsfile_meta.tsfile_properties_.insert(
-            std::make_pair("encryptKey", encrypt_key_));
+            std::make_pair("encryptKey", nullptr));
 #if DEBUG_SE
         auto tsfile_meta_offset = write_stream_.total_size();
 #endif
diff --git a/cpp/test/common/tsfile_common_test.cc 
b/cpp/test/common/tsfile_common_test.cc
index dc9cebf0..0b22b6af 100644
--- a/cpp/test/common/tsfile_common_test.cc
+++ b/cpp/test/common/tsfile_common_test.cc
@@ -23,446 +23,453 @@
 
 namespace storage {
 TEST(PageHeaderTest, DefaultConstructor) {
-  PageHeader header;
-  EXPECT_EQ(header.uncompressed_size_, 0);
-  EXPECT_EQ(header.compressed_size_, 0);
-  EXPECT_EQ(header.statistic_, nullptr);
+    PageHeader header;
+    EXPECT_EQ(header.uncompressed_size_, 0);
+    EXPECT_EQ(header.compressed_size_, 0);
+    EXPECT_EQ(header.statistic_, nullptr);
 }
 
 TEST(PageHeaderTest, Reset) {
-  PageHeader header;
-  header.uncompressed_size_ = 100;
-  header.compressed_size_ = 50;
-  header.statistic_ = StatisticFactory::alloc_statistic(common::BOOLEAN);
-
-  header.reset();
-  EXPECT_EQ(header.uncompressed_size_, 0);
-  EXPECT_EQ(header.compressed_size_, 0);
+    PageHeader header;
+    header.uncompressed_size_ = 100;
+    header.compressed_size_ = 50;
+    header.statistic_ = StatisticFactory::alloc_statistic(common::BOOLEAN);
+
+    header.reset();
+    EXPECT_EQ(header.uncompressed_size_, 0);
+    EXPECT_EQ(header.compressed_size_, 0);
 }
 
 TEST(ChunkHeaderTest, DefaultConstructor) {
-  ChunkHeader header;
-  EXPECT_EQ(header.measurement_name_, "");
-  EXPECT_EQ(header.data_size_, 0);
-  EXPECT_EQ(header.data_type_, common::INVALID_DATATYPE);
-  EXPECT_EQ(header.compression_type_, common::INVALID_COMPRESSION);
-  EXPECT_EQ(header.encoding_type_, common::INVALID_ENCODING);
-  EXPECT_EQ(header.num_of_pages_, 0);
-  EXPECT_EQ(header.serialized_size_, 0);
-  EXPECT_EQ(header.chunk_type_, 0);
+    ChunkHeader header;
+    EXPECT_EQ(header.measurement_name_, "");
+    EXPECT_EQ(header.data_size_, 0);
+    EXPECT_EQ(header.data_type_, common::INVALID_DATATYPE);
+    EXPECT_EQ(header.compression_type_, common::INVALID_COMPRESSION);
+    EXPECT_EQ(header.encoding_type_, common::INVALID_ENCODING);
+    EXPECT_EQ(header.num_of_pages_, 0);
+    EXPECT_EQ(header.serialized_size_, 0);
+    EXPECT_EQ(header.chunk_type_, 0);
 }
 
 TEST(ChunkHeaderTest, Reset) {
-  ChunkHeader header;
-  header.measurement_name_ = "test";
-  header.data_size_ = 100;
-  header.data_type_ = common::TSDataType::INT32;
-  header.compression_type_ = common::CompressionType::SNAPPY;
-  header.encoding_type_ = common::TSEncoding::PLAIN;
-  header.num_of_pages_ = 5;
-  header.serialized_size_ = 50;
-  header.chunk_type_ = 1;
-
-  header.reset();
-  EXPECT_EQ(header.measurement_name_, "test");
-  EXPECT_EQ(header.data_size_, 0);
-  EXPECT_EQ(header.data_type_, common::INT32);
-  EXPECT_EQ(header.compression_type_, common::SNAPPY);
-  EXPECT_EQ(header.encoding_type_, common::PLAIN);
-  EXPECT_EQ(header.num_of_pages_, 0);
-  EXPECT_EQ(header.serialized_size_, 0);
-  EXPECT_EQ(header.chunk_type_, 0);
+    ChunkHeader header;
+    header.measurement_name_ = "test";
+    header.data_size_ = 100;
+    header.data_type_ = common::TSDataType::INT32;
+    header.compression_type_ = common::CompressionType::SNAPPY;
+    header.encoding_type_ = common::TSEncoding::PLAIN;
+    header.num_of_pages_ = 5;
+    header.serialized_size_ = 50;
+    header.chunk_type_ = 1;
+
+    header.reset();
+    EXPECT_EQ(header.measurement_name_, "test");
+    EXPECT_EQ(header.data_size_, 0);
+    EXPECT_EQ(header.data_type_, common::INT32);
+    EXPECT_EQ(header.compression_type_, common::SNAPPY);
+    EXPECT_EQ(header.encoding_type_, common::PLAIN);
+    EXPECT_EQ(header.num_of_pages_, 0);
+    EXPECT_EQ(header.serialized_size_, 0);
+    EXPECT_EQ(header.chunk_type_, 0);
 }
 
 TEST(ChunkMetaTest, DefaultConstructor) {
-  ChunkMeta meta;
-  EXPECT_EQ(meta.offset_of_chunk_header_, 0);
-  EXPECT_EQ(meta.statistic_, nullptr);
-  EXPECT_EQ(meta.mask_, 0);
+    ChunkMeta meta;
+    EXPECT_EQ(meta.offset_of_chunk_header_, 0);
+    EXPECT_EQ(meta.statistic_, nullptr);
+    EXPECT_EQ(meta.mask_, 0);
 }
 
 TEST(ChunkMetaTest, Init) {
-  ChunkMeta meta;
-  char name[] = "test";
-  common::String measurement_name(name, sizeof(name));
-  Statistic stat;
-  common::TsID ts_id;
-  common::PageArena pa;
-
-  int ret = meta.init(measurement_name, common::TSDataType::INT32, 100, &stat, 
1, common::PLAIN, common::UNCOMPRESSED, pa);
-  EXPECT_EQ(ret, common::E_OK);
-  EXPECT_EQ(meta.data_type_, common::TSDataType::INT32);
-  EXPECT_EQ(meta.offset_of_chunk_header_, 100);
-  EXPECT_EQ(meta.statistic_, &stat);
-  EXPECT_EQ(meta.mask_, 1);
+    ChunkMeta meta;
+    char name[] = "test";
+    common::String measurement_name(name, sizeof(name));
+    Statistic stat;
+    common::TsID ts_id;
+    common::PageArena pa;
+
+    int ret = meta.init(measurement_name, common::TSDataType::INT32, 100, 
&stat,
+                        1, common::PLAIN, common::UNCOMPRESSED, pa);
+    EXPECT_EQ(ret, common::E_OK);
+    EXPECT_EQ(meta.data_type_, common::TSDataType::INT32);
+    EXPECT_EQ(meta.offset_of_chunk_header_, 100);
+    EXPECT_EQ(meta.statistic_, &stat);
+    EXPECT_EQ(meta.mask_, 1);
 }
 
 TEST(ChunkGroupMetaTest, Constructor) {
-  common::PageArena pa;
-  ChunkGroupMeta group_meta(&pa);
-  EXPECT_EQ(group_meta.chunk_meta_list_.size(), 0);
+    common::PageArena pa;
+    ChunkGroupMeta group_meta(&pa);
+    EXPECT_EQ(group_meta.chunk_meta_list_.size(), 0);
 }
 
 TEST(ChunkGroupMetaTest, Init) {
-  common::PageArena pa;
-  ChunkGroupMeta group_meta(&pa);
-  int ret = group_meta.
-      init(std::make_shared<StringArrayDeviceID>("device_1"));
-  EXPECT_EQ(ret, common::E_OK);
+    common::PageArena pa;
+    ChunkGroupMeta group_meta(&pa);
+    int ret =
+        group_meta.init(std::make_shared<StringArrayDeviceID>("device_1"));
+    EXPECT_EQ(ret, common::E_OK);
 }
 
 TEST(ChunkGroupMetaTest, Push) {
-  common::PageArena pa;
-  ChunkGroupMeta group_meta(&pa);
-  ChunkMeta meta;
-  int ret = group_meta.push(&meta);
-  EXPECT_EQ(ret, common::E_OK);
-  EXPECT_EQ(group_meta.chunk_meta_list_.size(), 1);
+    common::PageArena pa;
+    ChunkGroupMeta group_meta(&pa);
+    ChunkMeta meta;
+    int ret = group_meta.push(&meta);
+    EXPECT_EQ(ret, common::E_OK);
+    EXPECT_EQ(group_meta.chunk_meta_list_.size(), 1);
 }
 
-class TimeseriesIndexTest : public ::testing::Test {
-};
+class TimeseriesIndexTest : public ::testing::Test {};
 
 TEST_F(TimeseriesIndexTest, ConstructorAndDestructor) {
-  TimeseriesIndex tsIndex;
-  EXPECT_EQ(tsIndex.get_data_type(), common::INVALID_DATATYPE);
-  EXPECT_EQ(tsIndex.get_statistic(), nullptr);
-  EXPECT_EQ(tsIndex.get_chunk_meta_list(), nullptr);
+    TimeseriesIndex tsIndex;
+    EXPECT_EQ(tsIndex.get_data_type(), common::INVALID_DATATYPE);
+    EXPECT_EQ(tsIndex.get_statistic(), nullptr);
+    EXPECT_EQ(tsIndex.get_chunk_meta_list(), nullptr);
 }
 
 TEST_F(TimeseriesIndexTest, ResetFunction) {
-  TimeseriesIndex tsIndex;
-  tsIndex.reset();
-  EXPECT_EQ(tsIndex.get_data_type(), common::VECTOR);
-  EXPECT_EQ(tsIndex.get_statistic(), nullptr);
-  EXPECT_EQ(tsIndex.get_chunk_meta_list(), nullptr);
+    TimeseriesIndex tsIndex;
+    tsIndex.reset();
+    EXPECT_EQ(tsIndex.get_data_type(), common::VECTOR);
+    EXPECT_EQ(tsIndex.get_statistic(), nullptr);
+    EXPECT_EQ(tsIndex.get_chunk_meta_list(), nullptr);
 }
 
 TEST_F(TimeseriesIndexTest, SerializeAndDeserialize) {
-  common::PageArena arena;
-  arena.init(1024, common::MOD_TIMESERIES_INDEX_OBJ);
-  TimeseriesIndex tsIndex;
-  common::ByteStream out(1024, common::MOD_TIMESERIES_INDEX_OBJ);
-  char name[] = "test_measurement";
-  common::String measurementName(name, sizeof(name));
-  tsIndex.set_measurement_name(measurementName);
-  tsIndex.set_ts_meta_type(1);
-  tsIndex.set_data_type(common::TSDataType::INT32);
-  tsIndex.init_statistic(common::TSDataType::INT32);
-
-  int ret = tsIndex.serialize_to(out);
-  EXPECT_EQ(ret, common::E_OK);
-
-  TimeseriesIndex tsIndexDeserialized;
-  ret = tsIndexDeserialized.deserialize_from(out, &arena);
-  EXPECT_EQ(ret, common::E_OK);
-  EXPECT_EQ(tsIndexDeserialized.get_data_type(), common::TSDataType::INT32);
+    common::PageArena arena;
+    arena.init(1024, common::MOD_TIMESERIES_INDEX_OBJ);
+    TimeseriesIndex tsIndex;
+    common::ByteStream out(1024, common::MOD_TIMESERIES_INDEX_OBJ);
+    char name[] = "test_measurement";
+    common::String measurementName(name, sizeof(name));
+    tsIndex.set_measurement_name(measurementName);
+    tsIndex.set_ts_meta_type(1);
+    tsIndex.set_data_type(common::TSDataType::INT32);
+    tsIndex.init_statistic(common::TSDataType::INT32);
+
+    int ret = tsIndex.serialize_to(out);
+    EXPECT_EQ(ret, common::E_OK);
+
+    TimeseriesIndex tsIndexDeserialized;
+    ret = tsIndexDeserialized.deserialize_from(out, &arena);
+    EXPECT_EQ(ret, common::E_OK);
+    EXPECT_EQ(tsIndexDeserialized.get_data_type(), common::TSDataType::INT32);
 }
 
 class TSMIteratorTest : public ::testing::Test {
-protected:
-  void SetUp() override {
-    arena.init(1024, common::MOD_DEFAULT);
-    chunk_group_meta_list_ =
-        new common::SimpleList<ChunkGroupMeta *>(&arena);
-    void *buf = arena.alloc(sizeof(ChunkGroupMeta));
-    auto chunk_group_meta = new(buf) ChunkGroupMeta(&arena);
-    chunk_group_meta->device_id_ = std::make_shared<StringArrayDeviceID>(
-        "device_1");
-
-    buf = arena.alloc(sizeof(ChunkMeta));
-    auto chunk_meta = new(buf) ChunkMeta();
-    char measure_name[] = "measurement_1";
-    common::String measurement_name(measure_name, sizeof(measure_name));
-    stat_ = StatisticFactory::alloc_statistic(common::TSDataType::INT32);
-    chunk_meta->init(measurement_name, common::TSDataType::INT32, 100,
-                     stat_, 1, common::PLAIN, common::UNCOMPRESSED,
-                     arena);
-
-    chunk_group_meta->chunk_meta_list_.push_back(chunk_meta);
-    chunk_group_meta_list_->push_back(chunk_group_meta);
-  }
-
-  void TearDown() override {
-    for (auto iter = chunk_group_meta_list_->begin(); iter != 
chunk_group_meta_list_->end(); iter++) {
-      iter.get()->device_id_.reset();
+   protected:
+    void SetUp() override {
+        arena.init(1024, common::MOD_DEFAULT);
+        chunk_group_meta_list_ =
+            new common::SimpleList<ChunkGroupMeta *>(&arena);
+        void *buf = arena.alloc(sizeof(ChunkGroupMeta));
+        auto chunk_group_meta = new (buf) ChunkGroupMeta(&arena);
+        chunk_group_meta->device_id_ =
+            std::make_shared<StringArrayDeviceID>("device_1");
+
+        buf = arena.alloc(sizeof(ChunkMeta));
+        auto chunk_meta = new (buf) ChunkMeta();
+        char measure_name[] = "measurement_1";
+        common::String measurement_name(measure_name, sizeof(measure_name));
+        stat_ = StatisticFactory::alloc_statistic(common::TSDataType::INT32);
+        chunk_meta->init(measurement_name, common::TSDataType::INT32, 100,
+                         stat_, 1, common::PLAIN, common::UNCOMPRESSED, arena);
+
+        chunk_group_meta->chunk_meta_list_.push_back(chunk_meta);
+        chunk_group_meta_list_->push_back(chunk_group_meta);
+    }
+
+    void TearDown() override {
+        for (auto iter = chunk_group_meta_list_->begin();
+             iter != chunk_group_meta_list_->end(); iter++) {
+            iter.get()->device_id_.reset();
+        }
+        delete chunk_group_meta_list_;
+        StatisticFactory::free(stat_);
     }
-    delete chunk_group_meta_list_;
-    StatisticFactory::free(stat_);
-  }
 
-  common::PageArena arena;
-  Statistic *stat_;
-  common::SimpleList<ChunkGroupMeta *> *chunk_group_meta_list_;
+    common::PageArena arena;
+    Statistic *stat_;
+    common::SimpleList<ChunkGroupMeta *> *chunk_group_meta_list_;
 };
 
 TEST_F(TSMIteratorTest, InitSuccess) {
-  TSMIterator iter(*chunk_group_meta_list_);
-  ASSERT_EQ(iter.init(), common::E_OK);
+    TSMIterator iter(*chunk_group_meta_list_);
+    ASSERT_EQ(iter.init(), common::E_OK);
 }
 
 TEST_F(TSMIteratorTest, InitEmptyList) {
-  common::PageArena arena;
-  common::SimpleList<ChunkGroupMeta *> empty_list(&arena);
-  TSMIterator iter(empty_list);
-  ASSERT_EQ(iter.init(), common::E_OK);
+    common::PageArena arena;
+    common::SimpleList<ChunkGroupMeta *> empty_list(&arena);
+    TSMIterator iter(empty_list);
+    ASSERT_EQ(iter.init(), common::E_OK);
 }
 
 TEST_F(TSMIteratorTest, HasNext) {
-  TSMIterator iter(*chunk_group_meta_list_);
-  iter.init();
-  ASSERT_TRUE(iter.has_next());
+    TSMIterator iter(*chunk_group_meta_list_);
+    iter.init();
+    ASSERT_TRUE(iter.has_next());
 }
 
 TEST_F(TSMIteratorTest, GetNext) {
-  TSMIterator iter(*chunk_group_meta_list_);
-  iter.init();
-
-  std::shared_ptr<IDeviceID> ret_device_name;
-  common::String ret_measurement_name;
-  TimeseriesIndex ret_ts_index;
-
-  ASSERT_TRUE(iter.has_next());
-  ASSERT_EQ(
-      iter.get_next(ret_device_name, ret_measurement_name, ret_ts_index),
-      common::E_OK);
-  common::PageArena arena;
-  char device_name[] = "device_1";
-  auto expect_str = std::make_shared<StringArrayDeviceID>(device_name);
-
-  ASSERT_TRUE(ret_device_name->operator==(*expect_str));
-
-  ASSERT_EQ(
-      iter.get_next(ret_device_name, ret_measurement_name, ret_ts_index),
-      common::E_NO_MORE_DATA);
+    TSMIterator iter(*chunk_group_meta_list_);
+    iter.init();
+
+    std::shared_ptr<IDeviceID> ret_device_name;
+    common::String ret_measurement_name;
+    TimeseriesIndex ret_ts_index;
+
+    ASSERT_TRUE(iter.has_next());
+    ASSERT_EQ(
+        iter.get_next(ret_device_name, ret_measurement_name, ret_ts_index),
+        common::E_OK);
+    common::PageArena arena;
+    char device_name[] = "device_1";
+    auto expect_str = std::make_shared<StringArrayDeviceID>(device_name);
+
+    ASSERT_TRUE(ret_device_name->operator==(*expect_str));
+
+    ASSERT_EQ(
+        iter.get_next(ret_device_name, ret_measurement_name, ret_ts_index),
+        common::E_NO_MORE_DATA);
 }
 
 class MetaIndexEntryTest : public ::testing::Test {
-protected:
-  common::PageArena pa_;
-  common::ByteStream *out_;
-  std::shared_ptr<MeasurementMetaIndexEntry> entry_;
-
-  void SetUp() override {
-    out_ = new common::ByteStream(1024, common::MOD_DEFAULT);
-    entry_ = std::make_shared<MeasurementMetaIndexEntry>();
-  }
+   protected:
+    common::PageArena pa_;
+    common::ByteStream *out_;
+    std::shared_ptr<MeasurementMetaIndexEntry> entry_;
+
+    void SetUp() override {
+        out_ = new common::ByteStream(1024, common::MOD_DEFAULT);
+        entry_ = std::make_shared<MeasurementMetaIndexEntry>();
+    }
 
-  void TearDown() override { delete out_; }
+    void TearDown() override { delete out_; }
 };
 
 TEST_F(MetaIndexEntryTest, InitSuccess) {
-  std::string name = "test_name";
-  int64_t offset = 123456;
-  ASSERT_EQ(entry_->init(name, offset, pa_), common::E_OK);
-  ASSERT_EQ(entry_->offset_, offset);
+    std::string name = "test_name";
+    int64_t offset = 123456;
+    ASSERT_EQ(entry_->init(name, offset, pa_), common::E_OK);
+    ASSERT_EQ(entry_->offset_, offset);
 }
 
 TEST_F(MetaIndexEntryTest, SerializeDeserialize) {
-  std::string name = "test_name";
-  int64_t offset = 123456;
-  entry_->init(name, offset, pa_);
+    std::string name = "test_name";
+    int64_t offset = 123456;
+    entry_->init(name, offset, pa_);
 
-  ASSERT_EQ(entry_->serialize_to(*out_), common::E_OK);
+    ASSERT_EQ(entry_->serialize_to(*out_), common::E_OK);
 
-  MeasurementMetaIndexEntry new_entry;
-  ASSERT_EQ(new_entry.deserialize_from(*out_, &pa_), common::E_OK);
-  ASSERT_EQ(new_entry.offset_, offset);
+    MeasurementMetaIndexEntry new_entry;
+    ASSERT_EQ(new_entry.deserialize_from(*out_, &pa_), common::E_OK);
+    ASSERT_EQ(new_entry.offset_, offset);
 }
 
 class MetaIndexNodeTest : public ::testing::Test {
-protected:
-  common::PageArena pa_;
-  common::ByteStream *out_;
-  MetaIndexNode node_;
+   protected:
+    common::PageArena pa_;
+    common::ByteStream *out_;
+    MetaIndexNode node_;
 
-  MetaIndexNodeTest()
-      : node_(&pa_) {
-  }
+    MetaIndexNodeTest() : node_(&pa_) {}
 
-  void SetUp() override {
-    out_ = new common::ByteStream(1024, common::MOD_DEFAULT);
-  }
+    void SetUp() override {
+        out_ = new common::ByteStream(1024, common::MOD_DEFAULT);
+    }
 
-  void TearDown() override { delete out_; }
+    void TearDown() override { delete out_; }
 };
 
 TEST_F(MetaIndexNodeTest, GetMeasurementFirstChild) {
-  ASSERT_EQ(node_.peek(), nullptr);
+    ASSERT_EQ(node_.peek(), nullptr);
 
-  auto entry = std::make_shared<MeasurementMetaIndexEntry>();
-  entry->init("child_name", 0, pa_);
-  node_.push_entry(entry);
+    auto entry = std::make_shared<MeasurementMetaIndexEntry>();
+    entry->init("child_name", 0, pa_);
+    node_.push_entry(entry);
 
-  ASSERT_EQ(node_.peek(), entry);
+    ASSERT_EQ(node_.peek(), entry);
 }
 
 TEST_F(MetaIndexNodeTest, GetDeviceFirstChild) {
-  ASSERT_EQ(node_.peek(), nullptr);
-  auto device_id = std::make_shared<StringArrayDeviceID>("device_1");
-  auto entry = std::make_shared<DeviceMetaIndexEntry>(device_id, 0);
-  node_.push_entry(entry);
+    ASSERT_EQ(node_.peek(), nullptr);
+    auto device_id = std::make_shared<StringArrayDeviceID>("device_1");
+    auto entry = std::make_shared<DeviceMetaIndexEntry>(device_id, 0);
+    node_.push_entry(entry);
 
-  ASSERT_EQ(node_.peek(), entry);
+    ASSERT_EQ(node_.peek(), entry);
 }
 
 TEST_F(MetaIndexNodeTest, MeasurementSerializeDeserialize) {
-  auto entry = std::make_shared<MeasurementMetaIndexEntry>();
-  entry->init("child_name", 123, pa_);
-  node_.push_entry(entry);
-  node_.end_offset_ = 456;
-  node_.node_type_ = LEAF_MEASUREMENT;
+    auto entry = std::make_shared<MeasurementMetaIndexEntry>();
+    entry->init("child_name", 123, pa_);
+    node_.push_entry(entry);
+    node_.end_offset_ = 456;
+    node_.node_type_ = LEAF_MEASUREMENT;
 
-  ASSERT_EQ(node_.serialize_to(*out_), common::E_OK);
+    ASSERT_EQ(node_.serialize_to(*out_), common::E_OK);
 
-  MetaIndexNode new_node(&pa_);
-  ASSERT_EQ(new_node.deserialize_from(*out_), common::E_OK);
-  ASSERT_EQ(new_node.end_offset_, 456);
-  ASSERT_EQ(new_node.node_type_, LEAF_MEASUREMENT);
+    MetaIndexNode new_node(&pa_);
+    ASSERT_EQ(new_node.deserialize_from(*out_), common::E_OK);
+    ASSERT_EQ(new_node.end_offset_, 456);
+    ASSERT_EQ(new_node.node_type_, LEAF_MEASUREMENT);
 
-  ASSERT_EQ(new_node.peek()->get_name(), entry->get_name());
-  ASSERT_EQ(new_node.peek()->get_offset(), entry->get_offset());
+    ASSERT_EQ(new_node.peek()->get_name(), entry->get_name());
+    ASSERT_EQ(new_node.peek()->get_offset(), entry->get_offset());
 }
 
 TEST_F(MetaIndexNodeTest, DeviceSerializeDeserialize) {
-  auto device_id = std::make_shared<StringArrayDeviceID>("device_1");
-  auto entry = std::make_shared<DeviceMetaIndexEntry>(device_id, 0);
-  node_.push_entry(entry);
-  node_.end_offset_ = 456;
-  node_.node_type_ = LEAF_DEVICE;
-
-  ASSERT_EQ(node_.serialize_to(*out_), common::E_OK);
-
-  MetaIndexNode new_node(&pa_);
-  ASSERT_EQ(new_node.device_deserialize_from(*out_), common::E_OK);
-  ASSERT_EQ(new_node.end_offset_, 456);
-  ASSERT_EQ(new_node.node_type_, LEAF_DEVICE);
-
-  
ASSERT_TRUE(new_node.peek()->get_device_id()->operator==(*entry->get_device_id()));
-  ASSERT_EQ(new_node.peek()->get_offset(), entry->get_offset());
+    auto device_id = std::make_shared<StringArrayDeviceID>("device_1");
+    auto entry = std::make_shared<DeviceMetaIndexEntry>(device_id, 0);
+    node_.push_entry(entry);
+    node_.end_offset_ = 456;
+    node_.node_type_ = LEAF_DEVICE;
+
+    ASSERT_EQ(node_.serialize_to(*out_), common::E_OK);
+
+    MetaIndexNode new_node(&pa_);
+    ASSERT_EQ(new_node.device_deserialize_from(*out_), common::E_OK);
+    ASSERT_EQ(new_node.end_offset_, 456);
+    ASSERT_EQ(new_node.node_type_, LEAF_DEVICE);
+
+    ASSERT_TRUE(
+        new_node.peek()->get_device_id()->operator==(*entry->get_device_id()));
+    ASSERT_EQ(new_node.peek()->get_offset(), entry->get_offset());
 }
 
 class MetaIndexNodeSearchTest : public ::testing::Test {
-protected:
-  common::PageArena arena_;
-  MetaIndexNode node_;
-  std::shared_ptr<MeasurementMetaIndexEntry> entry1_ = std::make_shared<
-      MeasurementMetaIndexEntry>();
-  std::shared_ptr<MeasurementMetaIndexEntry> entry2_ = std::make_shared<
-      MeasurementMetaIndexEntry>();
-  std::shared_ptr<MeasurementMetaIndexEntry> entry3_ = std::make_shared<
-      MeasurementMetaIndexEntry>();
-
-  MetaIndexNodeSearchTest()
-      : node_(&arena_) {
-    entry1_->init("apple", 10, arena_);
-    entry2_->init("banana", 20, arena_);
-    entry3_->init("cherry", 30, arena_);
-    node_.children_.push_back(entry1_);
-    node_.children_.push_back(entry2_);
-    node_.children_.push_back(entry3_);
-    node_.end_offset_ = 40;
-    node_.pa_ = &arena_;
-  }
+   protected:
+    common::PageArena arena_;
+    MetaIndexNode node_;
+    std::shared_ptr<MeasurementMetaIndexEntry> entry1_ =
+        std::make_shared<MeasurementMetaIndexEntry>();
+    std::shared_ptr<MeasurementMetaIndexEntry> entry2_ =
+        std::make_shared<MeasurementMetaIndexEntry>();
+    std::shared_ptr<MeasurementMetaIndexEntry> entry3_ =
+        std::make_shared<MeasurementMetaIndexEntry>();
+
+    MetaIndexNodeSearchTest() : node_(&arena_) {
+        entry1_->init("apple", 10, arena_);
+        entry2_->init("banana", 20, arena_);
+        entry3_->init("cherry", 30, arena_);
+        node_.children_.push_back(entry1_);
+        node_.children_.push_back(entry2_);
+        node_.children_.push_back(entry3_);
+        node_.end_offset_ = 40;
+        node_.pa_ = &arena_;
+    }
 };
 
 TEST_F(MetaIndexNodeSearchTest, ExactSearchFound) {
-  const std::string ret_entry_name("");
-  std::shared_ptr<IMetaIndexEntry> ret_entry = std::make_shared<
-      MeasurementMetaIndexEntry>(ret_entry_name, 0, arena_);
-  int64_t ret_offset = 0;
-  int result = node_.binary_search_children(
-      std::make_shared<StringComparable>("banana"),
-      true, ret_entry, ret_offset);
-  ASSERT_EQ(result, 0);
-  ASSERT_EQ(ret_offset, 30);
+    const std::string ret_entry_name("");
+    std::shared_ptr<IMetaIndexEntry> ret_entry =
+        std::make_shared<MeasurementMetaIndexEntry>(ret_entry_name, 0, arena_);
+    int64_t ret_offset = 0;
+    int result = node_.binary_search_children(
+        std::make_shared<StringComparable>("banana"), true, ret_entry,
+        ret_offset);
+    ASSERT_EQ(result, 0);
+    ASSERT_EQ(ret_offset, 30);
 }
 
 TEST_F(MetaIndexNodeSearchTest, ExactSearchNotFound) {
-  const std::string ret_entry_name("");
-  std::shared_ptr<IMetaIndexEntry> ret_entry = std::make_shared<
-      MeasurementMetaIndexEntry>(ret_entry_name, 0, arena_);
-  int64_t ret_offset = 0;
-  char search_name[] = "grape";
-  int result = node_.binary_search_children(
-      std::make_shared<StringComparable>(search_name),
-      true, ret_entry, ret_offset);
-  ASSERT_EQ(result, common::E_NOT_EXIST);
+    const std::string ret_entry_name("");
+    std::shared_ptr<IMetaIndexEntry> ret_entry =
+        std::make_shared<MeasurementMetaIndexEntry>(ret_entry_name, 0, arena_);
+    int64_t ret_offset = 0;
+    char search_name[] = "grape";
+    int result = node_.binary_search_children(
+        std::make_shared<StringComparable>(search_name), true, ret_entry,
+        ret_offset);
+    ASSERT_EQ(result, common::E_NOT_EXIST);
 }
 
 TEST_F(MetaIndexNodeSearchTest, NonExactSearchFound) {
-  const std::string ret_entry_name("");
-  std::shared_ptr<IMetaIndexEntry> ret_entry = std::make_shared<
-      MeasurementMetaIndexEntry>(ret_entry_name, 0, arena_);
-  int64_t ret_offset = 0;
-  char search_name[] = "blueberry";
-  int result = node_.binary_search_children(
-      std::make_shared<StringComparable>(search_name),
-      false, ret_entry, ret_offset);
-  ASSERT_EQ(result, 0);
-  ASSERT_EQ(ret_offset, 30);
+    const std::string ret_entry_name("");
+    std::shared_ptr<IMetaIndexEntry> ret_entry =
+        std::make_shared<MeasurementMetaIndexEntry>(ret_entry_name, 0, arena_);
+    int64_t ret_offset = 0;
+    char search_name[] = "blueberry";
+    int result = node_.binary_search_children(
+        std::make_shared<StringComparable>(search_name), false, ret_entry,
+        ret_offset);
+    ASSERT_EQ(result, 0);
+    ASSERT_EQ(ret_offset, 30);
 }
 
 TEST_F(MetaIndexNodeSearchTest, NonExactSearchNotFound) {
-  const std::string ret_entry_name("");
-  std::shared_ptr<IMetaIndexEntry> ret_entry = std::make_shared<
-      MeasurementMetaIndexEntry>(ret_entry_name, 0, arena_);
-  int64_t ret_offset = 0;
-  char search_name[] = "aardvark";
-  int result = node_.binary_search_children(
-      std::make_shared<StringComparable>(search_name),
-      false, ret_entry, ret_offset);
-  ASSERT_EQ(result, common::E_NOT_EXIST);
+    const std::string ret_entry_name("");
+    std::shared_ptr<IMetaIndexEntry> ret_entry =
+        std::make_shared<MeasurementMetaIndexEntry>(ret_entry_name, 0, arena_);
+    int64_t ret_offset = 0;
+    char search_name[] = "aardvark";
+    int result = node_.binary_search_children(
+        std::make_shared<StringComparable>(search_name), false, ret_entry,
+        ret_offset);
+    ASSERT_EQ(result, common::E_NOT_EXIST);
 }
 
 class TsFileMetaTest : public ::testing::Test {
-protected:
-  common::PageArena pa_;
-  common::ByteStream *out_;
-  TsFileMeta meta_;
-
-  void SetUp() override {
-    out_ = new common::ByteStream(1024, common::MOD_DEFAULT);
-  }
-
-  void TearDown() override {
-    delete out_;
-  }
+   protected:
+    common::PageArena pa_;
+    common::ByteStream *out_;
+    TsFileMeta meta_;
+
+    void SetUp() override {
+        out_ = new common::ByteStream(1024, common::MOD_DEFAULT);
+    }
+
+    void TearDown() override { delete out_; }
 };
 
 TEST_F(TsFileMetaTest, SerializeDeserialize) {
-  std::shared_ptr<IDeviceID> device_id = 
std::make_shared<StringArrayDeviceID>("device");
-  auto entry = std::make_shared<DeviceMetaIndexEntry>(device_id, 123);
-  auto index_node = std::make_shared<MetaIndexNode>(&pa_);
-  index_node->end_offset_ = 123456789;
-  index_node->children_.emplace_back(entry);
-  index_node->children_.emplace_back(entry);
-  std::string table_name = "table_name";
-  meta_.table_metadata_index_node_map_.insert(std::make_pair(table_name, 
index_node));
-
-  std::vector<MeasurementSchema* > column_schemas;
-  std::vector<common::ColumnCategory> column_categories;
-  column_categories.emplace_back(common::ColumnCategory::FIELD);
-  column_schemas.emplace_back(new MeasurementSchema());
-
-  auto table_schema = std::make_shared<TableSchema>(table_name, 
column_schemas, column_categories);
-
-  meta_.table_schemas_.insert(std::make_pair(table_name, table_schema));
-  meta_.tsfile_properties_.insert(std::make_pair("key", "value"));
-
-  meta_.meta_offset_ = 456;
-  void *buf = pa_.alloc(sizeof(BloomFilter));
-  meta_.bloom_filter_ = new(buf) BloomFilter();
-  meta_.bloom_filter_->init(0.1, 100);
-
-  meta_.serialize_to(*out_);
-
-  TsFileMeta new_meta(&pa_);
-  new_meta.deserialize_from(*out_);
-  ASSERT_EQ(new_meta.meta_offset_, 456);
-  ASSERT_EQ(new_meta.table_metadata_index_node_map_.size(), 1);
-  
ASSERT_EQ(new_meta.table_metadata_index_node_map_[table_name]->children_.size(),
 2);
-  ASSERT_EQ(new_meta.table_schemas_.size(), 1);
-  
ASSERT_EQ(new_meta.table_schemas_[table_name]->get_column_categories().size(), 
1);
+    std::shared_ptr<IDeviceID> device_id =
+        std::make_shared<StringArrayDeviceID>("device");
+    auto entry = std::make_shared<DeviceMetaIndexEntry>(device_id, 123);
+    auto index_node = std::make_shared<MetaIndexNode>(&pa_);
+    index_node->end_offset_ = 123456789;
+    index_node->children_.emplace_back(entry);
+    index_node->children_.emplace_back(entry);
+    std::string table_name = "table_name";
+    meta_.table_metadata_index_node_map_.insert(
+        std::make_pair(table_name, index_node));
+
+    std::vector<MeasurementSchema *> column_schemas;
+    std::vector<common::ColumnCategory> column_categories;
+    column_categories.emplace_back(common::ColumnCategory::FIELD);
+    column_schemas.emplace_back(new MeasurementSchema());
+
+    auto table_schema = std::make_shared<TableSchema>(
+        table_name, column_schemas, column_categories);
+
+    meta_.table_schemas_.insert(std::make_pair(table_name, table_schema));
+    meta_.tsfile_properties_.insert(
+        std::make_pair("key", new std::string("value")));
+    meta_.tsfile_properties_.insert(std::make_pair("null_key", nullptr));
+
+    meta_.meta_offset_ = 456;
+    void *buf = pa_.alloc(sizeof(BloomFilter));
+    meta_.bloom_filter_ = new (buf) BloomFilter();
+    meta_.bloom_filter_->init(0.1, 100);
+
+    meta_.serialize_to(*out_);
+
+    TsFileMeta new_meta(&pa_);
+    new_meta.deserialize_from(*out_);
+
+    ASSERT_EQ(new_meta.meta_offset_, 456);
+    ASSERT_EQ(new_meta.table_metadata_index_node_map_.size(), 1);
+    ASSERT_EQ(
+        new_meta.table_metadata_index_node_map_[table_name]->children_.size(),
+        2);
+    ASSERT_EQ(new_meta.table_schemas_.size(), 1);
+    ASSERT_EQ(
+        new_meta.table_schemas_[table_name]->get_column_categories().size(), 
1);
+    ASSERT_EQ(*new_meta.tsfile_properties_["key"], std::string("value"));
+    ASSERT_EQ(new_meta.tsfile_properties_["null_key"], nullptr);
 }
-} // namespace storage
+}  // namespace storage


Reply via email to