You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ko...@apache.org on 2019/02/01 20:51:39 UTC
[arrow] branch master updated: ARROW-4235: [GLib] Use
"column_builder" in GArrowRecordBatchBuilder
This is an automated email from the ASF dual-hosted git repository.
kou 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 fb11322 ARROW-4235: [GLib] Use "column_builder" in GArrowRecordBatchBuilder
fb11322 is described below
commit fb113225387be68e268d585c7216d21871a7ed62
Author: Yosuke Shiro <yo...@gmail.com>
AuthorDate: Sat Feb 2 05:51:11 2019 +0900
ARROW-4235: [GLib] Use "column_builder" in GArrowRecordBatchBuilder
Author: Yosuke Shiro <yo...@gmail.com>
Closes #3540 from shiro615/glib-use-column-builder and squashes the following commits:
a1741ccd <Yosuke Shiro> Use column_builders in GArrowRecordBatchBuilderPrivate
23021ae7 <Yosuke Shiro> Add garrow_record_batch_builder_get_n_columns()
fc388b7f <Yosuke Shiro> Use garrow_record_batch_builder_get_column_builder() in garrow_record_batch_builder_get_field()
03b681d8 <Yosuke Shiro> Add test case for column_builders
60928755 <Yosuke Shiro> Make public column_builders
1680c663 <Yosuke Shiro> Add garrow_record_batch_builder_get_column_builder()
---
c_glib/arrow-glib/table-builder.cpp | 56 ++++++++++++++++++++----
c_glib/arrow-glib/table-builder.h | 13 ++++++
c_glib/test/test-record-batch-builder.rb | 18 ++++----
ruby/red-arrow/lib/arrow/record-batch-builder.rb | 17 ++++---
ruby/red-arrow/test/test-record-batch-builder.rb | 9 ++++
5 files changed, 86 insertions(+), 27 deletions(-)
diff --git a/c_glib/arrow-glib/table-builder.cpp b/c_glib/arrow-glib/table-builder.cpp
index e87314b..5e004a5 100644
--- a/c_glib/arrow-glib/table-builder.cpp
+++ b/c_glib/arrow-glib/table-builder.cpp
@@ -41,7 +41,7 @@ G_BEGIN_DECLS
typedef struct GArrowRecordBatchBuilderPrivate_ {
arrow::RecordBatchBuilder *record_batch_builder;
- GPtrArray *fields;
+ GPtrArray *column_builders;
} GArrowRecordBatchBuilderPrivate;
enum {
@@ -63,13 +63,13 @@ garrow_record_batch_builder_constructed(GObject *object)
{
auto priv = GARROW_RECORD_BATCH_BUILDER_GET_PRIVATE(object);
auto arrow_builder = priv->record_batch_builder;
- auto n_fields = arrow_builder->num_fields();
- priv->fields = g_ptr_array_new_full(n_fields, g_object_unref);
- for (int i = 0; i < n_fields; ++i) {
+ auto n_columns = arrow_builder->num_fields();
+ priv->column_builders = g_ptr_array_new_full(n_columns, g_object_unref);
+ for (int i = 0; i < n_columns; ++i) {
auto arrow_array_builder = arrow_builder->GetField(i);
auto array_builder = garrow_array_builder_new_raw(arrow_array_builder);
garrow_array_builder_release_ownership(array_builder);
- g_ptr_array_add(priv->fields, array_builder);
+ g_ptr_array_add(priv->column_builders, array_builder);
}
G_OBJECT_CLASS(garrow_record_batch_builder_parent_class)->constructed(object);
@@ -80,7 +80,7 @@ garrow_record_batch_builder_finalize(GObject *object)
{
auto priv = GARROW_RECORD_BATCH_BUILDER_GET_PRIVATE(object);
- g_ptr_array_free(priv->fields, TRUE);
+ g_ptr_array_free(priv->column_builders, TRUE);
delete priv->record_batch_builder;
G_OBJECT_CLASS(garrow_record_batch_builder_parent_class)->finalize(object);
@@ -223,10 +223,27 @@ garrow_record_batch_builder_get_schema(GArrowRecordBatchBuilder *builder)
* Returns: The number of fields.
*
* Since: 0.8.0
+ *
+ * Deprecated: 0.13.0:
+ * Use garrow_record_batch_builder_get_n_columns() instead.
*/
gint
garrow_record_batch_builder_get_n_fields(GArrowRecordBatchBuilder *builder)
{
+ return garrow_record_batch_builder_get_n_columns(builder);
+}
+
+/**
+ * garrow_record_batch_builder_get_n_columns:
+ * @builder: A #GArrowRecordBatchBuilder.
+ *
+ * Returns: The number of columns.
+ *
+ * Since: 0.13.0
+ */
+gint
+garrow_record_batch_builder_get_n_columns(GArrowRecordBatchBuilder *builder)
+{
auto arrow_builder = garrow_record_batch_builder_get_raw(builder);
return arrow_builder->num_fields();
}
@@ -241,23 +258,44 @@ garrow_record_batch_builder_get_n_fields(GArrowRecordBatchBuilder *builder)
* the `i`-th field on success, %NULL on out of index.
*
* Since: 0.8.0
+ *
+ * Deprecated: 0.13.0:
+ * Use garrow_record_batch_builder_get_column_builder() instead.
*/
GArrowArrayBuilder *
garrow_record_batch_builder_get_field(GArrowRecordBatchBuilder *builder,
gint i)
{
+ return garrow_record_batch_builder_get_column_builder(builder, i);
+}
+
+/**
+ * garrow_record_batch_builder_get_column_builder:
+ * @builder: A #GArrowRecordBatchBuilder.
+ * @i: The column index. If it's negative, index is counted backward
+ * from the end of the columns. `-1` means the last column.
+ *
+ * Returns: (transfer none) (nullable): The #GArrowArrayBuilder for
+ * the `i`-th column on success, %NULL on out of index.
+ *
+ * Since: 0.13.0
+ */
+GArrowArrayBuilder *
+garrow_record_batch_builder_get_column_builder(GArrowRecordBatchBuilder *builder,
+ gint i)
+{
auto priv = GARROW_RECORD_BATCH_BUILDER_GET_PRIVATE(builder);
if (i < 0) {
- i += priv->fields->len;
+ i += priv->column_builders->len;
}
if (i < 0) {
return NULL;
}
- if (static_cast<guint>(i) >= priv->fields->len) {
+ if (static_cast<guint>(i) >= priv->column_builders->len) {
return NULL;
}
- return GARROW_ARRAY_BUILDER(g_ptr_array_index(priv->fields, i));
+ return GARROW_ARRAY_BUILDER(g_ptr_array_index(priv->column_builders, i));
}
/**
diff --git a/c_glib/arrow-glib/table-builder.h b/c_glib/arrow-glib/table-builder.h
index d05525e..a767939 100644
--- a/c_glib/arrow-glib/table-builder.h
+++ b/c_glib/arrow-glib/table-builder.h
@@ -45,9 +45,22 @@ void garrow_record_batch_builder_set_initial_capacity(GArrowRecordBatchBuilder *
gint64 capacity);
GArrowSchema *garrow_record_batch_builder_get_schema(GArrowRecordBatchBuilder *builder);
+#ifndef GARROW_DISABLE_DEPRECATED
+GARROW_DEPRECATED_IN_0_13_FOR(garrow_record_batch_builder_get_n_columns)
gint garrow_record_batch_builder_get_n_fields(GArrowRecordBatchBuilder *builder);
+#endif
+GARROW_AVAILABLE_IN_0_13
+gint
+garrow_record_batch_builder_get_n_columns(GArrowRecordBatchBuilder *builder);
+#ifndef GARROW_DISABLE_DEPRECATED
+GARROW_DEPRECATED_IN_0_13_FOR(garrow_record_batch_builder_get_column_builder)
GArrowArrayBuilder *garrow_record_batch_builder_get_field(GArrowRecordBatchBuilder *builder,
gint i);
+#endif
+GARROW_AVAILABLE_IN_0_13
+GArrowArrayBuilder *
+garrow_record_batch_builder_get_column_builder(GArrowRecordBatchBuilder *builder,
+ gint i);
GArrowRecordBatch *garrow_record_batch_builder_flush(GArrowRecordBatchBuilder *builder,
GError **error);
diff --git a/c_glib/test/test-record-batch-builder.rb b/c_glib/test/test-record-batch-builder.rb
index 030cc78..ce8efdf 100644
--- a/c_glib/test/test-record-batch-builder.rb
+++ b/c_glib/test/test-record-batch-builder.rb
@@ -37,27 +37,27 @@ class TestRecordBatchBuilder < Test::Unit::TestCase
assert_equal(@schema, @builder.schema)
end
- def test_n_fields
- assert_equal(@fields.size, @builder.n_fields)
+ def test_n_columns
+ assert_equal(@fields.size, @builder.n_columns)
end
- sub_test_case("#get_field") do
+ sub_test_case("#get_column_builder") do
def test_valid
assert_equal(Arrow::BooleanArrayBuilder,
- @builder.get_field(0).class)
+ @builder.get_column_builder(0).class)
end
def test_negative
assert_equal(Arrow::Int32ArrayBuilder,
- @builder.get_field(-1).class)
+ @builder.get_column_builder(-1).class)
end
def test_too_negative
- assert_nil(@builder.get_field(-@fields.size - 1))
+ assert_nil(@builder.get_column_builder(-@fields.size - 1))
end
def test_too_large
- assert_nil(@builder.get_field(@fields.size))
+ assert_nil(@builder.get_column_builder(@fields.size))
end
end
@@ -68,7 +68,7 @@ class TestRecordBatchBuilder < Test::Unit::TestCase
"point" => build_int32_array([1, -1, 0]),
}
arrays.each_with_index do |(_, array), i|
- @builder.get_field(i).append_values(array.values, [])
+ @builder.get_column_builder(i).append_values(array.values, [])
end
assert_equal(build_record_batch(arrays),
@builder.flush)
@@ -78,7 +78,7 @@ class TestRecordBatchBuilder < Test::Unit::TestCase
"point" => build_int32_array([10, -10]),
}
arrays.each_with_index do |(_, array), i|
- @builder.get_field(i).append_values(array.values, [])
+ @builder.get_column_builder(i).append_values(array.values, [])
end
assert_equal(build_record_batch(arrays),
@builder.flush)
diff --git a/ruby/red-arrow/lib/arrow/record-batch-builder.rb b/ruby/red-arrow/lib/arrow/record-batch-builder.rb
index dba16b3..dc20312 100644
--- a/ruby/red-arrow/lib/arrow/record-batch-builder.rb
+++ b/ruby/red-arrow/lib/arrow/record-batch-builder.rb
@@ -65,7 +65,7 @@ module Arrow
# @since 0.12.0
def append_records(records)
- n = n_fields
+ n = n_columns
columns = n.times.collect do
[]
end
@@ -99,17 +99,16 @@ module Arrow
end
end
+ # @since 0.13.0
+ def column_builders
+ @column_builders ||= n_columns.times.collect do |i|
+ get_column_builder(i)
+ end
+ end
+
private
def resolve_name(name)
@name_to_index[name.to_s]
end
-
- # TODO: Make public with good name. Is column_builders good enough?
- # builders? sub_builders?
- def column_builders
- @column_builders ||= n_fields.times.collect do |i|
- get_field(i)
- end
- end
end
end
diff --git a/ruby/red-arrow/test/test-record-batch-builder.rb b/ruby/red-arrow/test/test-record-batch-builder.rb
index 7cd1f8c..988e020 100644
--- a/ruby/red-arrow/test/test-record-batch-builder.rb
+++ b/ruby/red-arrow/test/test-record-batch-builder.rb
@@ -112,5 +112,14 @@ class RecordBatchBuilderTest < Test::Unit::TestCase
arrays),
@builder.flush)
end
+
+ test("#column_builders") do
+ column_builders = [
+ @builder.get_column_builder(0),
+ @builder.get_column_builder(1),
+ ]
+ assert_equal(column_builders,
+ @builder.column_builders)
+ end
end
end