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 2018/01/10 14:35:11 UTC

[arrow] branch master updated: ARROW-1965: [GLib] Add garrow_array_builder_get_value_data_type()

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 1b0732c  ARROW-1965: [GLib] Add garrow_array_builder_get_value_data_type()
1b0732c is described below

commit 1b0732cde515f9ec9b42f98061f9204796c9e154
Author: Kouhei Sutou <ko...@clear-code.com>
AuthorDate: Wed Jan 10 23:34:47 2018 +0900

    ARROW-1965: [GLib] Add garrow_array_builder_get_value_data_type()
    
    garrow_array_builder_get_value_type() is also added for convenient.
    
    Author: Kouhei Sutou <ko...@clear-code.com>
    
    Closes #1456 from kou/glib-add-builder-get-value-type and squashes the following commits:
    
    5a4b1229 [Kouhei Sutou] [GLib] Add garrow_array_builder_get_value_data_type()
---
 c_glib/arrow-glib/array-builder.cpp |  34 ++++++++
 c_glib/arrow-glib/array-builder.h   |   4 +
 c_glib/test/test-array-builder.rb   | 156 ++++++++++++++++++++++++++++++++++++
 3 files changed, 194 insertions(+)

diff --git a/c_glib/arrow-glib/array-builder.cpp b/c_glib/arrow-glib/array-builder.cpp
index a5df681..7625bcd 100644
--- a/c_glib/arrow-glib/array-builder.cpp
+++ b/c_glib/arrow-glib/array-builder.cpp
@@ -24,6 +24,7 @@
 #include <arrow-glib/array-builder.hpp>
 #include <arrow-glib/data-type.hpp>
 #include <arrow-glib/error.hpp>
+#include <arrow-glib/type.hpp>
 
 template <typename BUILDER, typename VALUE>
 gboolean
