From 7ea4c339f6a17d620961c0123c4b17bac338c0ca Mon Sep 17 00:00:00 2001 From: "lisizhuo.lsz" Date: Tue, 4 Aug 2026 16:56:10 +0800 Subject: [PATCH 1/3] feat: update commit message to version 12 --- src/paimon/core/index/global_index_meta.cpp | 39 +++++- src/paimon/core/index/global_index_meta.h | 8 +- .../index/index_file_meta_serializer_test.cpp | 31 +++++ .../index/index_file_meta_v4_deserializer.h | 125 ++++++++++++++++++ .../table/sink/commit_message_serializer.cpp | 8 +- .../core/table/sink/commit_message_test.cpp | 2 - 6 files changed, 204 insertions(+), 9 deletions(-) create mode 100644 src/paimon/core/index/index_file_meta_v4_deserializer.h diff --git a/src/paimon/core/index/global_index_meta.cpp b/src/paimon/core/index/global_index_meta.cpp index ffe05e301..ab18280b8 100644 --- a/src/paimon/core/index/global_index_meta.cpp +++ b/src/paimon/core/index/global_index_meta.cpp @@ -33,11 +33,20 @@ GlobalIndexMeta::GlobalIndexMeta(int64_t _row_range_start, int64_t _row_range_en int32_t _index_field_id, const std::optional>& _extra_field_ids, const std::shared_ptr& _index_meta) + : GlobalIndexMeta(_row_range_start, _row_range_end, _index_field_id, _extra_field_ids, + _index_meta, nullptr) {} + +GlobalIndexMeta::GlobalIndexMeta(int64_t _row_range_start, int64_t _row_range_end, + int32_t _index_field_id, + const std::optional>& _extra_field_ids, + const std::shared_ptr& _index_meta, + const std::shared_ptr& _source_meta) : row_range_start(_row_range_start), row_range_end(_row_range_end), index_field_id(_index_field_id), extra_field_ids(_extra_field_ids), - index_meta(_index_meta) {} + index_meta(_index_meta), + source_meta(_source_meta) {} bool GlobalIndexMeta::operator==(const GlobalIndexMeta& other) const { if (this == &other) { @@ -49,6 +58,12 @@ bool GlobalIndexMeta::operator==(const GlobalIndexMeta& other) const { if (index_meta && other.index_meta && !(*index_meta == *other.index_meta)) { return false; } + if ((source_meta && !other.source_meta) || (!source_meta && other.source_meta)) { + return false; + } + if (source_meta && other.source_meta && !(*source_meta == *other.source_meta)) { + return false; + } return row_range_start == other.row_range_start && row_range_end == other.row_range_end && index_field_id == other.index_field_id && extra_field_ids == other.extra_field_ids; } @@ -61,14 +76,17 @@ std::string GlobalIndexMeta::ToString() const { std::string index_meta_str = index_meta == nullptr ? "null" : std::string(index_meta->data(), index_meta->size()); + std::string source_meta_str = + source_meta == nullptr ? "null" : std::string(source_meta->data(), source_meta->size()); return fmt::format( "{{row_range_start={}, row_range_end={}, index_field_id={}, extra_field_ids={}, " - "index_meta={}}}", - row_range_start, row_range_end, index_field_id, extra_field_ids_str, index_meta_str); + "index_meta={}, source_meta={}}}", + row_range_start, row_range_end, index_field_id, extra_field_ids_str, index_meta_str, + source_meta_str); } BinaryRow GlobalIndexMeta::ToRow(MemoryPool* pool) const { - BinaryRow row(5); + BinaryRow row(6); BinaryRowWriter writer(&row, 32 * 1024, pool); writer.WriteLong(0, row_range_start); writer.WriteLong(1, row_range_end); @@ -83,6 +101,11 @@ BinaryRow GlobalIndexMeta::ToRow(MemoryPool* pool) const { } else { writer.WriteBinary(4, *index_meta); } + if (source_meta == nullptr) { + writer.SetNullAt(5); + } else { + writer.WriteBinary(5, *source_meta); + } writer.Complete(); return row; } @@ -104,8 +127,13 @@ Result GlobalIndexMeta::FromRow(const InternalRow& row) { index_meta = row.GetBinary(4); assert(index_meta); } + std::shared_ptr source_meta; + if (!row.IsNullAt(5)) { + source_meta = row.GetBinary(5); + assert(source_meta); + } return GlobalIndexMeta(row_range_start, row_range_end, index_field_id, extra_field_ids, - index_meta); + index_meta, source_meta); } const std::shared_ptr& GlobalIndexMeta::DataType() { @@ -117,6 +145,7 @@ const std::shared_ptr& GlobalIndexMeta::DataType() { arrow::list(arrow::field("item", arrow::int32(), /*nullable=*/false)), /*nullable=*/true), arrow::field("_INDEX_META", arrow::binary(), /*nullable=*/true), + arrow::field("_SOURCE_META", arrow::binary(), /*nullable=*/true), }); return schema; } diff --git a/src/paimon/core/index/global_index_meta.h b/src/paimon/core/index/global_index_meta.h index a11cb82a9..215993692 100644 --- a/src/paimon/core/index/global_index_meta.h +++ b/src/paimon/core/index/global_index_meta.h @@ -31,12 +31,17 @@ namespace paimon { /// Schema for global index. struct GlobalIndexMeta { - static constexpr int32_t NUM_FIELDS = 5; + static constexpr int32_t NUM_FIELDS = 6; GlobalIndexMeta(int64_t _row_range_start, int64_t _row_range_end, int32_t _index_field_id, const std::optional>& _extra_field_ids, const std::shared_ptr& _index_meta); + GlobalIndexMeta(int64_t _row_range_start, int64_t _row_range_end, int32_t _index_field_id, + const std::optional>& _extra_field_ids, + const std::shared_ptr& _index_meta, + const std::shared_ptr& _source_meta); + bool operator==(const GlobalIndexMeta& other) const; std::string ToString() const; @@ -52,6 +57,7 @@ struct GlobalIndexMeta { int32_t index_field_id; std::optional> extra_field_ids; std::shared_ptr index_meta; + std::shared_ptr source_meta; }; } // namespace paimon diff --git a/src/paimon/core/index/index_file_meta_serializer_test.cpp b/src/paimon/core/index/index_file_meta_serializer_test.cpp index 4db2ce3de..a6108236e 100644 --- a/src/paimon/core/index/index_file_meta_serializer_test.cpp +++ b/src/paimon/core/index/index_file_meta_serializer_test.cpp @@ -127,6 +127,37 @@ TEST_F(IndexFileMetaSerializerTest, TestToFromRowWithGlobalIndex) { } } +TEST_F(IndexFileMetaSerializerTest, TestToFromRowWithGlobalIndexWithSourceMeta) { + auto index_meta_bytes = std::make_shared("apple", memory_pool_.get()); + auto source_meta_bytes = std::make_shared("banana", memory_pool_.get()); + IndexFileMetaSerializer serializer(memory_pool_); + GlobalIndexMeta global_index_meta( + /*row_range_start=*/10, /*row_range_end=*/50, + /*index_field_id=*/5, /*extra_field_ids=*/std::optional>({0, 1}), + index_meta_bytes, source_meta_bytes); + { + auto expected = std::make_shared( + "bitmap", "bitmap_index_file_0", /*file_size=*/10, + /*row_count=*/41, /*dv_ranges=*/std::nullopt, + /*external_path=*/std::nullopt, global_index_meta); + ASSERT_OK_AND_ASSIGN(BinaryRow row, serializer.ToRow(expected)); + ASSERT_OK_AND_ASSIGN(std::shared_ptr actual, serializer.FromRow(row)); + ASSERT_EQ(expected->ToString(), actual->ToString()); + ASSERT_EQ(*expected, *actual); + } + { + // test external path + auto expected = std::make_shared( + "bitmap", "bitmap_index_file_0", /*file_size=*/10, + /*row_count=*/41, /*dv_ranges=*/std::nullopt, + /*external_path=*/"FILE:/tmp/external/bitmap_index_file_0", global_index_meta); + ASSERT_OK_AND_ASSIGN(BinaryRow row, serializer.ToRow(expected)); + ASSERT_OK_AND_ASSIGN(std::shared_ptr actual, serializer.FromRow(row)); + ASSERT_EQ(expected->ToString(), actual->ToString()); + ASSERT_EQ(*expected, *actual); + } +} + TEST_F(IndexFileMetaSerializerTest, TestSerialize) { IndexFileMetaSerializer serializer(memory_pool_); auto expected = GetRandomDeletionVectorIndexFile(); diff --git a/src/paimon/core/index/index_file_meta_v4_deserializer.h b/src/paimon/core/index/index_file_meta_v4_deserializer.h new file mode 100644 index 000000000..c7207f64f --- /dev/null +++ b/src/paimon/core/index/index_file_meta_v4_deserializer.h @@ -0,0 +1,125 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "paimon/common/data/internal_array.h" +#include "paimon/common/data/internal_row.h" +#include "paimon/common/utils/linked_hash_map.h" +#include "paimon/core/index/deletion_vector_meta.h" +#include "paimon/core/index/index_file_meta.h" +#include "paimon/core/index/index_file_meta_v2_deserializer.h" +#include "paimon/core/utils/object_serializer.h" +#include "paimon/result.h" + +namespace paimon { +class MemoryPool; + +class IndexFileMetaV4Deserializer : public ObjectSerializer> { + public: + static const std::shared_ptr& GlobalIndexMetaDataType() { + static std::shared_ptr schema = arrow::struct_({ + arrow::field("_ROW_RANGE_START", arrow::int64(), /*nullable=*/false), + arrow::field("_ROW_RANGE_END", arrow::int64(), /*nullable=*/false), + arrow::field("_INDEX_FIELD_ID", arrow::int32(), /*nullable=*/false), + arrow::field("_EXTRA_FIELD_IDS", + arrow::list(arrow::field("item", arrow::int32(), /*nullable=*/false)), + /*nullable=*/true), + arrow::field("_INDEX_META", arrow::binary(), /*nullable=*/true), + }); + return schema; + } + + static const std::shared_ptr& DataType() { + static std::shared_ptr schema = arrow::struct_({ + arrow::field("_INDEX_TYPE", arrow::utf8(), false), + arrow::field("_FILE_NAME", arrow::utf8(), false), + arrow::field("_FILE_SIZE", arrow::int64(), false), + arrow::field("_ROW_COUNT", arrow::int64(), false), + arrow::field("_DELETIONS_VECTORS_RANGES", + arrow::list(arrow::field("item", DeletionVectorMeta::DataType(), true)), + true), + arrow::field("_EXTERNAL_PATH", arrow::utf8(), true), + arrow::field("_GLOBAL_INDEX", GlobalIndexMetaDataType(), true), + }); + return schema; + } + + explicit IndexFileMetaV4Deserializer(const std::shared_ptr& pool) + : ObjectSerializer>(DataType(), pool) {} + + Result ToRow(const std::shared_ptr& meta) const override { + assert(false); + return Status::Invalid("IndexFileMetaV4Deserializer to row is not valid"); + } + + Result> FromRow(const InternalRow& row) const override { + auto file_type = row.GetString(0); + auto file_name = row.GetString(1); + auto file_size = row.GetLong(2); + auto row_count = row.GetLong(3); + std::optional> dv_ranges; + if (!row.IsNullAt(4)) { + dv_ranges = IndexFileMetaV2Deserializer::RowArrayDataToDvRanges(row.GetArray(4).get()); + } + std::optional external_path; + if (!row.IsNullAt(5)) { + external_path = row.GetString(5).ToString(); + } + std::optional global_index_meta; + if (!row.IsNullAt(6)) { + std::shared_ptr global_index_meta_row = + row.GetRow(6, GlobalIndexMetaDataType()->num_fields()); + assert(global_index_meta_row); + int64_t row_range_start = global_index_meta_row->GetLong(0); + int64_t row_range_end = global_index_meta_row->GetLong(1); + int32_t index_field_id = global_index_meta_row->GetInt(2); + std::optional> extra_field_ids; + if (!global_index_meta_row->IsNullAt(3)) { + std::shared_ptr array = global_index_meta_row->GetArray(3); + if (!array) { + return Status::Invalid( + "GlobalIndexMeta FromRow failed with nullptr extra field ids"); + } + PAIMON_ASSIGN_OR_RAISE(extra_field_ids, array->ToIntArray()); + } + std::shared_ptr index_meta; + if (!global_index_meta_row->IsNullAt(4)) { + index_meta = global_index_meta_row->GetBinary(4); + assert(index_meta); + } + global_index_meta = GlobalIndexMeta(row_range_start, row_range_end, index_field_id, + extra_field_ids, index_meta); + } + return std::make_shared(file_type.ToString(), file_name.ToString(), + file_size, row_count, dv_ranges, external_path, + global_index_meta); + } +}; + +} // namespace paimon diff --git a/src/paimon/core/table/sink/commit_message_serializer.cpp b/src/paimon/core/table/sink/commit_message_serializer.cpp index b2533a7f5..1b0645f4e 100644 --- a/src/paimon/core/table/sink/commit_message_serializer.cpp +++ b/src/paimon/core/table/sink/commit_message_serializer.cpp @@ -31,6 +31,7 @@ #include "paimon/core/index/index_file_meta_v1_deserializer.h" #include "paimon/core/index/index_file_meta_v2_deserializer.h" #include "paimon/core/index/index_file_meta_v3_deserializer.h" +#include "paimon/core/index/index_file_meta_v4_deserializer.h" #include "paimon/core/io/compact_increment.h" #include "paimon/core/io/data_file_meta_09_serializer.h" #include "paimon/core/io/data_file_meta_10_serializer.h" @@ -45,7 +46,7 @@ namespace paimon { class MemoryPool; -const int32_t CommitMessageSerializer::CURRENT_VERSION = 11; +const int32_t CommitMessageSerializer::CURRENT_VERSION = 12; CommitMessageSerializer::CommitMessageSerializer(const std::shared_ptr& pool) : memory_pool_(pool), @@ -203,6 +204,11 @@ Result> CommitMessageSerializer::Deserialize(int3 DataInputStream* in) { if (version == CURRENT_VERSION) { return Deserialize(version, data_file_serializer_.get(), index_entry_serializer_.get(), in); + } else if (version == 11) { + auto index_entry_v4_deserializer = + std::make_unique(memory_pool_); + return Deserialize(version, data_file_serializer_.get(), index_entry_v4_deserializer.get(), + in); } else if (version == 9 || version == 10) { auto index_entry_v3_deserializer = std::make_unique(memory_pool_); diff --git a/src/paimon/core/table/sink/commit_message_test.cpp b/src/paimon/core/table/sink/commit_message_test.cpp index 6c00bb949..eaeb3d501 100644 --- a/src/paimon/core/table/sink/commit_message_test.cpp +++ b/src/paimon/core/table/sink/commit_message_test.cpp @@ -106,8 +106,6 @@ TEST(CommitMessageTest, TestCompatibleWithVersion11) { // check result ASSERT_EQ(res_msgs, expected_msgs); - ASSERT_OK_AND_ASSIGN(std::string serialized_bytes, CommitMessage::SerializeList(ret, pool)); - ASSERT_EQ(serialized_bytes, std::string(reinterpret_cast(buffer.data()), buffer.size())); } TEST(CommitMessageTest, TestCompatibleWithVersion10) { From 48a070e2d9e99fcc041bbf43b9c2432e40677a17 Mon Sep 17 00:00:00 2001 From: "lisizhuo.lsz" Date: Wed, 5 Aug 2026 11:56:40 +0800 Subject: [PATCH 2/3] add compatibility test --- .../core/table/sink/commit_message_test.cpp | 33 ++++++++++++++++++ .../pk_btree_source_meta/README | 32 +++++++++++++++++ ...022e32ce-1d75-4b9a-8496-a3311c44bad0-0.orc | Bin 0 -> 694 bytes ...293d6705-bd19-4986-9aa0-3a24443e7e8e-0.orc | Bin 0 -> 722 bytes ...b4949ff6-78f4-4e58-86ad-33eb3e5e6749-0.orc | Bin 0 -> 694 bytes ...b5896b79-1c4d-4359-920a-ce719ea303af-0.orc | Bin 0 -> 713 bytes ...c2e3ff2f-a3e1-48a1-8bb1-f868477c796a-0.orc | Bin 0 -> 722 bytes .../commit_messages/commit_messages-01 | Bin 0 -> 1633 bytes ...dex-05388eac-7c9d-48cf-9053-f68b800ebe9e-0 | Bin 0 -> 112 bytes ...dex-5d1ef2e5-c136-4059-8380-fe5d60344f83-0 | Bin 0 -> 112 bytes ...dex-759d0483-a0e7-417b-8c3d-288f36679770-0 | Bin 0 -> 96 bytes ...est-0216d085-645d-486b-9ebb-e48df26b8aa7-0 | Bin 0 -> 1970 bytes ...est-5ba1f8c6-fcde-45f8-b59b-a948ef3013be-0 | Bin 0 -> 1970 bytes ...est-d347fbd7-d7cc-4e5e-9f4a-efa8d0ce8651-0 | Bin 0 -> 1961 bytes ...est-180aa8f5-0932-462f-8f02-a1000b585552-0 | Bin 0 -> 3083 bytes ...est-e108640e-b3a6-499d-9821-fe36afde58d6-0 | Bin 0 -> 2815 bytes ...est-e108640e-b3a6-499d-9821-fe36afde58d6-1 | Bin 0 -> 3078 bytes ...est-fbd7c824-c952-4f2b-ad6c-0227a823a745-0 | Bin 0 -> 2833 bytes ...est-fbd7c824-c952-4f2b-ad6c-0227a823a745-1 | Bin 0 -> 3184 bytes ...ist-3fe1dd64-b6ac-46dc-b968-1740e05383a2-0 | Bin 0 -> 392 bytes ...ist-3fe1dd64-b6ac-46dc-b968-1740e05383a2-1 | Bin 0 -> 1533 bytes ...ist-3fe1dd64-b6ac-46dc-b968-1740e05383a2-2 | Bin 0 -> 1533 bytes ...ist-3fe1dd64-b6ac-46dc-b968-1740e05383a2-3 | Bin 0 -> 1543 bytes ...ist-6678a969-de46-4cb3-b744-36a17ac35371-0 | Bin 0 -> 1603 bytes ...ist-6678a969-de46-4cb3-b744-36a17ac35371-1 | Bin 0 -> 1529 bytes ...ist-6678a969-de46-4cb3-b744-36a17ac35371-2 | Bin 0 -> 1713 bytes ...ist-6678a969-de46-4cb3-b744-36a17ac35371-3 | Bin 0 -> 1548 bytes ...ist-8e8a1e2e-9fbe-4fb9-920b-82edaed23f41-0 | Bin 0 -> 1723 bytes ...ist-8e8a1e2e-9fbe-4fb9-920b-82edaed23f41-1 | Bin 0 -> 1554 bytes .../pk_btree_source_meta/schema/schema-0 | 30 ++++++++++++++++ .../pk_btree_source_meta/snapshot/EARLIEST | 1 + .../pk_btree_source_meta/snapshot/LATEST | 1 + .../pk_btree_source_meta/snapshot/snapshot-1 | 17 +++++++++ .../pk_btree_source_meta/snapshot/snapshot-2 | 18 ++++++++++ .../pk_btree_source_meta/snapshot/snapshot-3 | 18 ++++++++++ .../pk_btree_source_meta/snapshot/snapshot-4 | 18 ++++++++++ .../pk_btree_source_meta/snapshot/snapshot-5 | 18 ++++++++++ 37 files changed, 186 insertions(+) create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/README create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/bucket-0/data-022e32ce-1d75-4b9a-8496-a3311c44bad0-0.orc create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/bucket-0/data-293d6705-bd19-4986-9aa0-3a24443e7e8e-0.orc create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/bucket-0/data-b4949ff6-78f4-4e58-86ad-33eb3e5e6749-0.orc create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/bucket-0/data-b5896b79-1c4d-4359-920a-ce719ea303af-0.orc create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/bucket-0/data-c2e3ff2f-a3e1-48a1-8bb1-f868477c796a-0.orc create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/commit_messages/commit_messages-01 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/index/index-05388eac-7c9d-48cf-9053-f68b800ebe9e-0 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/index/index-5d1ef2e5-c136-4059-8380-fe5d60344f83-0 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/index/index-759d0483-a0e7-417b-8c3d-288f36679770-0 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/index-manifest-0216d085-645d-486b-9ebb-e48df26b8aa7-0 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/index-manifest-5ba1f8c6-fcde-45f8-b59b-a948ef3013be-0 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/index-manifest-d347fbd7-d7cc-4e5e-9f4a-efa8d0ce8651-0 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-180aa8f5-0932-462f-8f02-a1000b585552-0 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-e108640e-b3a6-499d-9821-fe36afde58d6-0 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-e108640e-b3a6-499d-9821-fe36afde58d6-1 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-fbd7c824-c952-4f2b-ad6c-0227a823a745-0 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-fbd7c824-c952-4f2b-ad6c-0227a823a745-1 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-list-3fe1dd64-b6ac-46dc-b968-1740e05383a2-0 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-list-3fe1dd64-b6ac-46dc-b968-1740e05383a2-1 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-list-3fe1dd64-b6ac-46dc-b968-1740e05383a2-2 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-list-3fe1dd64-b6ac-46dc-b968-1740e05383a2-3 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-list-6678a969-de46-4cb3-b744-36a17ac35371-0 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-list-6678a969-de46-4cb3-b744-36a17ac35371-1 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-list-6678a969-de46-4cb3-b744-36a17ac35371-2 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-list-6678a969-de46-4cb3-b744-36a17ac35371-3 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-list-8e8a1e2e-9fbe-4fb9-920b-82edaed23f41-0 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-list-8e8a1e2e-9fbe-4fb9-920b-82edaed23f41-1 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/schema/schema-0 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/snapshot/EARLIEST create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/snapshot/LATEST create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/snapshot/snapshot-1 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/snapshot/snapshot-2 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/snapshot/snapshot-3 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/snapshot/snapshot-4 create mode 100644 test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/snapshot/snapshot-5 diff --git a/src/paimon/core/table/sink/commit_message_test.cpp b/src/paimon/core/table/sink/commit_message_test.cpp index eaeb3d501..935e45d22 100644 --- a/src/paimon/core/table/sink/commit_message_test.cpp +++ b/src/paimon/core/table/sink/commit_message_test.cpp @@ -65,6 +65,39 @@ TEST(CommitMessageTest, TestCurrentVersion) { ASSERT_EQ(CommitMessageSerializer::CURRENT_VERSION, CommitMessage::CurrentVersion()); } +TEST(CommitMessageTest, TestCompatibleWithVersion12) { + // index file meta: add global index meta source meta + int32_t version = 12; + std::string data_path = paimon::test::GetDataDir() + + "orc/pk_btree_source_meta.db/pk_btree_source_meta/" + "commit_messages/commit_messages-01"; + auto file_system = std::make_shared(); + auto buffer_length = file_system->GetFileStatus(data_path).value()->GetLen(); + + std::vector buffer(buffer_length, 0); + ASSERT_OK_AND_ASSIGN(auto in_stream, file_system->Open(data_path)); + ASSERT_OK(in_stream->Read(reinterpret_cast(buffer.data()), buffer.size())); + ASSERT_OK(in_stream->Close()); + + auto pool = GetDefaultPool(); + ASSERT_OK_AND_ASSIGN(std::shared_ptr ret, + CommitMessage::Deserialize(version, reinterpret_cast(buffer.data()), + buffer.size(), pool)); + auto res_msg = std::dynamic_pointer_cast(ret); + ASSERT_NE(res_msg, nullptr); + + // check source_meta exists + const auto& new_indexes = res_msg->GetCompactIncrement().NewIndexFiles(); + ASSERT_EQ(new_indexes.size(), 1); + const auto& global_index_meta = new_indexes[0]->GetGlobalIndexMeta(); + ASSERT_TRUE(global_index_meta.has_value()); + ASSERT_NE(global_index_meta->source_meta, nullptr); + + // check result + ASSERT_OK_AND_ASSIGN(std::string serialized_bytes, CommitMessage::Serialize(ret, pool)); + ASSERT_EQ(serialized_bytes, std::string(reinterpret_cast(buffer.data()), buffer.size())); +} + TEST(CommitMessageTest, TestCompatibleWithVersion11) { // index file meta: add global index meta int32_t version = 11; diff --git a/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/README b/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/README new file mode 100644 index 000000000..692b105e9 --- /dev/null +++ b/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/README @@ -0,0 +1,32 @@ +id:int score:int tag:string +primary key: id +no partition key +no bucket key +bucket count: 1 + +file format: orc +manifest format: orc +deletion-vectors.enabled: true +primary-key btree index: score +compaction.force-rewrite-all-files: true + +Msgs: +snapshot-1: APPEND +Add: 1, 10, first +Add: 2, 20, second + +snapshot-2: COMPACT +Build the primary-key btree index for score. + +snapshot-3: APPEND +Add: 3, 30, third +Add: 4, 40, fourth + +snapshot-4: COMPACT +Rebuild the primary-key btree index for score. + +snapshot-5: COMPACT +Force a full compaction and rebuild the primary-key btree index for score. + +commit_messages-01: +Single CommitMessage serialized by Java CommitMessageSerializer version 12 for snapshot-5. \ No newline at end of file diff --git a/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/bucket-0/data-022e32ce-1d75-4b9a-8496-a3311c44bad0-0.orc b/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/bucket-0/data-022e32ce-1d75-4b9a-8496-a3311c44bad0-0.orc new file mode 100644 index 0000000000000000000000000000000000000000..767c7eee21c2cdd44809af2dfa98372c3de750b8 GIT binary patch literal 694 zcmeYdau#G@;9?VE;b012&;~MvxtJLk7=(B@n1t9km;_iP*szE*2rx-tQ_mp4Ai;n| zJuY)Z1T-XU0vKF@_9}3(0__FbEY88CB*?{@mRVF>BE(jlnw+1PA|V#Qz|O$n#;5`$ zofs8>3#%h?$sp81!ZCq%xdkR6ihFz|+CG zsi8)}c*3Dun^-nLEhw&KVsK&+5HCo*wZl!|{KBuV)+gPGmu3uAxRIyj&(*z`J5J6c zQEHU~vxV=1BZZkO4&38Z-hIw~pY0~|qFde})0_9{Pj-`HVF*@a=wa+j+hobczyx-C zLKeeTc7~*LX8H!XcMlv0U}l!!>FKbPZa$Zh^Y%*os;?oN+ak86AKABi{*AWXC0<*~ zrrnqjI{Vr?=~9Qt39ZcM+VYegnf&|}x+Om~Y3kmaGV3GLBqp<3COxL*?Gx0)jXp1# zc`x(e%bR~PFIEVZ@IeRFG#&*3en zCT*|?k~B)@F_pW-5MF;v;^DHap0+(xCWyJOlC)y?ety51$+bO$Gp_N+u5;p6|6D(G z)@`-;#+CPS;F|)8rNU}+&00kHY7$w-5m?cUS$_z;$Q$` zCMI46eVH3i^RM3MnmqFzlc9oshFk~ZPlq&x)~%_W`=AySZ)IYbUwB! zhF9^}8>vgo2ftcq-L%-hwC1q&>waBkj{6^{G1cGP&%bHQNxfW2=~RcvQm3ZCg^w*3 zG+b0Z@Nijj$*Z>oW_K5Pg=iMhJ$)5WFo0S8~W$|y^0GGtn8elUN2yIw7)xb3eg zi?53Qy&9&fdgsq-?kE1cCWUU$y=?S)k$vWyTWfp{Z#gw7?}jF?uiN~$; ztc=5ROho3)I{fcROCICl@5d85A58eOL7zANxVh7I`*z-gxqQ~sZ%D|cuDJBm OIGesOGy4ZQO8@}L+2BI} literal 0 HcmV?d00001 diff --git a/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/bucket-0/data-b4949ff6-78f4-4e58-86ad-33eb3e5e6749-0.orc b/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/bucket-0/data-b4949ff6-78f4-4e58-86ad-33eb3e5e6749-0.orc new file mode 100644 index 0000000000000000000000000000000000000000..767c7eee21c2cdd44809af2dfa98372c3de750b8 GIT binary patch literal 694 zcmeYdau#G@;9?VE;b012&;~MvxtJLk7=(B@n1t9km;_iP*szE*2rx-tQ_mp4Ai;n| zJuY)Z1T-XU0vKF@_9}3(0__FbEY88CB*?{@mRVF>BE(jlnw+1PA|V#Qz|O$n#;5`$ zofs8>3#%h?$sp81!ZCq%xdkR6ihFz|+CG zsi8)}c*3Dun^-nLEhw&KVsK&+5HCo*wZl!|{KBuV)+gPGmu3uAxRIyj&(*z`J5J6c zQEHU~vxV=1BZZkO4&38Z-hIw~pY0~|qFde})0_9{Pj-`HVF*@a=wa+j+hobczyx-C zLKeeTc7~*LX8H!XcMlv0U}l!!>FKbPZa$Zh^Y%*os;?oN+ak86AKABi{*AWXC0<*~ zrrnqjI{Vr?=~9Qt39ZcM+VYegnf&|}x+Om~Y3kmaGV3GLBqp<3COxL*?Gx0)jXp1# zc`x(e%bR~PFIEVZ@IeRFG#&*3en zCT*|?k~B)@F_pW-5MF;v;^DHap0+(xCWyJOlC)y?ety51$+bO$Gp_N+u5;p6|6D(G z)@`-;#+CPS;JA1k3eC9R+!hv|L7Jm=z^JD=x7JNlnEOCIlAZ+3Fq zw6Ojyn(bA}JPA!#JGMwE^DwPwE1LNt@cqIAd%fqCM9$eCe#~^my^dl-!&s%-c&St= z7KY$lh8{LI{%E}uBbe?n_cbIrOde<85 z)EL%xX`LH4Nks~J=eR%L7rsPu{r0Y0#_iV;0aZc&vhOGT5>mJQ#pk}7yK2wcEU%c_ zJ)+P2cTWo4pnKWqby3}|8(Sl1wq;HgeHgIB;TXT5Fq42}!Pn(?8*hf}T_|a+)X(R- zO3|v*`}zGAX1C=T+<6Os>^diJ^)K{8cU`H*H=eqe6SnmSzuaQ+KzFuUiogaN-@Mwc zW$N4OIHBG*HF^n5&*Ed B&{+Tg literal 0 HcmV?d00001 diff --git a/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/bucket-0/data-c2e3ff2f-a3e1-48a1-8bb1-f868477c796a-0.orc b/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/bucket-0/data-c2e3ff2f-a3e1-48a1-8bb1-f868477c796a-0.orc new file mode 100644 index 0000000000000000000000000000000000000000..02673d7e3e6c2696de02badc0d730dcdf61fa6b7 GIT binary patch literal 722 zcmeYdau#G@;9?VE;a~}1&;~MvxtJLk7=(B@ScKR(m;^W^M6if62(U@;U=?SOV89{{ zHAfd{z6iv8UZDBx93lb%5+@h~7@UC;@?5Myi-A^)aj+-}aIvOk78REWv6f_H7Ntn& z1Tb(iFdSfJVggePOhC1aC_*A4K-0l`ic^#G^HRY2((+4-N-}_2+?d0{_AoGLY}Nm( z(6g3_A%&TXje|{qL4q4hGfGG>F|)8rNU}+&00kHY7$w-5m?cUS$_z;$Q$` zCMI46eVH3i^RM3MnmqFzlc9oshFk~ZPlq&x)~%_W`=AySZ)IYbUwB! zhF9^}8>vgo2ftcq-L%-hwC1q&>waBkj{6^{G1cGP&%bHQNxfW2=~RcvQm3ZCg^w*3 zG+b0Z@Nijj$*Z>oW_K5Pg=iMhJ$)5WFo0S8~W$|y^0GGtn8elUN2yIw7)xb3eg zi?53Qy&9&fdgsq-?kE1cCWUU$y=?S)k$vWyTWfp{Z#gw7?}jF?uiN~$; ztc=5ROho3)I{fcROCICl@5d85A58eOL7zANxVh7I`*z-gxqQ~sZ%D|cuDJBm OIGesOGy4ZQO8@}L+2BI} literal 0 HcmV?d00001 diff --git a/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/commit_messages/commit_messages-01 b/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/commit_messages/commit_messages-01 new file mode 100644 index 0000000000000000000000000000000000000000..374b9b8276f970bda9574e8e932c3df30bc028c8 GIT binary patch literal 1633 zcmeHHu}&N@5cLHVogyTVLYs&p1x1GQuD!c5Suz!a0wCzzR43E&y1r%Y(J}c)hip zArs#(z)|G$IKBbH@)f4q4?~>!#q!&Vu^-XRd1=4nII)^9mNw?)q&W8ocbV5eZ(O2 zy$e|8i`nn7C$N|6=!1*~0nKRn!%tCdn&JN+?d=Rkr3r PO0UGL-N$w>X}pg|Q~i09 literal 0 HcmV?d00001 diff --git a/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/index/index-05388eac-7c9d-48cf-9053-f68b800ebe9e-0 b/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/index/index-05388eac-7c9d-48cf-9053-f68b800ebe9e-0 new file mode 100644 index 0000000000000000000000000000000000000000..dcf43f6548cb447c05e52352f344a716b0e45e86 GIT binary patch literal 112 zcmZSKVqjokVq{~ua$uT?MFUJTa{ws@2Knh$S`ZNiRfx!xOI~$gDKtV0%I8HB LX9V&+L!1Ht9Nh(( literal 0 HcmV?d00001 diff --git a/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/index/index-5d1ef2e5-c136-4059-8380-fe5d60344f83-0 b/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/index/index-5d1ef2e5-c136-4059-8380-fe5d60344f83-0 new file mode 100644 index 0000000000000000000000000000000000000000..dcf43f6548cb447c05e52352f344a716b0e45e86 GIT binary patch literal 112 zcmZSKVqjokVq{~ua$uT?MFUJTa{ws@2Knh$S`ZNiRfx!xOI~$gDKtV0%I8HB LX9V&+L!1Ht9Nh(( literal 0 HcmV?d00001 diff --git a/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/index/index-759d0483-a0e7-417b-8c3d-288f36679770-0 b/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/index/index-759d0483-a0e7-417b-8c3d-288f36679770-0 new file mode 100644 index 0000000000000000000000000000000000000000..83e0054daafb6ed668020822f645a6a8ca7ea14c GIT binary patch literal 96 zcmZSKVqjokVq{~eK#GAu`(#5GM1(;UA|j;x${Q?&Mo2;VylCQ#K)z>)Qvd)2 Clm#pR literal 0 HcmV?d00001 diff --git a/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/index-manifest-0216d085-645d-486b-9ebb-e48df26b8aa7-0 b/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/index-manifest-0216d085-645d-486b-9ebb-e48df26b8aa7-0 new file mode 100644 index 0000000000000000000000000000000000000000..ee5c88f48e48ed1b30e6d3b8f87ca694411a3f8f GIT binary patch literal 1970 zcmb7CX;c$e7=1H=VG^~302&inN|ZIxkOWNXhJsjdVMG)~h$LiCKtYgHZEZoSRb*2r zK@nw%0(B`a?5>Dn6t#jIB50%_6)lR=Dk#!Nfc_~xr=4@=ee>?zZ@KS2FK<^P0B9IP z4@U^#06&ds6aWBYG>$MZ9Hpa7bOapG0TU3w2J($)`j8JZa2%O~;>>?%yF#|bFncVH zSkYsJ`9i%f9kSe8dL&6p0CLZ5OC>E2lAl}p< ziGn8*2L^k1>T zqx`$$U`1rO-AJPjdGHUMsQ)s%YT(N(xf98Y)t?=sFN{lBo*3D!FRz4;qY@n zEW8c~TavIdY<5U%Ku6{K-kg z@6|4@sTLP}J2PfZJ67A|Uslnb^g4KLmWH`6tw%-rB-*4e?qRg@4~jaspMK5D{obKb z{Z#Cm);rs42FrKJH(|_D?iKsl4Jk?vB3-L>dulIcWoCb@tISNyRyyfVx1@78U+>Rp zv%m5xDL(X^ao^mcnANk2ob7|oY(ArAhdI`kU2AM|$#Qs`K5u5~@yv$!gG~+LW*nRR zy{*l~<}fBKB7`3m%s{-)WX>!qx?# znjx)e;2s7}EwH!UZTGytzdz=~m2=+(gzs*~8F$|ls4S1~>4;oqgw>S(e$~OI#DlZ) zIyEVaF>gZ8_RmCut$rmxo{E23q$$*Vp|q}qR}X}ZiObv#0((FJt0JS~ z&&>Ae?aUpLSihjih2NXk9EuU}nRYR0%zN?eV)mS`0Q+Y&K6z3OX|_q( zT)b^6C%Q%0z)IihbE0?kg@w*tFZBj3y+k36LB4v+ESLDwF_im!%e^U)iPVkb6qBQC z7lb0q7w0-HeaTm3tmmkV%DYv$eR(WthKM~snDTTiQMtxxOIWtoLN{+L41|LaV0lZ^ z_@L^SM`kbUs$NF2H*R`?cHApmLe%`io7c8J|gcsIqmAoXI~!1d|&s!aw zW82+(LmUKY*($5v5Xb&I@;6a!UI`UBb^^id`q(ObC&jaEy?V!q12tWhiH`}V()@1< z+6*I-KODw521oRleQK9(x@&qs_8!EoKEid#mfFY7TWHauDeAneP8Rv?X<6)Qaw?}F z|6^^E-}&fC`9Eo#_x*PCrduF;T~KoJv{gF{zM6l}`57pQ*wA#mGV9jdOw zonDUu%R&Ja(2<9igHhq;i7BiKH1394Wik_%Z$hSbpeBd8*S*)&^s|-4T|cpvTb_T? zV{Nvcto(TWPMK6itdL(zEm+WF=v%FR7A^NJr_T8N2lC*JmJOt+;aTrCg=vPyy0wLd zP)~E!RX^joxW^RBz`V$v*A09oXfI(O4Kf?(^~kXz&pZz5*Lty5xulwnA1K6Ds+nKP z|4=`v8J$vp)YU^}e_T|1vZTwi>6+annRUsdQKoxr9im(_YSR2~HU+qj_|2*-4u$Kx9j-7 E0MwOzY5)KL literal 0 HcmV?d00001 diff --git a/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/index-manifest-5ba1f8c6-fcde-45f8-b59b-a948ef3013be-0 b/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/index-manifest-5ba1f8c6-fcde-45f8-b59b-a948ef3013be-0 new file mode 100644 index 0000000000000000000000000000000000000000..fb7a5f19a3f2ca80eca4e7dd616c0d4247e4dd1e GIT binary patch literal 1970 zcmb7CdpOf;9DjeCt)E$$EgGvsmXZ0f*)SoOMTJ%ovQ ziGUNvM2ke^F+(K?Ksf+r^;RmQjqVsQh$Td#aB>(5T}`mq5EUlcir9p)MPh4_4HC-c z*dkn(jXlES@K}ggWD{n~;&8cQ9tUBOsVf8k14MrKfI~PoT32t3l{U&s6IMbbB}7$D zMi?f+R9FBIG-NtqikcWoO%nzJNQk8-!V|+n$s3}WsbgvJFfc|vbkw6g=7C{A#*B{W zzxu{T`A@~MjL<~6$yy!P;9r{INq8!L5*5a^{4TZ0I-Nvdh5*b(d6FlD)I?>+!n@H9 z(dOMiBKjJ>0sZmGjT`jF16)OS7XY*XP>Zhi304B|e{@BIe1L^|SE>_?l~dP5&uDtJ zcP+Y4v|u(|`2fnE(F1w{AWUto!a`y~kWgz8M=Z7$BOx3S8{zUo z*a%N3WFumpEstww7iwp38-lPbH%5n!Mx&pGI-7eZq<*_=Eg%&hl&8~X2&!bzX+?q5 ztf$g4Q}9ym!p||h67XvOe23%heL)T9KV-fUM-;bF3v!3^MSdBk(xt=XK~@R(Rm#~n zNZC&2gNjGIfZP#RUnhfr<=Z6Ga~93!u8OQ!IfhoG4VJm-H#3 zX3Gub}TF?@dApX4a+;GnQY|*~$l!DB&77rP{#k-0Q3yQAwTmL4r?dlh{ zNg{(WZR1>X!96@U<85x1J@@IiZ{HF=H(%Nj9F=|Kec2wv3oahLbMoaP629f!%T}go z{bG9H4LGxyyzqzNlxbY+q*e8KXVM>?YO7XCjR$l`(%h%#__SDEUUO$XXO;e}#35|A zO|(^@!GOyWxy9aAr)p%{KpnP$d+QokuW%c_L*jVSwXrIx%!QKYcsRqONA%j>(QM9z zye~(|>j!^|AN0@lXlYJ4y05EJdU8ccSzBC+F~vX!_&Hq7ocb59qmJgb1<+1n()XGi z63yBg+h4cKjvn)vqcD&r`JEnFcV&s~+ZP&Rk~U#Q6i`{Q-PveQ%T&MuWjGBgAi_p? zElf@Fv)!7G^KK@1M>@|o>-6{HH>h0raRz#o1v*UD&yqW);WRF>QFYVvIf9J@v9VjS>M|yAu&gVs#=HE;6FzWM>W_zPChNpSq?D_Ys=j+l+SH&IjHufBrSXD2s zDLqX^;=`>9!oGb*;A@OX+-wFKiqSWA?xmOE*$Qb%DOvqq{XuCtdD+o zd}DSDc{({?pmbRVGIm~m5P@mmMEfzOQPaVtcDZ>2JGCvPXkhid+t2$`oie5^y_ms_ zP3_a$=8qMCY&g)pvdK8f+tTJ8PNTrf32{7J;Cvn{>&7u8M;Q_)zpra*j!2z@Ylaqn zVy+;i{Zf_h9QXWKDZOWA&F^hqe|$+hwz=lKdo8oKrQJl%nt6h=T9F?a;32o1!8ps6 z)$MIo)NZPixTVs`Rz_>fH>cg0;x|*-g#R+7P(kX1j-T=@r(;$PUTu$EE~mi`7-W#p6>++PqsnrNR2?+D(l*gIck8cvypkqb4Sjj4^;{_5@;SCV#+UeV6g| F{{|D2Z>azP literal 0 HcmV?d00001 diff --git a/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/index-manifest-d347fbd7-d7cc-4e5e-9f4a-efa8d0ce8651-0 b/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/index-manifest-d347fbd7-d7cc-4e5e-9f4a-efa8d0ce8651-0 new file mode 100644 index 0000000000000000000000000000000000000000..e0bea207dcd438aaa14f7faf19d2ab7b3d4a0e81 GIT binary patch literal 1961 zcmb7CeKb^Q7=Q1~n64QzW^BzQvE(CMhWYdn!$jNWWI|cCEYr*+QVCnKHVu7@jEam< zBg#jqREj=ynh1%rk#c5ZiqcA9YdM`1wbx+((mCxt=RVJUpZj}0e$Vgq58xXDK){o6 zFeCtW=qH7M1ptusV2F%|F(eEXGfNzh02K&;HHtSR=%9Es1BM}Q3{3qxnvbGQXVCLt z$ecvb5yo#9i^)@tN)Uiz0Bo*0PMB@=!GJz2AqIt$MJP0kV83aLNW2r_uv|oRCYOOk z(8U~t>BJEt+zkv7;>_hr7;HAjg~OpEbTaiP0l)xp5I*>%juYB<-V`eXl$9>5f=DWe zs+x^3j)bG)1OP!(j0khI#87IwFc3gOEHwq5Sr$s(6vgOImBqur9F16@5re4+30XXS6(O(IKX+ zHf#+54jqGlzLVYveE~EHTLmZwClBZe0Fl-^iX!485Fyir=^~M^5e`?vM3`b07vZua zLdw0X_p$R-FmKo0%lwE@^s`GMeI!hho zf}wgIKg;xX@Nlk&+qstRbv4&VdMkKd!_WsfPuK^fLLtH;QFbR~0mZ`E6*DAn%C zsa|ey_D3)Or3-=slcK5B_6@dP>O%<@P}t_4WxclC1^I>J?Kko>3KLj5?q(zli(LgL zU)nbOEtf^zqD=Ty?%wEG$+q2aGx6pr<7lUrn&v0nyyJEwIm zSLSDSj9~JL0acw{8u(zN@}RPCB|}L0VN+k3a7aijYmoIG1^Nu0aq@7CJo;&p`~G^F z`-43PkMC{rdXUnqd}PDzk6^Z+dbcpmh($Mw#H7;NeF_r_7Q49f(w*^f35KsmN~Pgv zZIeGMlLx9o8-g74_A@_7L($Rq>|OvX)jvDZJBJ zu6J7c*z;4&W!an_+?1YmSQZ7WeUaozmo@6ER4RC%UM&4UOIldYnPTFdfp?9|12l2# zGYQi8$8Bvfp0B)=Fw{}2BCNgm(3N&S`(#AVP=9LYVsSLs3?hNre237qVcU+kzNT>> zV)TTS#B#Ujv=d4*qog&Lq+45GZExxcZm&pZH4QIJ8hdl}hLi8|)DBD5{%4=7)dOK` z9CuSsoOK!ZHQYK{si^O>G>pnBUQv`&IB$?iXOIr?F6gFOCi5qVic!cgbWB%Ka5gE+Eo4W0p;eZ%Aj;XkYiD~q^LY}f$dS*+RsnU=U@2jH0pNd~(Vqle1pR=e=YGRE;cJXhiPYj3W`qa7%D_rr!!SS}M z+s;%Rl=4XCJIn819;q~z^#uH48v9pp?(=|_m7&gcC7BoQrF(ey|9s)mNSRxe-oCEL zhrty-qJk|iGBVwYeYx*{9Af`Lb&HMbKL0vdgMAm=ZgMvFQpuJ}T^nkmfG!}7e&2mp z^4vSoDtG>MjI^~xX%zOnwX7Rj_Zss)y?p$3z)CyM?Ij9N&7A9t4I0W6{&^Rg^CkCK z{ByK_D6U_6CD$H}7t<6mU6PK-E2O5?;ihtEe_}Ne-^B}=QyP10u&R0UFK}^+4{hf1LjYk)H;avTAL<9GA99C^!n~bhrpy81#zWiRmsP(CwYZ(%C zrPIE@vvEnR-zu3dgQf{9KM)^s#9+OXa!}e?vu1^%0j@vGE=2nKo}}T-T>6cT=IR00 o14>)`IVaGZeJc1+XP*YM!<`|%7(+AOYrK4D^e*mBMFLm*3mjD0& literal 0 HcmV?d00001 diff --git a/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-180aa8f5-0932-462f-8f02-a1000b585552-0 b/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-180aa8f5-0932-462f-8f02-a1000b585552-0 new file mode 100644 index 0000000000000000000000000000000000000000..6015b4710d7389af5031065fcba39d39d211c492 GIT binary patch literal 3083 zcmbtU3piBk8vfUsF_vL6Gl?N(RPJPwpA4syDX^uCDnvL64Ybv<&$M{w9weLmi;|it_*o6L`Z}! zEpIM>0oXsJ?J$^ZzIA93qTHf|(V_*AJV9cfAcZZuh+>3@P>74xZT++8chxOo*H39b zs2f zIrVPnFE47$r*A(rwEP9)cp_9$@-n;tm&_eyfQ~Y-h88e*BddZkMDYAP1}YoHx?#}X zEL6sA`rlBlUS8tAqX+`XF#3!@|3hMwYzl2g*EtBafcxA~P#=f@KmgwebIv=^)er*c zY6NBH@leiIFc>x=k*`${5+9V`XOK60RJB#^S=VM~hHMTG4ji9gcYeHV@oFc(8V)b0 zCNp;+B-Sv^MMQXbZ`+8gWrS|G`#61#%Mu${Y2>>`le0h9%oNJGp@~)D9 z0Kjq7CW!apI))(vaj|ng5Qi%wvJi|#;aHx#{}Ig1{r_j?Sk=fi%#x>n%Q#m*1{H({ zo<2drApji3f}~ZFdxUUZOi@k=Yt}5pV}U#f@%9PwSQO7`$UF4SiTTzWLr#ZGAy4j} zlatNn{#gb915!F`6^DM0b6l1Pg$Ud;lt2HCKLvrS#MqDhC9Up>vTG1>|Mjcug3map{$gnMrL_9_v`6xFi)b69J~EmGx&KgE})mz zaeYg)g-N(&mZa{c#L)z6{Ug3&tk^Kd*>qR@O9!`_qkYbu+fPj)+Pd^9@jb@PK-reH zQY_1GggG}I7DsCTb038zw67qrAlg2cRtynW=LVCgmc}mqeT2Y9`OvPavdPMQB}~3X zAHuEA&ONuYCPVt%>rJ}h9_og1({p{(1~Cc>F278+7n;Z#OG2;v92t`RL53V$Gtm6?UWQA6tyY!Di>O%SmD05m`!d88O^N= zf5+N3bLw-O*noKI#JN(bhHRbX>2ZprqC=!faa#1mA)?dO&YqP6@qC*dr^6tT`iSI?P%PHw<-!zL5eoWvr>P7B2xrhRR%}*0XZ0!okhG(-A|}E9G@wBOAqtY&(!ZJ9QEsF zYP&oGn$!HAe_VKEb-{oC`+i(_WXZCcd@Zj#C0?A$70tU7gXmS>PqhZJBDx-qyuRq5?pt!@&X;_fiKZU9Pgj5E zlF`0v^}mn(=Bs_7{DW1yfr#dbA*uUQW2ZfLm+h_Pd)lM4aZpsk*li56>2730LZnNO zpc#3Py#!nCf4~iSpYn7%=HMpD9jx<5n)CK5yAyoHE)RNH%_;hdH>aI=@JQA#Lh+7^ zLTTm^#q}HGq|8!Ex9P(QdoZ+1*@dm!{ z9K^*glTHua!i%mo^6)rV8e<|zlF*QDuypZjzoD#NojjyT?&Q_-LUr%Lfd8qe*%AY&W+LtGU6cv+la&y zeN&WE^X7tuCSoElPJe{$_YSlV4NsQ^=ZEA-T7Qv@tn_v&W0KS{GB(Dr-*b^NW}=wV zi!U3rEBU_sl2_3}jV`e0OpYEpW!Hknasn0Iu zAX8GM{ercl-Un|h77z{x+cjq0dQ`7xnU}c3VHq-qBl1z0Ok@=dgyaWdnn27H2D8o9 GSp1*T_sNU^ literal 0 HcmV?d00001 diff --git a/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-e108640e-b3a6-499d-9821-fe36afde58d6-0 b/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-e108640e-b3a6-499d-9821-fe36afde58d6-0 new file mode 100644 index 0000000000000000000000000000000000000000..816e82b4145d6c9167974f0104d9cc7a5fe485d6 GIT binary patch literal 2815 zcmb7EdpMM78-M1VG2WSRm>Hv9A{vL}ka4ESVA!?eFqE>Lm@#N_%&CvUWF^Va(qUFo zI>>2Pr8BP0XGxo)W@<^qN1L#vNT2kv?=@q)c0bzh>!0U&uHSS2?)!Hip2yeUjRF7> zPsPC)4lqHFYD6pmfT{#zsCXDh#v!-`a6kqK;DF_*J%y-%+M^5@#<)T-@@eaN-XSuC zKpgNV0p$P~T{i!ZZsHaQ&~U_f)HiiIjG^<1=6r4f*NkCl8ER!25^83_x3e*`<~eZ9 z?5!Pa&A3)p78W7a);unsVa8Y)6Bj~7wsHUjkN}L?Nd*g3=OTGts%TyWc$7#UB_gB5 z1;oy!yg+J33nq-Be@ftUXn$430XzaMgvmk}5yJCIHCOPzkM!k&0#Wq;jf6#8J{Rdz z3g+Q+O`M1S4?lk+NeAtgvb4Zws|RyNUQ1!?QP59KDv6eCp5L{eEks{?uLNF>Mm2+9K&;?C21E6 z>+hF74-Ow&b&vM%OIrp)#i4#Q!WP3;J=fSlMv0wk*9YyOI@qATR$@8o&$>!|V3L`% zJ+0uBTYF<)8?bAGPPXz>9PJ_1fvN7N8XiW6tGJn#+sk*9yBzW724Wd{A=(t(b#6gj zoyvQJe#4`YHIq>R8{8Ccc8Pe|HE(Vo+rbqVc0EgvvLQO!XU;yFy=Yel8NiQ*b7;5l@pxqE555 z-NomOC1MegsWBLS+VSCA4V?@{r5w_M+(cz@)$=b(lqHNID>vRTG22upKoaiN$~-~R zN_`Y*6JPYKsWG$sOuNcRAeExnzH4P=ks&EVe}4+G(DO~Xr%glVUQ&v>NrAE7gyZ&% z8{~pf1)jN^g)oj*fFUF*_Y)+`?FwkYXo;}p-Lvv)s?{bQ- zNAP>6`c9nvXXj>!e)4)ho+D^-1kK5}yau~$vr=4<_E!X5Ogw z@Cdx>qRAgPb?f^zBO^0v-1Jou7a90GynMFu@V{w*tST`}H>w(oV^Y^qASwZ43PB*2 zoGCVT=m~gcf6}jf%O(7^xD!LFesX&qB-n zAOq|HW&Y(chopIerHz{%_On)(QM5W2E5LzD9T;0s#9rTMT7%uBcyqoQ`oqqZHUrPqQ8k(=U%&;X1V7*>$E|k&DV#$R+q7* zT5q#G*uPfBiDouZuU8YxE#;1z1GTRZ6z{$#92a#|t7_jX8uq9edcfcCux&_f z<4*+wXU}!dBJb3>*MzT-niuU`w^ndB;SO6mYGBS*p}#KaH+4?#GA}Chx`Ku>xUM<8 zsG-2P`%TG`rtI)ba- zG{=-0hv3e=GwDe6iipX%et@9Q%!d7VlBIo5TaNXn22n52F4?I&wNC0j{>D+kKoFBN z%e&u83wh8>BXyl8E0dDHYDw2+qwJSWBE=Kf@ zOLXsoL$kv#aUWJ>XC~h-;p|l72<_Iy4&Tz!XGiQio#91TH~ZZ(`&prVmcfoF7=(-oEY{cG GP2+b-N+uZq literal 0 HcmV?d00001 diff --git a/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-e108640e-b3a6-499d-9821-fe36afde58d6-1 b/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-e108640e-b3a6-499d-9821-fe36afde58d6-1 new file mode 100644 index 0000000000000000000000000000000000000000..a1a46f2d66157a5ea2a061d5581e3c81f3084ef1 GIT binary patch literal 3078 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 literal 0 HcmV?d00001 diff --git a/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-fbd7c824-c952-4f2b-ad6c-0227a823a745-1 b/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-fbd7c824-c952-4f2b-ad6c-0227a823a745-1 new file mode 100644 index 0000000000000000000000000000000000000000..7cfbf591f233884d2429c035eec0a546ae1596dd GIT binary patch literal 3184 zcmb_b2{=^y8~)9i#hI}*!=xE4#(FIg#Z$-`qs4JBhKQkvEPw+dM8VjBUl4y10gLz}5ipE4hG2^Yy#WO*fI~ekDLM7E8M7HX+`*UVZ%iYPi!(y_YT zvB$u{GIiU#_`Q!UE^5}Lv^Y_Swz(X9zGuB^(jn_lzn+U2vB|ZG%H1k)6c%NmKsiDQCHSEQ7WqUjED=zb6a-&CA<3sq{xJYToH2r1 z;QyZk_%;5Y75KbRf}zIFcN5To0$LCP^UDx`k6%b=7yw7nD+0qq!ss9lMVLqMfB|#V zpWrymPq!a=uk0+F% z7W;x2=5;o;OR!;iehM^Va6m9-%-loKT|iP802_z{INv@fs`=J&g3X||QO`+*3vk5D z@}p*uVF}*00qS(b_2AJrg>&55b^TS%A%|^`Tm6mJ?mzrSYlhhkqXNlBV`xiDo+dI9?urI3g#C^VedjBd?qT(LdSF6Y)| zCWS@NjnX*&JF-iiRO-nJnob)PO8b;wl;%|JtJObtq;$-XI;v7#{NSL!r~g2@w#qes z&X&(|MF$SsKQk=nab$0R(X^c=ER$z}0z-xQ5A6tKlAzgL}SuQPxl>;{RfOoKP&9JB2lf5s9=sM=4o zpdey6?$)wr^%|t00umY5oWQQdG^mOBzQ5rtn%cjVC*{7!S-OM1U2)No4JohtRN7BQ zJa%lIao(3{y(WStLS8hVHtwLw9%LzsRXT*X52Zyc!m#jRx%-^RcGX~C2 zYTVnwTXL!=f$3*_b#vH~EjrWo5q$y5I`M9-Mp{00Rymn-0%U+3@Muq)ZFCefI;>}U zymzG(6n+JpHlWs_nWs9NMZY)>Ve`?~QE2Qqux7VnuU6f0TuqJK(=w?$9T7Sk;jbvH z6E!qw=1me^zDzfui#BFg3(`Jm=AS+rtKR*_xsKN8qSa=oD`QheCwtW?R_6F!Y!K2m zykc5R3*D+?5v`xTCGVsnbqc?9Ez2Qji@MgG1d(fTjSU>0kYl3(+eg2XI8eL!d@jzt zn@x>`r#|RbfB9WIt8;3&>bD&)b0_mgDo%=DiJNq9YdEb?5z_eVQBki%&#NUJdVAmo z&nwSX^o*={`#$LIv5z9YpKt5W6n(zsrAJuZpHW%3uiO8(I<Jrh zVr@y_l%?k-X6e08$&cw0Ok%>i8jGc~aS3MLJ@?--CeN<04d%JXmp1v8+V^KStZivf zsr)tLy$dIwd)}gow83^wipb5hu{_ZfS6H#nDz*Qyp-<%f-TSvkwBt;wCDvNpdD9V$ zIU6w3`XH#7f&**vs!+Go$r}P4`)QTESKA=ZTYc9znK?%4cacb1Dz>TSy;(zL>prSk zMgFlV)59!@vf4DrE3aD?Cqmv~hPq}pH2!ufGcYjGoSvCD^3`|x#KwHDEn6du&NRKc z$<-8^osb(y^)ejGPA_Rv{wmx%q-A+nR7QaM(qvK*lo?^X*`PB+7xd-PZrmqAr2JMU=THXyBbOz)5j(pkNmO*42JCui8W(vvYxY?E;o?n9g%6H`;485MsvW!!WzoG3)ZQWy+a76KwlZy*i)k#RKI I*1?4OFR{q=MgRZ+ literal 0 HcmV?d00001 diff --git a/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-list-3fe1dd64-b6ac-46dc-b968-1740e05383a2-0 b/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-list-3fe1dd64-b6ac-46dc-b968-1740e05383a2-0 new file mode 100644 index 0000000000000000000000000000000000000000..bc2b65e536284e0e4572da77c01377712dab9f10 GIT binary patch literal 392 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 P4LF;=Ff;oHIZFZnaf;dl literal 0 HcmV?d00001 diff --git a/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-list-6678a969-de46-4cb3-b744-36a17ac35371-2 b/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-list-6678a969-de46-4cb3-b744-36a17ac35371-2 new file mode 100644 index 0000000000000000000000000000000000000000..f4f2396ecb279407bba019d115f005a36e29660b GIT binary patch literal 1713 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 literal 0 HcmV?d00001 diff --git a/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-list-8e8a1e2e-9fbe-4fb9-920b-82edaed23f41-1 b/test/test_data/orc/pk_btree_source_meta.db/pk_btree_source_meta/manifest/manifest-list-8e8a1e2e-9fbe-4fb9-920b-82edaed23f41-1 new file mode 100644 index 0000000000000000000000000000000000000000..fa3e6d621677d7d31e452c7a86ee94fc717802b6 GIT binary patch literal 1554 zcmeYdau#G@;9?VE;b074&;~MvxtJLk7=(B@7=_q4SOi!kSOORpF)(Os)&Hwd>dM3* zn?dkpL~h^rWJi33%-F*w9CFytoYWu~PT zm*^T=7$hcIq?zg(SQ;DYnwS}-=~|>280jV&8WZiYBiJsn|}bSAW+JIfdMP&$8Z8D4kUpw^q&DtxG;j#Rzd^AQ5FWJHX)IQ zqq)W#mYTf}=htUeS2)1rXNBMY_U&k&n&5!J#%+y&!MxMdTO$b&g!09$Hg`a z>d0gUSvCeHZZ(Yt&9jWg3PuLZiqZ};2mDsVdqvPQ97r&Sj6Ft0FoD|k% zJ{~+hC#ddw#V+pGO(mXwQ%@^qf@~j9uzU+~eLBMK;g`(ZOhw^w-1rG{HD?DI6sK@g{R;=Qcuyv92s7S#dP=}`>-D>*xdP_IuQJzA zJo6}XhLX6iri4qQg7}%7WYHh@eIzpWrUo;BpwP69*KH=rSbqEPXrf%_!y|c~|31EZ zw()W7@lpffve}kQ`A-zY%l=ieR-Ju#RN64+vc3BorY8?G0=hlBUOcv%7j(gdp_ie- z??4c%_Fv^-p*3F^um9WsD^ca}nWLBX>kF41KVdAteC0gF*yH>cgx}2i_sUmM`tkaG zYhL(OsEG1t*vw`NjlHoX{eo)wgQk@~A4~naI*GYjdGehGRpE=y{BL^iRL*6ttd5uF zzAbz9Rl*c@?%5&Rrj~9wo0dKO>w(6mzU4{IiVOTQesPp-Y;IOSxc05ipfOzbqX*wx_V}FT%NFW zVdwI>!tUk&^8X+Fzw!UiF6XJiOXM>(mUq~9Er?f^x!DouSJ?c4?I!Q9SC{&8qAZWH z{K(@zy~*dag|(hS!J^DyIsW;9Wo^PHsyD9asIVz>%W>S>^8VT}>&3-41mCXfyL7W- z(c+E?$1+NPwRk?6cSm{dyr~M$dM{R`0;~^ip)2YWX2Qc6ST5r)mk`tPa;P v*=OHo{qbPwu5F6mI`#_}a5S Date: Wed, 5 Aug 2026 12:38:36 +0800 Subject: [PATCH 3/3] fix pre-commit --- src/paimon/core/index/index_file_meta_serializer_test.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/paimon/core/index/index_file_meta_serializer_test.cpp b/src/paimon/core/index/index_file_meta_serializer_test.cpp index a6108236e..ab1c77b84 100644 --- a/src/paimon/core/index/index_file_meta_serializer_test.cpp +++ b/src/paimon/core/index/index_file_meta_serializer_test.cpp @@ -136,10 +136,10 @@ TEST_F(IndexFileMetaSerializerTest, TestToFromRowWithGlobalIndexWithSourceMeta) /*index_field_id=*/5, /*extra_field_ids=*/std::optional>({0, 1}), index_meta_bytes, source_meta_bytes); { - auto expected = std::make_shared( - "bitmap", "bitmap_index_file_0", /*file_size=*/10, - /*row_count=*/41, /*dv_ranges=*/std::nullopt, - /*external_path=*/std::nullopt, global_index_meta); + auto expected = + std::make_shared("bitmap", "bitmap_index_file_0", /*file_size=*/10, + /*row_count=*/41, /*dv_ranges=*/std::nullopt, + /*external_path=*/std::nullopt, global_index_meta); ASSERT_OK_AND_ASSIGN(BinaryRow row, serializer.ToRow(expected)); ASSERT_OK_AND_ASSIGN(std::shared_ptr actual, serializer.FromRow(row)); ASSERT_EQ(expected->ToString(), actual->ToString());