Skip to content

Commit 854176a

Browse files
author
xiao.dong
committed
fix comment
1 parent 515c0ad commit 854176a

File tree

3 files changed

+83
-89
lines changed

3 files changed

+83
-89
lines changed

src/iceberg/manifest_adapter.h

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,38 +29,39 @@
2929

3030
namespace iceberg {
3131

32-
// \brief Implemented by different versions with different schemas to
33-
// append a list of `ManifestEntry`s to an `ArrowArray`.
34-
class ManifestEntryAdapter {
32+
// \brief Base class of adapter for v1v2v3v4 metadata.
33+
class ICEBERG_EXPORT MetadataAdapter {
3534
public:
36-
ManifestEntryAdapter() = default;
37-
virtual ~ManifestEntryAdapter() = default;
35+
MetadataAdapter() = default;
36+
virtual ~MetadataAdapter() = default;
3837

3938
virtual Status StartAppending() = 0;
40-
virtual Status Append(const ManifestEntry& entry) = 0;
4139
virtual Result<ArrowArray> FinishAppending() = 0;
4240
int64_t size() const { return size_; }
4341

4442
protected:
45-
ArrowArray array_; // array to append `ManifestEntry`s
43+
ArrowArray array_;
4644
int64_t size_ = 0;
4745
};
4846

47+
// \brief Implemented by different versions with different schemas to
48+
// append a list of `ManifestEntry`s to an `ArrowArray`.
49+
class ICEBERG_EXPORT ManifestEntryAdapter : public MetadataAdapter {
50+
public:
51+
ManifestEntryAdapter() = default;
52+
virtual ~ManifestEntryAdapter() = default;
53+
54+
virtual Status Append(const ManifestEntry& entry) = 0;
55+
};
56+
4957
// \brief Implemented by different versions with different schemas to
5058
// append a list of `ManifestFile`s to an `ArrowArray`.
51-
class ManifestFileAdapter {
59+
class ICEBERG_EXPORT ManifestFileAdapter : public MetadataAdapter {
5260
public:
5361
ManifestFileAdapter() = default;
5462
virtual ~ManifestFileAdapter() = default;
5563

56-
virtual Status StartAppending() = 0;
5764
virtual Status Append(const ManifestFile& file) = 0;
58-
virtual Result<ArrowArray> FinishAppending() = 0;
59-
int64_t size() const { return size_; }
60-
61-
protected:
62-
ArrowArray array_; // array to append `ManifestFile`s
63-
int64_t size_ = 0;
6465
};
6566

6667
} // namespace iceberg

src/iceberg/manifest_writer.cc

Lines changed: 42 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -29,42 +29,29 @@
2929

3030
namespace iceberg {
3131

32-
/// \brief Write manifest files to a manifest list file.
33-
class ManifestWriterImpl : public ManifestWriter {
34-
public:
35-
ManifestWriterImpl(std::unique_ptr<Writer> writer,
36-
std::unique_ptr<ManifestEntryAdapter> adapter)
37-
: writer_(std::move(writer)), adapter_(std::move(adapter)) {}
38-
39-
Status Add(const ManifestEntry& entry) override {
40-
if (adapter_->size() >= kBatchSize) {
41-
ICEBERG_ASSIGN_OR_RAISE(auto array, adapter_->FinishAppending());
42-
ICEBERG_RETURN_UNEXPECTED(writer_->Write(array));
43-
ICEBERG_RETURN_UNEXPECTED(adapter_->StartAppending());
44-
}
45-
return adapter_->Append(entry);
32+
Status ManifestWriter::Add(const ManifestEntry& entry) {
33+
if (adapter_->size() >= kBatchSize) {
34+
ICEBERG_ASSIGN_OR_RAISE(auto array, adapter_->FinishAppending());
35+
ICEBERG_RETURN_UNEXPECTED(writer_->Write(array));
36+
ICEBERG_RETURN_UNEXPECTED(adapter_->StartAppending());
4637
}
38+
return adapter_->Append(entry);
39+
}
4740

48-
Status AddAll(const std::vector<ManifestEntry>& entries) override {
49-
for (const auto& entry : entries) {
50-
ICEBERG_RETURN_UNEXPECTED(Add(entry));
51-
}
52-
return {};
41+
Status ManifestWriter::AddAll(const std::vector<ManifestEntry>& entries) {
42+
for (const auto& entry : entries) {
43+
ICEBERG_RETURN_UNEXPECTED(Add(entry));
5344
}
45+
return {};
46+
}
5447

55-
Status Close() override {
56-
if (adapter_->size() > 0) {
57-
ICEBERG_ASSIGN_OR_RAISE(auto array, adapter_->FinishAppending());
58-
ICEBERG_RETURN_UNEXPECTED(writer_->Write(array));
59-
}
60-
return {};
48+
Status ManifestWriter::Close() {
49+
if (adapter_->size() > 0) {
50+
ICEBERG_ASSIGN_OR_RAISE(auto array, adapter_->FinishAppending());
51+
ICEBERG_RETURN_UNEXPECTED(writer_->Write(array));
6152
}
62-
63-
private:
64-
static constexpr int64_t kBatchSize = 1024;
65-
std::unique_ptr<Writer> writer_;
66-
std::unique_ptr<ManifestEntryAdapter> adapter_;
67-
};
53+
return {};
54+
}
6855

6956
Result<std::unique_ptr<Writer>> OpenFileWriter(std::string_view location,
7057
const std::shared_ptr<Schema> schema,
@@ -89,7 +76,7 @@ Result<std::unique_ptr<ManifestWriter>> ManifestWriter::MakeV1Writer(
8976
ICEBERG_ASSIGN_OR_RAISE(auto writer,
9077
OpenFileWriter(manifest_location, schema, std::move(file_io)));
9178
auto adapter = std::make_unique<ManifestEntryAdapterV1>(snapshot_id, std::move(schema));
92-
return std::make_unique<ManifestWriterImpl>(std::move(writer), std::move(adapter));
79+
return std::make_unique<ManifestWriter>(std::move(writer), std::move(adapter));
9380
}
9481

9582
Result<std::unique_ptr<ManifestWriter>> ManifestWriter::MakeV2Writer(
@@ -104,7 +91,7 @@ Result<std::unique_ptr<ManifestWriter>> ManifestWriter::MakeV2Writer(
10491
ICEBERG_ASSIGN_OR_RAISE(auto writer,
10592
OpenFileWriter(manifest_location, schema, std::move(file_io)));
10693
auto adapter = std::make_unique<ManifestEntryAdapterV2>(snapshot_id, std::move(schema));
107-
return std::make_unique<ManifestWriterImpl>(std::move(writer), std::move(adapter));
94+
return std::make_unique<ManifestWriter>(std::move(writer), std::move(adapter));
10895
}
10996

11097
Result<std::unique_ptr<ManifestWriter>> ManifestWriter::MakeV3Writer(
@@ -121,45 +108,32 @@ Result<std::unique_ptr<ManifestWriter>> ManifestWriter::MakeV3Writer(
121108
OpenFileWriter(manifest_location, schema, std::move(file_io)));
122109
auto adapter = std::make_unique<ManifestEntryAdapterV3>(snapshot_id, first_row_id,
123110
std::move(schema));
124-
return std::make_unique<ManifestWriterImpl>(std::move(writer), std::move(adapter));
111+
return std::make_unique<ManifestWriter>(std::move(writer), std::move(adapter));
125112
}
126113

127-
/// \brief Write manifest files to a manifest list file.
128-
class ManifestListWriterImpl : public ManifestListWriter {
129-
public:
130-
ManifestListWriterImpl(std::unique_ptr<Writer> writer,
131-
std::unique_ptr<ManifestFileAdapter> adapter)
132-
: writer_(std::move(writer)), adapter_(std::move(adapter)) {}
133-
134-
Status Add(const ManifestFile& file) override {
135-
if (adapter_->size() >= kBatchSize) {
136-
ICEBERG_ASSIGN_OR_RAISE(auto array, adapter_->FinishAppending());
137-
ICEBERG_RETURN_UNEXPECTED(writer_->Write(array));
138-
ICEBERG_RETURN_UNEXPECTED(adapter_->StartAppending());
139-
}
140-
return adapter_->Append(file);
114+
Status ManifestListWriter::Add(const ManifestFile& file) {
115+
if (adapter_->size() >= kBatchSize) {
116+
ICEBERG_ASSIGN_OR_RAISE(auto array, adapter_->FinishAppending());
117+
ICEBERG_RETURN_UNEXPECTED(writer_->Write(array));
118+
ICEBERG_RETURN_UNEXPECTED(adapter_->StartAppending());
141119
}
120+
return adapter_->Append(file);
121+
}
142122

143-
Status AddAll(const std::vector<ManifestFile>& files) override {
144-
for (const auto& file : files) {
145-
ICEBERG_RETURN_UNEXPECTED(Add(file));
146-
}
147-
return {};
123+
Status ManifestListWriter::AddAll(const std::vector<ManifestFile>& files) {
124+
for (const auto& file : files) {
125+
ICEBERG_RETURN_UNEXPECTED(Add(file));
148126
}
127+
return {};
128+
}
149129

150-
Status Close() override {
151-
if (adapter_->size() > 0) {
152-
ICEBERG_ASSIGN_OR_RAISE(auto array, adapter_->FinishAppending());
153-
ICEBERG_RETURN_UNEXPECTED(writer_->Write(array));
154-
}
155-
return {};
130+
Status ManifestListWriter::Close() {
131+
if (adapter_->size() > 0) {
132+
ICEBERG_ASSIGN_OR_RAISE(auto array, adapter_->FinishAppending());
133+
ICEBERG_RETURN_UNEXPECTED(writer_->Write(array));
156134
}
157-
158-
private:
159-
static constexpr int64_t kBatchSize = 1024;
160-
std::unique_ptr<Writer> writer_;
161-
std::unique_ptr<ManifestFileAdapter> adapter_;
162-
};
135+
return {};
136+
}
163137

164138
Result<std::unique_ptr<ManifestListWriter>> ManifestListWriter::MakeV1Writer(
165139
int64_t snapshot_id, std::optional<int64_t> parent_snapshot_id,
@@ -172,7 +146,7 @@ Result<std::unique_ptr<ManifestListWriter>> ManifestListWriter::MakeV1Writer(
172146
auto writer, OpenFileWriter(manifest_list_location, schema, std::move(file_io)));
173147
auto adapter = std::make_unique<ManifestFileAdapterV1>(snapshot_id, parent_snapshot_id,
174148
std::move(schema));
175-
return std::make_unique<ManifestListWriterImpl>(std::move(writer), std::move(adapter));
149+
return std::make_unique<ManifestListWriter>(std::move(writer), std::move(adapter));
176150
}
177151

178152
Result<std::unique_ptr<ManifestListWriter>> ManifestListWriter::MakeV2Writer(
@@ -187,7 +161,7 @@ Result<std::unique_ptr<ManifestListWriter>> ManifestListWriter::MakeV2Writer(
187161
auto writer, OpenFileWriter(manifest_list_location, schema, std::move(file_io)));
188162
auto adapter = std::make_unique<ManifestFileAdapterV2>(
189163
snapshot_id, parent_snapshot_id, sequence_number, std::move(schema));
190-
return std::make_unique<ManifestListWriterImpl>(std::move(writer), std::move(adapter));
164+
return std::make_unique<ManifestListWriter>(std::move(writer), std::move(adapter));
191165
}
192166

193167
Result<std::unique_ptr<ManifestListWriter>> ManifestListWriter::MakeV3Writer(
@@ -202,7 +176,7 @@ Result<std::unique_ptr<ManifestListWriter>> ManifestListWriter::MakeV3Writer(
202176
auto writer, OpenFileWriter(manifest_list_location, schema, std::move(file_io)));
203177
auto adapter = std::make_unique<ManifestFileAdapterV3>(
204178
snapshot_id, parent_snapshot_id, sequence_number, first_row_id, std::move(schema));
205-
return std::make_unique<ManifestListWriterImpl>(std::move(writer), std::move(adapter));
179+
return std::make_unique<ManifestListWriter>(std::move(writer), std::move(adapter));
206180
}
207181

208182
} // namespace iceberg

src/iceberg/manifest_writer.h

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,27 +27,32 @@
2727

2828
#include "iceberg/file_writer.h"
2929
#include "iceberg/iceberg_export.h"
30+
#include "iceberg/manifest_adapter.h"
3031
#include "iceberg/type_fwd.h"
3132

3233
namespace iceberg {
3334

3435
/// \brief Write manifest entries to a manifest file.
3536
class ICEBERG_EXPORT ManifestWriter {
3637
public:
38+
ManifestWriter(std::unique_ptr<Writer> writer,
39+
std::unique_ptr<ManifestEntryAdapter> adapter)
40+
: writer_(std::move(writer)), adapter_(std::move(adapter)) {}
41+
3742
virtual ~ManifestWriter() = default;
3843

3944
/// \brief Write manifest entry to file.
4045
/// \param entry Manifest entry to write.
4146
/// \return Status::OK() if entry was written successfully
42-
virtual Status Add(const ManifestEntry& entry) = 0;
47+
Status Add(const ManifestEntry& entry);
4348

4449
/// \brief Write manifest entries to file.
4550
/// \param entries Manifest entries to write.
4651
/// \return Status::OK() if all entries were written successfully
47-
virtual Status AddAll(const std::vector<ManifestEntry>& entries) = 0;
52+
Status AddAll(const std::vector<ManifestEntry>& entries);
4853

4954
/// \brief Close writer and flush to storage.
50-
virtual Status Close() = 0;
55+
Status Close();
5156

5257
/// \brief Creates a writer for a manifest file.
5358
/// \param snapshot_id ID of the snapshot.
@@ -77,25 +82,34 @@ class ICEBERG_EXPORT ManifestWriter {
7782
std::optional<int64_t> snapshot_id, std::optional<int64_t> first_row_id,
7883
std::string_view manifest_location, std::shared_ptr<FileIO> file_io,
7984
std::shared_ptr<Schema> partition_schema);
85+
86+
private:
87+
static constexpr int64_t kBatchSize = 1024;
88+
std::unique_ptr<Writer> writer_;
89+
std::unique_ptr<ManifestEntryAdapter> adapter_;
8090
};
8191

8292
/// \brief Write manifest files to a manifest list file.
8393
class ICEBERG_EXPORT ManifestListWriter {
8494
public:
95+
ManifestListWriter(std::unique_ptr<Writer> writer,
96+
std::unique_ptr<ManifestFileAdapter> adapter)
97+
: writer_(std::move(writer)), adapter_(std::move(adapter)) {}
98+
8599
virtual ~ManifestListWriter() = default;
86100

87101
/// \brief Write manifest file to manifest list file.
88102
/// \param file Manifest file to write.
89103
/// \return Status::OK() if file was written successfully
90-
virtual Status Add(const ManifestFile& file) = 0;
104+
Status Add(const ManifestFile& file);
91105

92106
/// \brief Write manifest file list to manifest list file.
93107
/// \param files Manifest file list to write.
94108
/// \return Status::OK() if all files were written successfully
95-
virtual Status AddAll(const std::vector<ManifestFile>& files) = 0;
109+
Status AddAll(const std::vector<ManifestFile>& files);
96110

97111
/// \brief Close writer and flush to storage.
98-
virtual Status Close() = 0;
112+
Status Close();
99113

100114
/// \brief Creates a writer for the v1 manifest list.
101115
/// \param snapshot_id ID of the snapshot.
@@ -131,6 +145,11 @@ class ICEBERG_EXPORT ManifestListWriter {
131145
int64_t snapshot_id, std::optional<int64_t> parent_snapshot_id,
132146
int64_t sequence_number, std::optional<int64_t> first_row_id,
133147
std::string_view manifest_list_location, std::shared_ptr<FileIO> file_io);
148+
149+
private:
150+
static constexpr int64_t kBatchSize = 1024;
151+
std::unique_ptr<Writer> writer_;
152+
std::unique_ptr<ManifestFileAdapter> adapter_;
134153
};
135154

136155
} // namespace iceberg

0 commit comments

Comments
 (0)