You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@iceberg.apache.org by "nullccxsy (via GitHub)" <gi...@apache.org> on 2025/09/01 05:48:17 UTC
[PR] feat: implement AvroWriter Write method [iceberg-cpp]
nullccxsy opened a new pull request, #204:
URL: https://github.com/apache/iceberg-cpp/pull/204
- Complete AvroWriter::Write implementation using ExtractDatumFromArray
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org
Re: [PR] feat: implement AvroWriter Write method [iceberg-cpp]
Posted by "HuaHuaY (via GitHub)" <gi...@apache.org>.
HuaHuaY commented on code in PR #204:
URL: https://github.com/apache/iceberg-cpp/pull/204#discussion_r2313379238
##########
src/iceberg/avro/avro_writer.cc:
##########
@@ -73,9 +76,22 @@ class AvroWriter::Impl {
return {};
Review Comment:
A needed change which is not caused by this PR: we need to save `output_stream` temporarily and close it in `Close` method, due to it is created in `Open`.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org
Re: [PR] feat: implement AvroWriter Write method [iceberg-cpp]
Posted by "wgtmac (via GitHub)" <gi...@apache.org>.
wgtmac commented on code in PR #204:
URL: https://github.com/apache/iceberg-cpp/pull/204#discussion_r2314115718
##########
src/iceberg/avro/avro_writer.cc:
##########
@@ -73,9 +76,22 @@ class AvroWriter::Impl {
return {};
Review Comment:
The avro writer does not close the stream. We need to handle it by ourselves.
```
DataFileWriterBase::~DataFileWriterBase() {
if (stream_) {
try {
close();
} catch (...) {}
}
}
void DataFileWriterBase::close() {
flush();
stream_.reset();
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org
Re: [PR] feat: implement AvroWriter Write method [iceberg-cpp]
Posted by "HuaHuaY (via GitHub)" <gi...@apache.org>.
HuaHuaY commented on code in PR #204:
URL: https://github.com/apache/iceberg-cpp/pull/204#discussion_r2314799363
##########
src/iceberg/avro/avro_writer.cc:
##########
@@ -73,9 +76,22 @@ class AvroWriter::Impl {
return {};
Review Comment:
My mistakes in the explanation here. We need to save `output_stream_` in `AvroOutputStream` but not `AvroOutputStream` itself. `AvroOutputStream` is moved to writer_, but the `output_stream_` in it is a `shared_ptr` and it's not closed.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org
Re: [PR] feat: implement AvroWriter Write method [iceberg-cpp]
Posted by "wgtmac (via GitHub)" <gi...@apache.org>.
wgtmac commented on code in PR #204:
URL: https://github.com/apache/iceberg-cpp/pull/204#discussion_r2317760937
##########
src/iceberg/avro/avro_stream_internal.h:
##########
@@ -87,6 +87,8 @@ class AvroOutputStream : public ::avro::OutputStream {
/// store, if any.
void flush() override;
+ std::shared_ptr<::arrow::io::OutputStream> get_output_stream() const;
Review Comment:
```suggestion
const std::shared_ptr<::arrow::io::OutputStream>& arrow_output_stream() const;
```
Usually we don't use `get` as the function name. It would be good to be clear about what output stream it is from the name.
##########
src/iceberg/avro/avro_writer.cc:
##########
@@ -99,6 +112,12 @@ class AvroWriter::Impl {
std::shared_ptr<::avro::ValidSchema> avro_schema_;
// The avro writer to write the data into a datum.
std::unique_ptr<::avro::DataFileWriter<::avro::GenericDatum>> writer_;
+ // Arrow schema for data conversion (C API format)
Review Comment:
BTW, could you help reorder these fields based on their creation order?
##########
src/iceberg/avro/avro_writer.cc:
##########
@@ -99,6 +112,12 @@ class AvroWriter::Impl {
std::shared_ptr<::avro::ValidSchema> avro_schema_;
// The avro writer to write the data into a datum.
std::unique_ptr<::avro::DataFileWriter<::avro::GenericDatum>> writer_;
+ // Arrow schema for data conversion (C API format)
Review Comment:
```suggestion
// Arrow schema to write data
```
##########
src/iceberg/avro/avro_writer.cc:
##########
@@ -67,22 +70,32 @@ class AvroWriter::Impl {
constexpr int64_t kDefaultBufferSize = 1024 * 1024;
ICEBERG_ASSIGN_OR_RAISE(auto output_stream,
CreateOutputStream(options, kDefaultBufferSize));
-
+ arrow_output_stream_ = output_stream->get_output_stream();
Review Comment:
Could you help delete `WriterContext` and its comment at line 57 above?
##########
src/iceberg/avro/avro_writer.cc:
##########
@@ -99,6 +112,12 @@ class AvroWriter::Impl {
std::shared_ptr<::avro::ValidSchema> avro_schema_;
// The avro writer to write the data into a datum.
std::unique_ptr<::avro::DataFileWriter<::avro::GenericDatum>> writer_;
+ // Arrow schema for data conversion (C API format)
+ ArrowSchema arrow_schema_;
+ // Reusable Avro datum for writing individual records
+ std::unique_ptr<::avro::GenericDatum> datum_;
+ // Arrow output stream for writing data to filesystem
Review Comment:
```suggestion
// Arrow output stream of the Avro file to write
```
##########
test/avro_test.cc:
##########
@@ -105,6 +106,44 @@ class AvroReaderTest : public TempFileTestBase {
ASSERT_FALSE(data.value().has_value());
}
+ void WriteAndVerify(std::shared_ptr<Schema> schema,
+ const std::string& expected_string) {
+ ArrowSchema arrow_c_schema;
+ ASSERT_THAT(ToArrowSchema(*schema, &arrow_c_schema), IsOk());
+
+ auto arrow_schema_result = ::arrow::ImportType(&arrow_c_schema);
+ ASSERT_TRUE(arrow_schema_result.ok());
+ auto arrow_schema = arrow_schema_result.ValueOrDie();
+
+ auto array_result = ::arrow::json::ArrayFromJSONString(arrow_schema, expected_string);
+ ASSERT_TRUE(array_result.ok());
+ auto array = array_result.ValueOrDie();
+
+ struct ArrowArray arrow_array;
+ auto export_result = ::arrow::ExportArray(*array, &arrow_array);
+ ASSERT_TRUE(export_result.ok());
+
+ auto writer_result = WriterFactoryRegistry::Open(
+ FileFormatType::kAvro,
+ {.path = temp_avro_file_, .schema = schema, .io = file_io_});
+ ASSERT_TRUE(writer_result.has_value());
+ auto writer = std::move(writer_result.value());
+ ASSERT_THAT(writer->Write(arrow_array), IsOk());
+ ASSERT_THAT(writer->Close(), IsOk());
+
+ auto file_info_result = local_fs_->GetFileInfo(temp_avro_file_);
+ ASSERT_TRUE(file_info_result.ok());
+ ASSERT_EQ(file_info_result->size(), writer->length().value());
+
+ auto reader_result = ReaderFactoryRegistry::Open(
+ FileFormatType::kAvro,
+ {.path = temp_avro_file_, .io = file_io_, .projection = schema});
Review Comment:
Please pass the file size to the reader option.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org
Re: [PR] feat: implement AvroWriter Write method [iceberg-cpp]
Posted by "nullccxsy (via GitHub)" <gi...@apache.org>.
nullccxsy commented on code in PR #204:
URL: https://github.com/apache/iceberg-cpp/pull/204#discussion_r2314088644
##########
src/iceberg/avro/avro_writer.cc:
##########
@@ -73,9 +76,22 @@ class AvroWriter::Impl {
return {};
}
- Status Write(ArrowArray /*data*/) {
- // TODO(xiao.dong) convert data and write to avro
- // total_bytes_+= written_bytes;
Review Comment:
how can we total_bytes?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org
Re: [PR] feat: implement AvroWriter Write method [iceberg-cpp]
Posted by "wgtmac (via GitHub)" <gi...@apache.org>.
wgtmac commented on code in PR #204:
URL: https://github.com/apache/iceberg-cpp/pull/204#discussion_r2313242194
##########
test/avro_test.cc:
##########
@@ -28,11 +27,14 @@
#include <avro/Generic.hh>
#include <avro/GenericDatum.hh>
#include <gtest/gtest.h>
+#include <nanoarrow/nanoarrow.hpp>
Review Comment:
See my comment below. We don't need nanoarrow api to create arrays.
##########
test/avro_test.cc:
##########
@@ -105,6 +107,30 @@ class AvroReaderTest : public TempFileTestBase {
ASSERT_FALSE(data.value().has_value());
}
+ void WriteAndVerify(std::shared_ptr<Schema> schema, const std::string& expected_string,
+ ArrowArray array) {
+ iceberg::WriterOptions options;
+ options.schema = schema;
+ options.path = temp_avro_file_;
+ options.io = file_io_;
+
+ auto writer_result =
+ iceberg::WriterFactoryRegistry::Open(iceberg::FileFormatType::kAvro, options);
Review Comment:
```suggestion
WriterFactoryRegistry::Open(FileFormatType::kAvro, options);
```
##########
src/iceberg/avro/avro_writer.cc:
##########
@@ -73,9 +76,22 @@ class AvroWriter::Impl {
return {};
}
- Status Write(ArrowArray /*data*/) {
- // TODO(xiao.dong) convert data and write to avro
- // total_bytes_+= written_bytes;
+ Status Write(ArrowArray data) {
+ ArrowSchema arrow_schema;
+ ICEBERG_RETURN_UNEXPECTED(ToArrowSchema(*write_schema_, &arrow_schema));
Review Comment:
Consider caching `ArrowSchema` in the `WriterContext` to avoid recreating it every time. This is an expensive operation.
##########
src/iceberg/avro/avro_writer.cc:
##########
@@ -73,9 +76,22 @@ class AvroWriter::Impl {
return {};
}
- Status Write(ArrowArray /*data*/) {
- // TODO(xiao.dong) convert data and write to avro
- // total_bytes_+= written_bytes;
+ Status Write(ArrowArray data) {
+ ArrowSchema arrow_schema;
+ ICEBERG_RETURN_UNEXPECTED(ToArrowSchema(*write_schema_, &arrow_schema));
+ auto import_result = ::arrow::ImportArray(&data, &arrow_schema);
+ if (!import_result.ok()) {
Review Comment:
Use `ICEBERG_ARROW_ASSIGN_OR_RETURN`
##########
test/avro_test.cc:
##########
@@ -105,6 +107,30 @@ class AvroReaderTest : public TempFileTestBase {
ASSERT_FALSE(data.value().has_value());
}
+ void WriteAndVerify(std::shared_ptr<Schema> schema, const std::string& expected_string,
+ ArrowArray array) {
+ iceberg::WriterOptions options;
+ options.schema = schema;
+ options.path = temp_avro_file_;
+ options.io = file_io_;
+
+ auto writer_result =
+ iceberg::WriterFactoryRegistry::Open(iceberg::FileFormatType::kAvro, options);
+ ASSERT_TRUE(writer_result.has_value());
+ auto writer = std::move(writer_result).value();
Review Comment:
```suggestion
auto writer = std::move(writer_result.value());
```
##########
test/avro_test.cc:
##########
@@ -161,4 +187,71 @@ TEST_F(AvroReaderTest, ReadWithBatchSize) {
ASSERT_NO_FATAL_FAILURE(VerifyExhausted(*reader));
}
+TEST_F(AvroReaderTest, AvroWriterBasicType) {
+ auto schema = std::make_shared<iceberg::Schema>(std::vector<SchemaField>{
+ SchemaField::MakeRequired(1, "name", std::make_shared<StringType>())});
+
+ ArrowSchema struct_schema;
+ ASSERT_THAT(ToArrowSchema(*schema, &struct_schema), IsOk());
+
+ ArrowArray array;
+ NANOARROW_THROW_NOT_OK(ArrowArrayInitFromSchema(&array, &struct_schema, nullptr));
+ NANOARROW_THROW_NOT_OK(ArrowArrayStartAppending(&array));
+
+ std::vector<std::string> str_values{"Hello", "世界", "nanoarrow"};
+ std::string expected_string = R"([["Hello"], ["世界"], ["nanoarrow"]])";
Review Comment:
You may use `::arrow::json::ArrayFromJsonString` to directly create an `::arrow::Array` and then use `::arrow::ExportArray` to transform it to `ArrowArray`. See related code from test files.
##########
test/avro_test.cc:
##########
@@ -105,6 +107,30 @@ class AvroReaderTest : public TempFileTestBase {
ASSERT_FALSE(data.value().has_value());
}
+ void WriteAndVerify(std::shared_ptr<Schema> schema, const std::string& expected_string,
+ ArrowArray array) {
+ iceberg::WriterOptions options;
Review Comment:
nit: use aggregate initialization like the way you created the reader.
##########
src/iceberg/avro/avro_writer.cc:
##########
@@ -73,9 +76,22 @@ class AvroWriter::Impl {
return {};
}
- Status Write(ArrowArray /*data*/) {
- // TODO(xiao.dong) convert data and write to avro
- // total_bytes_+= written_bytes;
Review Comment:
Please make sure `total_bytes_` is maintained properly and tested.
##########
src/iceberg/avro/avro_writer.cc:
##########
@@ -73,9 +76,22 @@ class AvroWriter::Impl {
return {};
}
- Status Write(ArrowArray /*data*/) {
- // TODO(xiao.dong) convert data and write to avro
- // total_bytes_+= written_bytes;
+ Status Write(ArrowArray data) {
+ ArrowSchema arrow_schema;
+ ICEBERG_RETURN_UNEXPECTED(ToArrowSchema(*write_schema_, &arrow_schema));
+ auto import_result = ::arrow::ImportArray(&data, &arrow_schema);
+ if (!import_result.ok()) {
+ std::cout << import_result.status() << std::endl;
+ return InvalidArgument("Failed to import ArrowArray: {}",
+ import_result.status().ToString());
+ }
+
+ auto arrow_array = import_result.ValueOrDie();
+ ::avro::GenericDatum datum(*avro_schema_);
Review Comment:
`GenericDatum` should be cached as well.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org
Re: [PR] feat: implement AvroWriter Write method [iceberg-cpp]
Posted by "wgtmac (via GitHub)" <gi...@apache.org>.
wgtmac commented on code in PR #204:
URL: https://github.com/apache/iceberg-cpp/pull/204#discussion_r2313391866
##########
src/iceberg/avro/avro_writer.cc:
##########
@@ -73,9 +76,22 @@ class AvroWriter::Impl {
return {};
Review Comment:
Good catch! Let's fix it in this PR too.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org
Re: [PR] feat: implement AvroWriter Write method [iceberg-cpp]
Posted by "nullccxsy (via GitHub)" <gi...@apache.org>.
nullccxsy commented on code in PR #204:
URL: https://github.com/apache/iceberg-cpp/pull/204#discussion_r2314094152
##########
src/iceberg/avro/avro_writer.cc:
##########
@@ -73,9 +76,22 @@ class AvroWriter::Impl {
return {};
Review Comment:
Here, the output_stream resource has been moved to writer_, so we shouldn't need to close it manually.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org
Re: [PR] feat: implement AvroWriter Write method [iceberg-cpp]
Posted by "HuaHuaY (via GitHub)" <gi...@apache.org>.
HuaHuaY commented on code in PR #204:
URL: https://github.com/apache/iceberg-cpp/pull/204#discussion_r2314799363
##########
src/iceberg/avro/avro_writer.cc:
##########
@@ -73,9 +76,22 @@ class AvroWriter::Impl {
return {};
Review Comment:
I have some errors in the explanation here. We need to save `output_stream_` in `AvroOutputStream` but not `AvroOutputStream` itself. `AvroOutputStream` is moved to writer_, but the `output_stream_` in it is a `shared_ptr` and it's not closed.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org
Re: [PR] feat: implement AvroWriter Write method [iceberg-cpp]
Posted by "zhjwpku (via GitHub)" <gi...@apache.org>.
zhjwpku commented on code in PR #204:
URL: https://github.com/apache/iceberg-cpp/pull/204#discussion_r2313300616
##########
src/iceberg/avro/avro_writer.cc:
##########
@@ -73,9 +76,22 @@ class AvroWriter::Impl {
return {};
}
- Status Write(ArrowArray /*data*/) {
- // TODO(xiao.dong) convert data and write to avro
- // total_bytes_+= written_bytes;
+ Status Write(ArrowArray data) {
+ ArrowSchema arrow_schema;
+ ICEBERG_RETURN_UNEXPECTED(ToArrowSchema(*write_schema_, &arrow_schema));
+ auto import_result = ::arrow::ImportArray(&data, &arrow_schema);
+ if (!import_result.ok()) {
+ std::cout << import_result.status() << std::endl;
Review Comment:
I think this is for debug purpose, so should be deleted.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org
Re: [PR] feat: implement AvroWriter Write method [iceberg-cpp]
Posted by "wgtmac (via GitHub)" <gi...@apache.org>.
wgtmac commented on code in PR #204:
URL: https://github.com/apache/iceberg-cpp/pull/204#discussion_r2313329203
##########
test/avro_test.cc:
##########
@@ -161,4 +187,71 @@ TEST_F(AvroReaderTest, ReadWithBatchSize) {
ASSERT_NO_FATAL_FAILURE(VerifyExhausted(*reader));
}
+TEST_F(AvroReaderTest, AvroWriterBasicType) {
+ auto schema = std::make_shared<iceberg::Schema>(std::vector<SchemaField>{
+ SchemaField::MakeRequired(1, "name", std::make_shared<StringType>())});
+
+ ArrowSchema struct_schema;
+ ASSERT_THAT(ToArrowSchema(*schema, &struct_schema), IsOk());
+
+ ArrowArray array;
+ NANOARROW_THROW_NOT_OK(ArrowArrayInitFromSchema(&array, &struct_schema, nullptr));
+ NANOARROW_THROW_NOT_OK(ArrowArrayStartAppending(&array));
+
+ std::vector<std::string> str_values{"Hello", "世界", "nanoarrow"};
+ std::string expected_string = R"([["Hello"], ["世界"], ["nanoarrow"]])";
Review Comment:
See https://github.com/apache/iceberg-cpp/pull/198/files#diff-47d6cca8c5afb86a1ac5a0d7306af8521a5cb2e9eaddd469b0b278287d6bc89a
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org
Re: [PR] feat: implement AvroWriter Write method [iceberg-cpp]
Posted by "wgtmac (via GitHub)" <gi...@apache.org>.
wgtmac commented on code in PR #204:
URL: https://github.com/apache/iceberg-cpp/pull/204#discussion_r2314112593
##########
src/iceberg/avro/avro_writer.cc:
##########
@@ -73,9 +76,22 @@ class AvroWriter::Impl {
return {};
}
- Status Write(ArrowArray /*data*/) {
- // TODO(xiao.dong) convert data and write to avro
- // total_bytes_+= written_bytes;
Review Comment:
You can call `AvroOutputStream::byteCount()` after closing the writer.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org
Re: [PR] feat: implement AvroWriter Write method [iceberg-cpp]
Posted by "zeroshade (via GitHub)" <gi...@apache.org>.
zeroshade merged PR #204:
URL: https://github.com/apache/iceberg-cpp/pull/204
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org