@@ -328,6 +329,39 @@ garrow_array_builder_release_ownership(GArrowArrayBuilder *builder)
 }
 
 /**
+ * garrow_array_builder_get_value_data_type:
+ * @builder: A #GArrowArrayBuilder.
+ *
+ * Returns: (transfer full): The #GArrowDataType of the value of
+ *   the array builder.
+ *
+ * Since: 0.9.0
+ */
+GArrowDataType *
+garrow_array_builder_get_value_data_type(GArrowArrayBuilder *builder)
+{
+  auto arrow_builder = garrow_array_builder_get_raw(builder);
+  auto arrow_type = arrow_builder->type();
+  return garrow_data_type_new_raw(&arrow_type);
+}
+
+/**
+ * garrow_array_builder_get_value_type:
+ * @builder: A #GArrowArrayBuilder.
+ *
+ * Returns: The #GArrowType of the value of the array builder.
+ *
+ * Since: 0.9.0
+ */
+GArrowType
+garrow_array_builder_get_value_type(GArrowArrayBuilder *builder)
+{
+  auto arrow_builder = garrow_array_builder_get_raw(builder);
+  auto arrow_type = arrow_builder->type();
+  return garrow_type_from_raw(arrow_type->id());
+}
+
+/**
  * garrow_array_builder_finish:
  * @builder: A #GArrowArrayBuilder.
  * @error: (nullable): Return location for a #GError or %NULL.
diff --git a/c_glib/arrow-glib/array-builder.h b/c_glib/arrow-glib/array-builder.h
index 19dadb3..ea95f31 100644
--- a/c_glib/arrow-glib/array-builder.h
+++ b/c_glib/arrow-glib/array-builder.h
@@ -37,6 +37,10 @@ struct _GArrowArrayBuilderClass
 
 void garrow_array_builder_release_ownership(GArrowArrayBuilder *builder);
 
+GArrowDataType *
+garrow_array_builder_get_value_data_type(GArrowArrayBuilder *builder);
+GArrowType garrow_array_builder_get_value_type(GArrowArrayBuilder *builder);
+
 GArrowArray        *garrow_array_builder_finish   (GArrowArrayBuilder *builder,
                                                    GError **error);
 
diff --git a/c_glib/test/test-array-builder.rb b/c_glib/test/test-array-builder.rb
index 92976a4..a773131 100644
--- a/c_glib/test/test-array-builder.rb
+++ b/c_glib/test/test-array-builder.rb
@@ -76,6 +76,18 @@ module ArrayBuilderAppendNullsTests
   end
 end
 
+module ArrayBuilderValueTypeTests
+  def test_value_data_type
+    assert_equal(value_data_type,
+                 build_array(sample_values).value_data_type)
+  end
+
+  def test_value_type
+    assert_equal(value_data_type.id,
+                 build_array(sample_values).value_type)
+  end
+end
+
 class TestArrayBuilder < Test::Unit::TestCase
   include Helper::Buildable
   include Helper::Omittable
@@ -93,6 +105,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       Arrow::BooleanArrayBuilder.new
     end
 
+    def value_data_type
+      Arrow::BooleanDataType.new
+    end
+
     def builder_class_name
       "boolean-array-builder"
     end
@@ -101,6 +117,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       [true, false, true]
     end
 
+    sub_test_case("value type") do
+      include ArrayBuilderValueTypeTests
+    end
+
     sub_test_case("#append_values") do
       include ArrayBuilderAppendValuesTests
     end
@@ -115,6 +135,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       Arrow::IntArrayBuilder.new
     end
 
+    def value_data_type
+      Arrow::Int8DataType.new
+    end
+
     def builder_class_name
       "int-array-builder"
     end
@@ -123,6 +147,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       [1, -2, 3]
     end
 
+    sub_test_case("value type") do
+      include ArrayBuilderValueTypeTests
+    end
+
     sub_test_case("#append_values") do
       include ArrayBuilderAppendValuesTests
     end
@@ -137,6 +165,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       Arrow::UIntArrayBuilder.new
     end
 
+    def value_data_type
+      Arrow::UInt8DataType.new
+    end
+
     def builder_class_name
       "uint-array-builder"
     end
@@ -145,6 +177,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       [1, 2, 3]
     end
 
+    sub_test_case("value type") do
+      include ArrayBuilderValueTypeTests
+    end
+
     sub_test_case("#append_values") do
       include ArrayBuilderAppendValuesTests
     end
@@ -159,6 +195,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       Arrow::Int8ArrayBuilder.new
     end
 
+    def value_data_type
+      Arrow::Int8DataType.new
+    end
+
     def builder_class_name
       "int8-array-builder"
     end
@@ -167,6 +207,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       [1, -2, 3]
     end
 
+    sub_test_case("value type") do
+      include ArrayBuilderValueTypeTests
+    end
+
     sub_test_case("#append_values") do
       include ArrayBuilderAppendValuesTests
     end
@@ -181,6 +225,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       Arrow::UInt8ArrayBuilder.new
     end
 
+    def value_data_type
+      Arrow::UInt8DataType.new
+    end
+
     def builder_class_name
       "uint8-array-builder"
     end
@@ -189,6 +237,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       [1, 2, 3]
     end
 
+    sub_test_case("value type") do
+      include ArrayBuilderValueTypeTests
+    end
+
     sub_test_case("#append_values") do
       include ArrayBuilderAppendValuesTests
     end
@@ -203,6 +255,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       Arrow::Int16ArrayBuilder.new
     end
 
+    def value_data_type
+      Arrow::Int16DataType.new
+    end
+
     def builder_class_name
       "int16-array-builder"
     end
@@ -211,6 +267,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       [1, -2, 3]
     end
 
+    sub_test_case("value type") do
+      include ArrayBuilderValueTypeTests
+    end
+
     sub_test_case("#append_values") do
       include ArrayBuilderAppendValuesTests
     end
@@ -225,6 +285,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       Arrow::UInt16ArrayBuilder.new
     end
 
+    def value_data_type
+      Arrow::UInt16DataType.new
+    end
+
     def builder_class_name
       "uint16-array-builder"
     end
@@ -233,6 +297,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       [1, 2, 3]
     end
 
+    sub_test_case("value type") do
+      include ArrayBuilderValueTypeTests
+    end
+
     sub_test_case("#append_values") do
       include ArrayBuilderAppendValuesTests
     end
@@ -247,6 +315,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       Arrow::Int32ArrayBuilder.new
     end
 
+    def value_data_type
+      Arrow::Int32DataType.new
+    end
+
     def builder_class_name
       "int32-array-builder"
     end
@@ -255,6 +327,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       [1, -2, 3]
     end
 
+    sub_test_case("value type") do
+      include ArrayBuilderValueTypeTests
+    end
+
     sub_test_case("#append_values") do
       include ArrayBuilderAppendValuesTests
     end
@@ -269,6 +345,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       Arrow::UInt32ArrayBuilder.new
     end
 
+    def value_data_type
+      Arrow::UInt32DataType.new
+    end
+
     def builder_class_name
       "uint32-array-builder"
     end
@@ -277,6 +357,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       [1, 2, 3]
     end
 
+    sub_test_case("value type") do
+      include ArrayBuilderValueTypeTests
+    end
+
     sub_test_case("#append_values") do
       include ArrayBuilderAppendValuesTests
     end
@@ -291,6 +375,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       Arrow::Int64ArrayBuilder.new
     end
 
+    def value_data_type
+      Arrow::Int64DataType.new
+    end
+
     def builder_class_name
       "int64-array-builder"
     end
@@ -299,6 +387,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       [1, -2, 3]
     end
 
+    sub_test_case("value type") do
+      include ArrayBuilderValueTypeTests
+    end
+
     sub_test_case("#append_values") do
       include ArrayBuilderAppendValuesTests
     end
@@ -313,6 +405,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       Arrow::UInt64ArrayBuilder.new
     end
 
+    def value_data_type
+      Arrow::UInt64DataType.new
+    end
+
     def builder_class_name
       "uint64-array-builder"
     end
@@ -321,6 +417,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       [1, 2, 3]
     end
 
+    sub_test_case("value type") do
+      include ArrayBuilderValueTypeTests
+    end
+
     sub_test_case("#append_values") do
       include ArrayBuilderAppendValuesTests
     end
@@ -335,6 +435,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       Arrow::FloatArrayBuilder.new
     end
 
+    def value_data_type
+      Arrow::FloatDataType.new
+    end
+
     def builder_class_name
       "float-array-builder"
     end
@@ -343,6 +447,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       [1.1, -2.2, 3.3]
     end
 
+    sub_test_case("value type") do
+      include ArrayBuilderValueTypeTests
+    end
+
     sub_test_case("#append_values") do
       include ArrayBuilderAppendValuesTests
     end
@@ -357,6 +465,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       Arrow::DoubleArrayBuilder.new
     end
 
+    def value_data_type
+      Arrow::DoubleDataType.new
+    end
+
     def builder_class_name
       "double-array-builder"
     end
@@ -365,6 +477,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       [1.1, -2.2, 3.3]
     end
 
+    sub_test_case("value type") do
+      include ArrayBuilderValueTypeTests
+    end
+
     sub_test_case("#append_values") do
       include ArrayBuilderAppendValuesTests
     end
@@ -379,6 +495,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       Arrow::Date32ArrayBuilder.new
     end
 
+    def value_data_type
+      Arrow::Date32DataType.new
+    end
+
     def builder_class_name
       "date32-array-builder"
     end
@@ -391,6 +511,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       ]
     end
 
+    sub_test_case("value type") do
+      include ArrayBuilderValueTypeTests
+    end
+
     sub_test_case("#append_values") do
       include ArrayBuilderAppendValuesTests
     end
@@ -405,6 +529,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       Arrow::Date64ArrayBuilder.new
     end
 
+    def value_data_type
+      Arrow::Date64DataType.new
+    end
+
     def builder_class_name
       "date64-array-builder"
     end
@@ -417,6 +545,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       ]
     end
 
+    sub_test_case("value type") do
+      include ArrayBuilderValueTypeTests
+    end
+
     sub_test_case("#append_values") do
       include ArrayBuilderAppendValuesTests
     end
@@ -432,6 +564,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       Arrow::TimestampArrayBuilder.new(data_type)
     end
 
+    def value_data_type
+      Arrow::TimestampDataType.new(:milli)
+    end
+
     def builder_class_name
       "timestamp-array-builder"
     end
@@ -444,6 +580,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       ]
     end
 
+    sub_test_case("value type") do
+      include ArrayBuilderValueTypeTests
+    end
+
     sub_test_case("#append_values") do
       include ArrayBuilderAppendValuesTests
     end
@@ -459,6 +599,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       Arrow::Time32ArrayBuilder.new(data_type)
     end
 
+    def value_data_type
+      Arrow::Time32DataType.new(:second)
+    end
+
     def builder_class_name
       "time32-array-builder"
     end
@@ -471,6 +615,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       ]
     end
 
+    sub_test_case("value type") do
+      include ArrayBuilderValueTypeTests
+    end
+
     sub_test_case("#append_values") do
       include ArrayBuilderAppendValuesTests
     end
@@ -486,6 +634,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       Arrow::Time64ArrayBuilder.new(data_type)
     end
 
+    def value_data_type
+      Arrow::Time64DataType.new(:micro)
+    end
+
     def builder_class_name
       "time64-array-builder"
     end
@@ -498,6 +650,10 @@ class TestArrayBuilder < Test::Unit::TestCase
       ]
     end
 
+    sub_test_case("value type") do
+      include ArrayBuilderValueTypeTests
+    end
+
     sub_test_case("#append_values") do
       include ArrayBuilderAppendValuesTests
     end

-- 
To stop receiving notification emails like this one, please contact
['"commits@arrow.apache.org" <co...@arrow.apache.org>'].