This is an automated email from the ASF dual-hosted git repository.

kou pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/main by this push:
     new ac6b8ffc6a GH-44656: [GLib] Add GArrowBinaryViewDataType (#44659)
ac6b8ffc6a is described below

commit ac6b8ffc6a34e490a51760175313f06c99bccdbd
Author: Hiroyuki Sato <[email protected]>
AuthorDate: Thu Nov 7 11:46:34 2024 +0900

    GH-44656: [GLib] Add GArrowBinaryViewDataType (#44659)
    
    
    
    ### Rationale for this change
    
    The `arrow::BinaryViewType` has been introduced.
    GLib needs to be implemented as the `GArrowBinaryViewDataType`.
    
    ### What changes are included in this PR?
    
    Implement `GArrowBinaryViewDataType`.
    
    ### Are these changes tested?
    
    YES
    
    ### Are there any user-facing changes?
    
    NO
    
    * GitHub Issue: #44656
    
    Lead-authored-by: Hiroyuki Sato <[email protected]>
    Co-authored-by: Sutou Kouhei <[email protected]>
    Signed-off-by: Sutou Kouhei <[email protected]>
---
 c_glib/arrow-glib/basic-data-type.cpp     | 30 ++++++++++++++++++++++++++++
 c_glib/arrow-glib/basic-data-type.h       | 16 +++++++++++++++
 c_glib/arrow-glib/type.cpp                |  2 ++
 c_glib/arrow-glib/type.h                  |  6 +++++-
 c_glib/test/test-binary-view-data-type.rb | 33 +++++++++++++++++++++++++++++++
 5 files changed, 86 insertions(+), 1 deletion(-)

diff --git a/c_glib/arrow-glib/basic-data-type.cpp 
b/c_glib/arrow-glib/basic-data-type.cpp
index ecb537aa1f..f922106065 100644
--- a/c_glib/arrow-glib/basic-data-type.cpp
+++ b/c_glib/arrow-glib/basic-data-type.cpp
@@ -127,6 +127,8 @@ G_BEGIN_DECLS
  *
  * #GArrowExtensionDataTypeRegistry is a class to manage extension
  * data types.
+ *
+ * #GArrowBinaryViewDataType is a class for the binary view data type.
  */
 
 struct GArrowDataTypePrivate
@@ -2207,6 +2209,34 @@ 
garrow_extension_data_type_registry_lookup(GArrowExtensionDataTypeRegistry *regi
   return GARROW_EXTENSION_DATA_TYPE(data_type);
 }
 
+G_DEFINE_TYPE(GArrowBinaryViewDataType,
+              garrow_binary_view_data_type,
+              GARROW_TYPE_DATA_TYPE)
+
+static void
+garrow_binary_view_data_type_init(GArrowBinaryViewDataType *object)
+{
+}
+
+static void
+garrow_binary_view_data_type_class_init(GArrowBinaryViewDataTypeClass *klass)
+{
+}
+
+/**
+ * garrow_binary_view_data_type_new:
+ *
+ * Returns: The newly created binary view data type.
+ */
+GArrowBinaryViewDataType *
+garrow_binary_view_data_type_new(void)
+{
+  auto arrow_data_type = arrow::binary_view();
+  GArrowBinaryViewDataType *data_type = GARROW_BINARY_VIEW_DATA_TYPE(
+    g_object_new(GARROW_TYPE_BINARY_VIEW_DATA_TYPE, "data-type", 
&arrow_data_type, NULL));
+  return data_type;
+}
+
 G_END_DECLS
 
 GArrowDataType *
diff --git a/c_glib/arrow-glib/basic-data-type.h 
b/c_glib/arrow-glib/basic-data-type.h
index edbe15e2df..b98488211a 100644
--- a/c_glib/arrow-glib/basic-data-type.h
+++ b/c_glib/arrow-glib/basic-data-type.h
@@ -770,4 +770,20 @@ GArrowExtensionDataType *
 garrow_extension_data_type_registry_lookup(GArrowExtensionDataTypeRegistry 
*registry,
                                            const gchar *name);
 
+#define GARROW_TYPE_BINARY_VIEW_DATA_TYPE 
(garrow_binary_view_data_type_get_type())
+GARROW_AVAILABLE_IN_19_0
+G_DECLARE_DERIVABLE_TYPE(GArrowBinaryViewDataType,
+                         garrow_binary_view_data_type,
+                         GARROW,
+                         BINARY_VIEW_DATA_TYPE,
+                         GArrowDataType)
+struct _GArrowBinaryViewDataTypeClass
+{
+  GArrowDataTypeClass parent_class;
+};
+
+GARROW_AVAILABLE_IN_19_0
+GArrowBinaryViewDataType *
+garrow_binary_view_data_type_new(void);
+
 G_END_DECLS
diff --git a/c_glib/arrow-glib/type.cpp b/c_glib/arrow-glib/type.cpp
index 26d21f6d82..42372bc8dd 100644
--- a/c_glib/arrow-glib/type.cpp
+++ b/c_glib/arrow-glib/type.cpp
@@ -114,6 +114,8 @@ garrow_type_from_raw(arrow::Type::type type)
     return GARROW_TYPE_MONTH_DAY_NANO_INTERVAL;
   case arrow::Type::type::RUN_END_ENCODED:
     return GARROW_TYPE_RUN_END_ENCODED;
+  case arrow::Type::type::BINARY_VIEW:
+    return GARROW_TYPE_BINARY_VIEW;
   default:
     return GARROW_TYPE_NA;
   }
diff --git a/c_glib/arrow-glib/type.h b/c_glib/arrow-glib/type.h
index a817da4b94..f85cf3f2ee 100644
--- a/c_glib/arrow-glib/type.h
+++ b/c_glib/arrow-glib/type.h
@@ -70,6 +70,8 @@ G_BEGIN_DECLS
  * @GARROW_TYPE_LARGE_LIST: A list of some logical data type with 64-bit 
offsets.
  * @GARROW_TYPE_MONTH_DAY_NANO_INTERVAL: MONTH_DAY_NANO interval in SQL style.
  * @GARROW_TYPE_RUN_END_ENCODED: Run-end encoded data.
+ * @GARROW_TYPE_BINARY_VIEW: Bytes view type with 4-byte prefix and inline 
small string
+ *   optimization.
  * @GARROW_TYPE_DECIMAL32: Precision- and scale-based decimal
  * @GARROW_TYPE_DECIMAL64: Precision- and scale-based decimal
  *   type with 64-bit. Storage type depends on the parameters.
@@ -116,7 +118,9 @@ typedef enum {
   GARROW_TYPE_LARGE_LIST,
   GARROW_TYPE_MONTH_DAY_NANO_INTERVAL,
   GARROW_TYPE_RUN_END_ENCODED,
-  /* TODO: Remove = 43 when we add STRING_VIEW(39)..LARGE_LIST_VIEW(42). */
+  /* TODO: Remove = 40 when we add STRING_VIEW(39) */
+  GARROW_TYPE_BINARY_VIEW = 40,
+  /* TODO: Remove = 43 when we add LIST_VIEW(41)..LARGE_LIST_VIEW(42). */
   GARROW_TYPE_DECIMAL32 = 43,
   GARROW_TYPE_DECIMAL64,
 } GArrowType;
diff --git a/c_glib/test/test-binary-view-data-type.rb 
b/c_glib/test/test-binary-view-data-type.rb
new file mode 100644
index 0000000000..f143b62df4
--- /dev/null
+++ b/c_glib/test/test-binary-view-data-type.rb
@@ -0,0 +1,33 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+class TestBinaryViewDataType < Test::Unit::TestCase
+  def test_type
+    data_type = Arrow::BinaryViewDataType.new
+    assert_equal(Arrow::Type::BINARY_VIEW, data_type.id)
+  end
+
+  def test_name
+    data_type = Arrow::BinaryViewDataType.new
+    assert_equal("binary_view", data_type.name)
+  end
+
+  def test_to_s
+    data_type = Arrow::BinaryViewDataType.new
+    assert_equal("binary_view", data_type.to_s)
+  end
+end

Reply via email to