Skip to content

Commit e8d52e9

Browse files
committed
Merge remote-tracking branch 'origin/main' into fix/csv-delimiter
2 parents 52954d3 + 6d6f246 commit e8d52e9

145 files changed

Lines changed: 2661 additions & 925 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/CODEOWNERS

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,6 @@
2525
# Arrow Format
2626
# /format/
2727

28-
## Components
29-
/c_glib/ @kou
30-
# /cpp/
31-
/cpp/src/arrow/acero @westonpace
32-
/cpp/src/arrow/adapters/orc @wgtmac
33-
/cpp/src/arrow/engine @westonpace
34-
/cpp/src/arrow/flight/ @lidavidm
35-
/cpp/src/parquet @wgtmac
36-
/matlab/ @kevingurney @kou @sgilmore10
37-
/python/ @AlenkaF @raulcd @rok
38-
/python/pyarrow/_flight.pyx @lidavidm
39-
/python/pyarrow/**/*gandiva* @wjones127
40-
/r/ @jonkeane @thisisnic
41-
/ruby/ @kou
42-
4328
# Docs
4429
# /docs/
4530
# *.md
@@ -53,16 +38,41 @@
5338
.pre-commit-config.yaml @raulcd
5439
# .git*
5540

56-
# release scripts, archery etc.
41+
# Release scripts, archery etc.
5742
/ci/ @assignUser @jonkeane @kou @raulcd
5843
/dev/ @assignUser @jonkeane @kou @raulcd
5944
.dockerignore @raulcd
6045
.env @assignUser @jonkeane @kou @raulcd
6146
compose.yaml @assignUser @jonkeane @kou @raulcd
6247

63-
# R specific packaging tooling
48+
# Components
49+
50+
## C GLib
51+
/c_glib/ @kou
52+
53+
## C++
54+
/cpp/src/arrow/acero @westonpace
55+
/cpp/src/arrow/adapters/orc @wgtmac
56+
/cpp/src/arrow/engine @westonpace
57+
/cpp/src/arrow/flight/ @lidavidm
58+
/cpp/src/parquet @wgtmac
59+
60+
## MATLAB
61+
/.github/workflows/matlab.yml @kevingurney @sgilmore10
62+
/matlab/ @kevingurney @kou @sgilmore10
63+
64+
## Python
65+
/python/ @AlenkaF @raulcd @rok
66+
/python/pyarrow/_flight.pyx @lidavidm
67+
/python/pyarrow/**/*gandiva* @wjones127
68+
69+
## R
70+
/r/ @jonkeane @thisisnic
6471
/r/configure* @assignUser
6572
/r/Makefile @assignUser
6673
/r/PACKAGING.md @assignUser
6774
/r/tools/ @assignUser
6875
/r/.Rbuildignore @assignUser
76+
77+
## Ruby
78+
/ruby/ @kou

