Skip to content

Commit 59e2dd3

Browse files
author
zhongzheyun
committed
refactor(manifest): address lazy decode review feedback
1 parent 16c0498 commit 59e2dd3

5 files changed

Lines changed: 9 additions & 2 deletions

File tree

src/paimon/core/manifest/manifest_entry_serializer.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ Status ManifestEntrySerializer::ValidateVersion(int32_t version) {
4444
return Status::Invalid(fmt::format("Unsupported version: {}", version));
4545
}
4646

47+
int32_t ManifestEntrySerializer::GetBucket(const InternalRow& row) {
48+
return row.GetInt(3);
49+
}
50+
4751
Result<ManifestEntry> ManifestEntrySerializer::ConvertFrom(int32_t version,
4852
const InternalRow& row) const {
4953
PAIMON_RETURN_NOT_OK(ValidateVersion(version));

src/paimon/core/manifest/manifest_entry_serializer.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ class ManifestEntrySerializer : public VersionedObjectSerializer<ManifestEntry>
5353
/// Validate the serialization version before reading fields that may vary by version.
5454
static Status ValidateVersion(int32_t version);
5555

56+
/// Get the bucket from a versioned manifest entry row without fully deserializing it.
57+
static int32_t GetBucket(const InternalRow& row);
58+
5659
Result<ManifestEntry> ConvertFrom(int32_t version, const InternalRow& row) const override;
5760

5861
Result<BinaryRow> ToRow(const ManifestEntry& record) const override;

src/paimon/core/manifest/manifest_entry_serializer_test.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ TEST_F(ManifestEntrySerializerTest, TestToFromRow) {
5555
ManifestEntrySerializer serializer(pool);
5656
for (const auto& entry : entries) {
5757
ASSERT_OK_AND_ASSIGN(auto row, serializer.ToRow(entry));
58+
ASSERT_EQ(entry.Bucket(), ManifestEntrySerializer::GetBucket(row));
5859
ASSERT_OK_AND_ASSIGN(auto result_entry, serializer.FromRow(row));
5960
ASSERT_EQ(entry, result_entry);
6061
ASSERT_EQ(entry.ToString(), result_entry.ToString());

src/paimon/core/manifest/manifest_file.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ Status ManifestFile::ReadBucketEntries(const std::string& file_name, int32_t buc
9595
for (int64_t i = 0; i < batch->length(); i++) {
9696
ColumnarRow row(batch->fields(), pool_, i);
9797
PAIMON_RETURN_NOT_OK(ManifestEntrySerializer::ValidateVersion(row.GetInt(0)));
98-
if (row.GetInt(3) != bucket) {
98+
if (ManifestEntrySerializer::GetBucket(row) != bucket) {
9999
continue;
100100
}
101101
PAIMON_ASSIGN_OR_RAISE(ManifestEntry entry, serializer_->FromRow(row));

src/paimon/core/utils/objects_file.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,6 @@ Status ObjectsFile<T>::ReadArrowBatches(
186186
reader_builder_->Build(file_input_stream));
187187
auto reader = std::make_unique<ManifestMetaReader>(std::move(batch_reader),
188188
serializer_->GetDataType(), pool_);
189-
ScopeGuard close_reader([&reader]() { reader->Close(); });
190189
while (true) {
191190
PAIMON_ASSIGN_OR_RAISE(BatchReader::ReadBatch arrow_array, reader->NextBatch());
192191
auto& c_array = arrow_array.first;

0 commit comments

Comments
 (0)