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