.github/workflows/cpp.yml

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,40 @@ jobs:
366366
- name: Setup MSYS2
367367
shell: msys2 {0}
368368
run: ci/scripts/msys2_setup.sh cpp
369+
- name: Pin MSYS2 packages
370+
# Temporary workaround for #49930: gcc 16 surfaces a cluster of 5
371+
# MINGW64 test failures. Pinning gcc-libs to 15.2 (and C++ packages
372+
# rebuilt against gcc-libs 16.1, for ABI compatibility) avoids all
373+
# of them. #49272/#49462 cover one (arrow-json-test); the other 4
374+
# (async-utility-test, threading-utility-test, dataset-writer-test
375+
# `bad_weak_ptr`, dataset-file-test) need separate fixes — see #49930.
376+
# Remove once all 5 pass on current upstream MSYS2 without these pins
377+
if: matrix.msystem_upper == 'MINGW64'
378+
shell: msys2 {0}
379+
run: |
380+
set -ex
381+
base="https://repo.msys2.org/mingw/mingw64"
382+
urls=(
383+
"$base/mingw-w64-x86_64-gcc-libs-15.2.0-14-any.pkg.tar.zst"
384+
"$base/mingw-w64-x86_64-gcc-15.2.0-14-any.pkg.tar.zst"
385+
"$base/mingw-w64-x86_64-aws-crt-cpp-0.38.4-1-any.pkg.tar.zst"
386+
"$base/mingw-w64-x86_64-boost-libs-1.91.0-1-any.pkg.tar.zst"
387+
"$base/mingw-w64-x86_64-boost-1.91.0-1-any.pkg.tar.zst"
388+
"$base/mingw-w64-x86_64-ccache-4.13.2-1-any.pkg.tar.zst"
389+
"$base/mingw-w64-x86_64-clang-libs-22.1.4-1-any.pkg.tar.zst"
390+
"$base/mingw-w64-x86_64-clang-22.1.4-1-any.pkg.tar.zst"
391+
"$base/mingw-w64-x86_64-cmake-4.3.2-2-any.pkg.tar.zst"
392+
"$base/mingw-w64-x86_64-icu-78.3-1-any.pkg.tar.zst"
393+
"$base/mingw-w64-x86_64-llvm-libs-22.1.4-1-any.pkg.tar.zst"
394+
"$base/mingw-w64-x86_64-llvm-tools-22.1.4-1-any.pkg.tar.zst"
395+
"$base/mingw-w64-x86_64-llvm-22.1.4-1-any.pkg.tar.zst"
396+
"$base/mingw-w64-x86_64-tbb-2022.3.0-1-any.pkg.tar.zst"
397+
"$base/mingw-w64-x86_64-thrift-0.22.0-1-any.pkg.tar.zst"
398+
"$base/mingw-w64-x86_64-zstd-1.5.7-1-any.pkg.tar.zst"
399+
"$base/mingw-w64-x86_64-gflags-2.2.2-7-any.pkg.tar.zst"
400+
"$base/mingw-w64-x86_64-aws-sdk-cpp-1.11.479-1-any.pkg.tar.zst"
401+
)
402+
pacman -U --noconfirm "${urls[@]}"
369403
- name: Cache ccache
370404
uses: actions/cache@v5
371405
with:
@@ -386,12 +420,13 @@ jobs:
386420
# https://github.com/apache/arrow/issues/48593
387421
ci/scripts/download_tz_database.sh
388422
- name: Download MinIO
423+
# Match the version pinned in ci/scripts/install_minio.sh.
389424
shell: msys2 {0}
390425
run: |
391426
mkdir -p /usr/local/bin
392427
wget \
393428
--output-document /usr/local/bin/minio.exe \
394-
https://dl.min.io/server/minio/release/windows-amd64/archive/minio.RELEASE.2024-09-13T20-26-02Z
429+
https://dl.min.io/server/minio/release/windows-amd64/archive/minio.RELEASE.2025-01-20T14-49-07Z
395430
chmod +x /usr/local/bin/minio.exe
396431
- name: Set up Python
397432
uses: actions/setup-python@v6

