From eec786a7f7d1e28783b74f77e55c1d2862669f6e Mon Sep 17 00:00:00 2001
From: David Li
Date: Fri, 23 May 2025 10:31:52 +0900
Subject: [PATCH] MINOR: Fix broken Linux JNI build
I think this was due to apache/arrow@1229ceddd512aa5b3a601019ee3b4bae28cfa3e6.
---
ci/scripts/jni_build.sh | 4 ++++
ci/scripts/jni_manylinux_build.sh | 1 +
gandiva/src/main/cpp/jni_common.cc | 2 +-
3 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/ci/scripts/jni_build.sh b/ci/scripts/jni_build.sh
index aec6fc325c..083d56ec76 100755
--- a/ci/scripts/jni_build.sh
+++ b/ci/scripts/jni_build.sh
@@ -50,11 +50,15 @@ Darwin)
esac
: "${ARROW_JAVA_BUILD_TESTS:=${ARROW_BUILD_TESTS:-ON}}"
+: "${ARROW_VCPKG:=OFF}"
: "${CMAKE_BUILD_TYPE:=release}"
read -ra EXTRA_CMAKE_OPTIONS <<<"${JAVA_JNI_CMAKE_ARGS:-}"
+# Must set ARROW_VCPKG because upstream Findutf8proc.cmake checks that to
+# determine what to do
cmake \
-S "${source_dir}" \
-B "${build_dir}" \
+ -DARROW_VCPKG="${ARROW_VCPKG}" \
-DARROW_JAVA_JNI_ENABLE_DATASET="${ARROW_DATASET:-OFF}" \
-DARROW_JAVA_JNI_ENABLE_GANDIVA="${ARROW_GANDIVA:-OFF}" \
-DARROW_JAVA_JNI_ENABLE_ORC="${ARROW_ORC:-OFF}" \
diff --git a/ci/scripts/jni_manylinux_build.sh b/ci/scripts/jni_manylinux_build.sh
index a34ec0f420..9fed86da4c 100755
--- a/ci/scripts/jni_manylinux_build.sh
+++ b/ci/scripts/jni_manylinux_build.sh
@@ -71,6 +71,7 @@ export ARROW_GANDIVA
export ARROW_ORC
: "${ARROW_PARQUET:=ON}"
: "${ARROW_S3:=ON}"
+export ARROW_VCPKG=ON # influences jni_build.sh
: "${CMAKE_BUILD_TYPE:=release}"
: "${CMAKE_UNITY_BUILD:=ON}"
: "${VCPKG_ROOT:=/opt/vcpkg}"
diff --git a/gandiva/src/main/cpp/jni_common.cc b/gandiva/src/main/cpp/jni_common.cc
index 2851250072..ec4888a512 100644
--- a/gandiva/src/main/cpp/jni_common.cc
+++ b/gandiva/src/main/cpp/jni_common.cc
@@ -221,7 +221,7 @@ DataTypePtr ProtoTypeToDataType(const gandiva::types::ExtGandivaType& ext_type)
return arrow::date64();
case gandiva::types::DECIMAL:
// TODO: error handling
- return arrow::decimal(ext_type.precision(), ext_type.scale());
+ return arrow::decimal128(ext_type.precision(), ext_type.scale());
case gandiva::types::TIME32:
return ProtoTypeToTime32(ext_type);
case gandiva::types::TIME64: