This is an automated email from the ASF dual-hosted git repository. wesm pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push: new e3db5da ARROW-1806: [GLib] Add garrow_record_batch_writer_write_table() e3db5da is described below commit e3db5da648bb74b3d325042e595ae856f1ad8f7f Author: Kouhei Sutou <k...@clear-code.com> AuthorDate: Tue Nov 14 11:17:59 2017 -0500 ARROW-1806: [GLib] Add garrow_record_batch_writer_write_table() Author: Kouhei Sutou <k...@clear-code.com> Closes #1315 from kou/glib-add-recored-batch-writer-write-table and squashes the following commits: 15743615 [Kouhei Sutou] [GLib] Add garrow_record_batch_writer_write_table() --- c_glib/arrow-glib/writer.cpp | 25 +++++++++++++++++++++++++ c_glib/arrow-glib/writer.h | 4 ++++ c_glib/test/test-file-writer.rb | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+) diff --git a/c_glib/arrow-glib/writer.cpp b/c_glib/arrow-glib/writer.cpp index 7d3b594..9bcda2d 100644 --- a/c_glib/arrow-glib/writer.cpp +++ b/c_glib/arrow-glib/writer.cpp @@ -25,6 +25,7 @@ #include <arrow-glib/error.hpp> #include <arrow-glib/record-batch.hpp> #include <arrow-glib/schema.hpp> +#include <arrow-glib/table.hpp> #include <arrow-glib/output-stream.hpp> @@ -166,6 +167,30 @@ garrow_record_batch_writer_write_record_batch(GArrowRecordBatchWriter *writer, } /** + * garrow_record_batch_writer_write_table: + * @writer: A #GArrowRecordBatchWriter. + * @table: The table to be written. + * @error: (nullable): Return locatipcn for a #GError or %NULL. + * + * Returns: %TRUE on success, %FALSE if there was an error. + * + * Since: 0.8.0 + */ +gboolean +garrow_record_batch_writer_write_table(GArrowRecordBatchWriter *writer, + GArrowTable *table, + GError **error) +{ + auto arrow_writer = garrow_record_batch_writer_get_raw(writer); + auto arrow_table = garrow_table_get_raw(table); + + auto status = arrow_writer->WriteTable(*arrow_table); + return garrow_error_check(error, + status, + "[record-batch-writer][write-table]"); +} + +/** * garrow_record_batch_writer_close: * @writer: A #GArrowRecordBatchWriter. * @error: (nullable): Return locatipcn for a #GError or %NULL. diff --git a/c_glib/arrow-glib/writer.h b/c_glib/arrow-glib/writer.h index 3853c2b..41b5f72 100644 --- a/c_glib/arrow-glib/writer.h +++ b/c_glib/arrow-glib/writer.h @@ -77,6 +77,10 @@ gboolean garrow_record_batch_writer_write_record_batch( GArrowRecordBatchWriter *writer, GArrowRecordBatch *record_batch, GError **error); +gboolean garrow_record_batch_writer_write_table( + GArrowRecordBatchWriter *writer, + GArrowTable *table, + GError **error); gboolean garrow_record_batch_writer_close( GArrowRecordBatchWriter *writer, GError **error); diff --git a/c_glib/test/test-file-writer.rb b/c_glib/test/test-file-writer.rb index 6ba5c7a..3de8e5c 100644 --- a/c_glib/test/test-file-writer.rb +++ b/c_glib/test/test-file-writer.rb @@ -16,6 +16,8 @@ # under the License. class TestFileWriter < Test::Unit::TestCase + include Helper::Buildable + def test_write_record_batch tempfile = Tempfile.open("arrow-ipc-file-writer") output = Arrow::FileOutputStream.new(tempfile.path, false) @@ -42,4 +44,35 @@ class TestFileWriter < Test::Unit::TestCase input.close end end + + def test_write_table + tempfile = Tempfile.open("arrow-ipc-file-writer") + output = Arrow::FileOutputStream.new(tempfile.path, false) + + array = build_boolean_array([true, false, true]) + field = Arrow::Field.new("enabled", Arrow::BooleanDataType.new) + schema = Arrow::Schema.new([field]) + column = Arrow::Column.new(field, array) + + begin + file_writer = Arrow::RecordBatchFileWriter.new(output, schema) + begin + table = Arrow::Table.new(schema, [column]) + file_writer.write_table(table) + ensure + file_writer.close + end + ensure + output.close + end + + input = Arrow::MemoryMappedInputStream.new(tempfile.path) + begin + file_reader = Arrow::RecordBatchFileReader.new(input) + assert_equal(Arrow::RecordBatch.new(schema, array.length, [array]), + file_reader.read_record_batch(0)) + ensure + input.close + end + end end -- To stop receiving notification emails like this one, please contact ['"commits@arrow.apache.org" <commits@arrow.apache.org>'].