.github/workflows/issue_bot.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,19 @@ jobs:
5151
`Thanks for your report! The ${component} implementation has moved to https://github.com/apache/${repo}.\n\n` +
5252
`This issue has been closed automatically - please open a new issue there.`;
5353
54+
let component_to_prefix = (component) => {
55+
const prefix_overrides = {
56+
"Continuous Integration": "CI",
57+
"Developer Tools": "Dev",
58+
"Documentation": "Docs",
59+
};
60+
return prefix_overrides[component] || component;
61+
};
62+
63+
let title_has_prefix = (title, prefix) => {
64+
return title.includes(`[${prefix}]`);
65+
};
66+
5467
let split_body = context.payload.issue.body.split('### Component(s)');
5568
if (split_body.length != 2) throw new Error('No components found!');
5669
@@ -104,6 +117,30 @@ jobs:
104117
105118
if (component_labels.length == 0) throw new Error('No components found!');
106119
120+
let component_prefixes = component_labels.map(
121+
label => component_to_prefix(label.substring("Component: ".length))
122+
);
123+
124+
let issue_title = context.payload.issue.title.trimStart();
125+
126+
let missing_prefixes = component_prefixes.filter(
127+
prefix => !title_has_prefix(issue_title, prefix)
128+
);
129+
130+
let missing_title_prefix = missing_prefixes
131+
.map(prefix => `[${prefix}]`)
132+
.join("");
133+
134+
if (missing_title_prefix) {
135+
let title_separator = issue_title.startsWith("[") ? "" : " ";
136+
await github.rest.issues.update({
137+
"owner": context.repo.owner,
138+
"repo": context.repo.repo,
139+
"issue_number": context.payload.issue.number,
140+
"title": missing_title_prefix + title_separator + issue_title,
141+
});
142+
}
143+
107144
await github.rest.issues.setLabels({
108145
"owner": context.repo.owner,
109146
"repo": context.repo.repo,

.github/workflows/r.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ jobs:
7070
strategy:
7171
fail-fast: false
7272
matrix:
73-
r: ["4.4"]
73+
r: ["4.6"]
7474
ubuntu: [24.04]
7575
force-tests: ["true"]
7676
env:

.github/workflows/r_extra.yml

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -129,34 +129,21 @@ jobs:
129129
image: r
130130
runs-on: ubuntu-latest
131131
title: Rhub
132-
# Disabled: rhub/ubuntu-gcc12 image uses GCC 12 but CRAN now uses GCC 15.
133-
# See https://github.com/apache/arrow/issues/49737
134-
# Re-enable once r-hub/containers provides a GCC 15 image (#49738).
135-
# - envs:
136-
# - R_CUSTOM_CCACHE=true
137-
# - R_IMAGE=ubuntu-gcc12
138-
# - R_ORG=rhub
139-
# image: r
140-
# runs-on: ubuntu-latest
141-
# title: Rhub GCC 12
142-
# Disabled: rhub/gcc13 image uses GCC 13 but CRAN now uses GCC 15.
143-
# See https://github.com/apache/arrow/issues/49737
144-
# Re-enable once r-hub/containers provides a GCC 15 image (#49738).
145-
# - envs:
146-
# - R_IMAGE=gcc13
147-
# - R_ORG=rhub
148-
# image: r
149-
# runs-on: ubuntu-latest
150-
# run-options: >-
151-
# -e INSTALL_ARGS=--use-LTO
152-
# title: Rhub GCC 13 with LTO
132+
- envs:
133+
- R_IMAGE=ubuntu-gcc15
134+
- R_ORG=rhub
135+
image: r
136+
runs-on: ubuntu-latest
137+
run-options: >-
138+
-e INSTALL_ARGS=--use-LTO
139+
title: Rhub GCC 15 with LTO
153140
- envs:
154141
- R_IMAGE=r-base
155142
- R_ORG=rstudio
156-
- R_TAG=4.2-jammy
143+
- R_TAG=4.5-jammy
157144
image: r
158145
runs-on: ubuntu-latest
159-
title: RStudio R-Base 4.2
146+
title: RStudio R-Base 4.5
160147
env:
161148
ARCHERY_DEBUG: 1
162149
ARROW_ENABLE_TIMING_TESTS: OFF

.github/workflows/verify_rc.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ jobs:
232232
with:
233233
persist-credentials: false
234234
submodules: recursive
235-
- uses: conda-incubator/setup-miniconda@835234971496cad1653abb28a638a281cf32541f # v3.2.0
235+
- uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4.0.1
236236
- name: Install System Dependencies
237237
run: |
238238
choco install --no-progress --yes boost-msvc-14.1

c_glib/arrow-glib/basic-data-type.cpp

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,9 @@ G_BEGIN_DECLS
131131
* #GArrowExtensionDataType is a base class for user-defined extension
132132
* data types.
133133
*
134+
* #GArrowUnknownExtensionDataType is a class for unknown extension
135+
* data types.
136+
*
134137
* #GArrowExtensionDataTypeRegistry is a class to manage extension
135138
* data types.
136139
*
@@ -2080,6 +2083,20 @@ namespace garrow {
20802083

20812084
G_BEGIN_DECLS
20822085

2086+
G_DEFINE_TYPE(GArrowUnknownExtensionDataType,
2087+
garrow_unknown_extension_data_type,
2088+
GARROW_TYPE_EXTENSION_DATA_TYPE)
2089+
2090+
static void
2091+
garrow_unknown_extension_data_type_init(GArrowUnknownExtensionDataType *object)
2092+
{
2093+
}
2094+
2095+
static void
2096+
garrow_unknown_extension_data_type_class_init(GArrowUnknownExtensionDataTypeClass *klass)
2097+
{
2098+
}
2099+
20832100
typedef struct GArrowExtensionDataTypeRegistryPrivate_
20842101
{
20852102
std::shared_ptr<arrow::ExtensionTypeRegistry> registry;
@@ -2720,16 +2737,25 @@ garrow_data_type_new_raw(std::shared_ptr<arrow::DataType> *arrow_data_type)
27202737
type = GARROW_TYPE_DURATION_DATA_TYPE;
27212738
break;
27222739
case arrow::Type::type::EXTENSION:
2740+
type = GARROW_TYPE_UNKNOWN_EXTENSION_DATA_TYPE;
27232741
{
2724-
auto g_extension_data_type =
2725-
std::static_pointer_cast<garrow::GExtensionType>(*arrow_data_type);
2726-
if (g_extension_data_type) {
2727-
auto garrow_data_type = g_extension_data_type->garrow_data_type();
2728-
g_object_ref(garrow_data_type);
2729-
return GARROW_DATA_TYPE(garrow_data_type);
2742+
auto arrow_extension_data_type =
2743+
std::static_pointer_cast<arrow::ExtensionType>(*arrow_data_type);
2744+
auto name = arrow_extension_data_type->extension_name();
2745+
if (name == "arrow.fixed_shape_tensor") {
2746+
type = GARROW_TYPE_FIXED_SHAPE_TENSOR_DATA_TYPE;
2747+
} else if (name == "arrow.uuid") {
2748+
type = GARROW_TYPE_UUID_DATA_TYPE;
2749+
} else {
2750+
auto g_extension_data_type =
2751+
std::dynamic_pointer_cast<garrow::GExtensionType>(*arrow_data_type);
2752+
if (g_extension_data_type) {
2753+
auto garrow_data_type = g_extension_data_type->garrow_data_type();
2754+
g_object_ref(garrow_data_type);
2755+
return GARROW_DATA_TYPE(garrow_data_type);
2756+
}
27302757
}
27312758
}
2732-
type = GARROW_TYPE_EXTENSION_DATA_TYPE;
27332759
break;
27342760
case arrow::Type::type::FIXED_SIZE_LIST:
27352761
type = GARROW_TYPE_FIXED_SIZE_LIST_DATA_TYPE;

c_glib/arrow-glib/basic-data-type.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -758,6 +758,19 @@ GArrowChunkedArray *
758758
garrow_extension_data_type_wrap_chunked_array(GArrowExtensionDataType *data_type,
759759
GArrowChunkedArray *storage);
760760

761+
#define GARROW_TYPE_UNKNOWN_EXTENSION_DATA_TYPE \
762+
(garrow_unknown_extension_data_type_get_type())
763+
GARROW_AVAILABLE_IN_25_0
764+
G_DECLARE_DERIVABLE_TYPE(GArrowUnknownExtensionDataType,
765+
garrow_unknown_extension_data_type,
766+
GARROW,
767+
UNKNOWN_EXTENSION_DATA_TYPE,
768+
GArrowExtensionDataType)
769+
struct _GArrowUnknownExtensionDataTypeClass
770+
{
771+
GArrowExtensionDataTypeClass parent_class;
772+
};
773+
761774
#define GARROW_TYPE_EXTENSION_DATA_TYPE_REGISTRY \
762775
(garrow_extension_data_type_registry_get_type())
763776
GARROW_AVAILABLE_IN_3_0

c_glib/test/test-fixed-shape-tensor-data-type.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,9 @@ def test_mismatch_dim_names_size
104104
assert_equal(message,
105105
error.message.lines.first.chomp)
106106
end
107+
108+
def test_converted_from_cpp
109+
schema = Arrow::Schema.new([Arrow::Field.new("tensor", @data_type)])
110+
assert_equal(@data_type, schema.fields[0].data_type)
111+
end
107112
end

c_glib/test/test-uuid-data-type.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,9 @@ def test_name
3232
def test_to_s
3333
assert_equal("extension<arrow.uuid>", @data_type.to_s)
3434
end
35+
36+
def test_converted_from_cpp
37+
schema = Arrow::Schema.new([Arrow::Field.new("uuid", @data_type)])
38+
assert_equal(@data_type, schema.fields[0].data_type)
39+
end
3540
end

0 commit comments

Comments
 (0)