Skip to content

Commit bd1a6e4

Browse files
committed
remove most unnecessary lines to focus on interface design
1 parent a213dfc commit bd1a6e4

11 files changed

+30
-1365
lines changed

src/iceberg/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ set(ICEBERG_SOURCES
2222
catalog/memory/in_memory_catalog.cc
2323
data/data_writer.cc
2424
data/equality_delete_writer.cc
25-
data/file_writer_factory.cc
2625
data/position_delete_writer.cc
2726
data/writer.cc
2827
delete_file_index.cc

src/iceberg/data/data_writer.cc

Lines changed: 4 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -21,53 +21,18 @@
2121

2222
namespace iceberg {
2323

24-
//=============================================================================
25-
// DataWriter - stub implementation (to be completed in separate PR per #441)
26-
//=============================================================================
27-
2824
class DataWriter::Impl {
2925
public:
30-
explicit Impl(DataWriterOptions options) : options_(std::move(options)) {}
31-
DataWriterOptions options_;
32-
bool is_closed_ = false;
3326
};
3427

35-
DataWriter::DataWriter(std::unique_ptr<Impl> impl) : impl_(std::move(impl)) {}
3628
DataWriter::~DataWriter() = default;
3729

38-
Status DataWriter::Write(ArrowArray* data) {
39-
if (!data) {
40-
return InvalidArgument("Cannot write null data");
41-
}
42-
if (impl_->is_closed_) {
43-
return Invalid("Writer is already closed");
44-
}
45-
return NotImplemented("DataWriter not yet implemented - see #441");
46-
}
47-
48-
Result<int64_t> DataWriter::Length() const {
49-
return NotImplemented("DataWriter not yet implemented - see #441");
50-
}
30+
Status DataWriter::Write(ArrowArray* data) { return NotImplemented(""); }
5131

52-
Status DataWriter::Close() {
53-
if (impl_->is_closed_) {
54-
return {}; // Close is idempotent
55-
}
56-
impl_->is_closed_ = true;
57-
return NotImplemented("DataWriter not yet implemented - see #441");
58-
}
32+
Result<int64_t> DataWriter::Length() const { return NotImplemented(""); }
5933

60-
Result<FileWriter::WriteResult> DataWriter::Metadata() {
61-
if (!impl_->is_closed_) {
62-
return Invalid("Writer must be closed before getting metadata");
63-
}
64-
return NotImplemented("DataWriter not yet implemented - see #441");
65-
}
34+
Status DataWriter::Close() { return NotImplemented(""); }
6635

67-
// Internal factory function for FileWriterFactory
68-
std::unique_ptr<DataWriter> MakeDataWriterInternal(const DataWriterOptions& options) {
69-
auto impl = std::make_unique<DataWriter::Impl>(options);
70-
return std::unique_ptr<DataWriter>(new DataWriter(std::move(impl)));
71-
}
36+
Result<FileWriter::WriteResult> DataWriter::Metadata() { return NotImplemented(""); }
7237

7338
} // namespace iceberg

src/iceberg/data/data_writer.h

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#include <memory>
2727
#include <optional>
2828
#include <string>
29+
#include <unordered_map>
2930

3031
#include "iceberg/arrow_c_data.h"
3132
#include "iceberg/data/writer.h"
@@ -38,11 +39,6 @@
3839
namespace iceberg {
3940

4041
/// \brief Options for creating a DataWriter.
41-
///
42-
/// \note The following features from Java DataWriter are not yet supported:
43-
/// - Encryption key metadata (uses FileIO instead of EncryptedOutputFile)
44-
/// - Metrics collection and reporting
45-
/// - Split offsets tracking
4642
struct ICEBERG_EXPORT DataWriterOptions {
4743
std::string path;
4844
std::shared_ptr<Schema> schema;
@@ -51,13 +47,10 @@ struct ICEBERG_EXPORT DataWriterOptions {
5147
FileFormatType format = FileFormatType::kParquet;
5248
std::shared_ptr<FileIO> io;
5349
std::optional<int32_t> sort_order_id;
54-
std::shared_ptr<class WriterProperties> properties;
50+
std::unordered_map<std::string, std::string> properties;
5551
};
5652

5753
/// \brief Writer for Iceberg data files.
58-
///
59-
/// \warning Thread Safety: Writer instances are NOT thread-safe. Each writer should only
60-
/// be used by a single thread. Do not call Write(), Close(), or Metadata() concurrently.
6154
class ICEBERG_EXPORT DataWriter : public FileWriter {
6255
public:
6356
~DataWriter() override;
@@ -68,11 +61,8 @@ class ICEBERG_EXPORT DataWriter : public FileWriter {
6861
Result<WriteResult> Metadata() override;
6962

7063
private:
71-
friend class FileWriterFactory;
72-
friend std::unique_ptr<DataWriter> MakeDataWriterInternal(const DataWriterOptions&);
7364
class Impl;
7465
std::unique_ptr<Impl> impl_;
75-
explicit DataWriter(std::unique_ptr<Impl> impl);
7666
};
7767

7868
} // namespace iceberg

src/iceberg/data/equality_delete_writer.cc

Lines changed: 5 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -21,59 +21,22 @@
2121

2222
namespace iceberg {
2323

24-
//=============================================================================
25-
// EqualityDeleteWriter - stub implementation (to be completed in separate PR per #441)
26-
//=============================================================================
27-
2824
class EqualityDeleteWriter::Impl {
2925
public:
30-
explicit Impl(EqualityDeleteWriterOptions options) : options_(std::move(options)) {}
31-
EqualityDeleteWriterOptions options_;
32-
bool is_closed_ = false;
3326
};
3427

35-
EqualityDeleteWriter::EqualityDeleteWriter(std::unique_ptr<Impl> impl)
36-
: impl_(std::move(impl)) {}
3728
EqualityDeleteWriter::~EqualityDeleteWriter() = default;
3829

39-
Status EqualityDeleteWriter::Write(ArrowArray* data) {
40-
if (!data) {
41-
return InvalidArgument("Cannot write null data");
42-
}
43-
if (impl_->is_closed_) {
44-
return Invalid("Writer is already closed");
45-
}
46-
return NotImplemented("EqualityDeleteWriter not yet implemented - see #441");
47-
}
30+
Status EqualityDeleteWriter::Write(ArrowArray* data) { return NotImplemented(""); }
4831

49-
Result<int64_t> EqualityDeleteWriter::Length() const {
50-
return NotImplemented("EqualityDeleteWriter not yet implemented - see #441");
51-
}
32+
Result<int64_t> EqualityDeleteWriter::Length() const { return NotImplemented(""); }
5233

53-
Status EqualityDeleteWriter::Close() {
54-
if (impl_->is_closed_) {
55-
return {}; // Close is idempotent
56-
}
57-
impl_->is_closed_ = true;
58-
return NotImplemented("EqualityDeleteWriter not yet implemented - see #441");
59-
}
34+
Status EqualityDeleteWriter::Close() { return NotImplemented(""); }
6035

6136
Result<FileWriter::WriteResult> EqualityDeleteWriter::Metadata() {
62-
if (!impl_->is_closed_) {
63-
return Invalid("Writer must be closed before getting metadata");
64-
}
65-
return NotImplemented("EqualityDeleteWriter not yet implemented - see #441");
37+
return NotImplemented("");
6638
}
6739

68-
const std::vector<int32_t>& EqualityDeleteWriter::equality_field_ids() const {
69-
return impl_->options_.equality_field_ids;
70-
}
71-
72-
// Internal factory function for FileWriterFactory
73-
std::unique_ptr<EqualityDeleteWriter> MakeEqualityDeleteWriterInternal(
74-
const EqualityDeleteWriterOptions& options) {
75-
auto impl = std::make_unique<EqualityDeleteWriter::Impl>(options);
76-
return std::unique_ptr<EqualityDeleteWriter>(new EqualityDeleteWriter(std::move(impl)));
77-
}
40+
std::span<const int32_t> EqualityDeleteWriter::equality_field_ids() const { return {}; }
7841

7942
} // namespace iceberg

src/iceberg/data/equality_delete_writer.h

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@
2525
#include <cstdint>
2626
#include <memory>
2727
#include <optional>
28+
#include <span>
2829
#include <string>
29-
#include <vector>
30+
#include <unordered_map>
3031

3132
#include "iceberg/arrow_c_data.h"
3233
#include "iceberg/data/writer.h"
@@ -39,11 +40,6 @@
3940
namespace iceberg {
4041

4142
/// \brief Options for creating an EqualityDeleteWriter.
42-
///
43-
/// \note The following features from Java EqualityDeleteWriter are not yet supported:
44-
/// - Encryption key metadata
45-
/// - Metrics collection and reporting
46-
/// - Split offsets tracking
4743
struct ICEBERG_EXPORT EqualityDeleteWriterOptions {
4844
std::string path;
4945
std::shared_ptr<Schema> schema;
@@ -53,13 +49,10 @@ struct ICEBERG_EXPORT EqualityDeleteWriterOptions {
5349
std::shared_ptr<FileIO> io;
5450
std::vector<int32_t> equality_field_ids;
5551
std::optional<int32_t> sort_order_id;
56-
std::shared_ptr<class WriterProperties> properties;
52+
std::unordered_map<std::string, std::string> properties;
5753
};
5854

5955
/// \brief Writer for Iceberg equality delete files.
60-
///
61-
/// \warning Thread Safety: Writer instances are NOT thread-safe. Each writer should only
62-
/// be used by a single thread. Do not call Write(), Close(), or Metadata() concurrently.
6356
class ICEBERG_EXPORT EqualityDeleteWriter : public FileWriter {
6457
public:
6558
~EqualityDeleteWriter() override;
@@ -69,15 +62,11 @@ class ICEBERG_EXPORT EqualityDeleteWriter : public FileWriter {
6962
Status Close() override;
7063
Result<WriteResult> Metadata() override;
7164

72-
const std::vector<int32_t>& equality_field_ids() const;
65+
std::span<const int32_t> equality_field_ids() const;
7366

7467
private:
75-
friend class FileWriterFactory;
76-
friend std::unique_ptr<EqualityDeleteWriter> MakeEqualityDeleteWriterInternal(
77-
const EqualityDeleteWriterOptions&);
7868
class Impl;
7969
std::unique_ptr<Impl> impl_;
80-
explicit EqualityDeleteWriter(std::unique_ptr<Impl> impl);
8170
};
8271

8372
} // namespace iceberg

0 commit comments

Comments
 (0)