From cd66ce135813afac0401cd3691cd03f03e56ee2f Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Tue, 24 Mar 2026 12:10:32 +0000 Subject: [PATCH 1/4] GH-49529: [R] CI job shows NOTE due to "non-API call" Rf_findVarInFrame (#49530) ### Rationale for this change CI job shows NOTE due to "non-API call" Rf_findVarInFrame ### What changes are included in this PR? Remove non-API calls to doesn't come up on CRAN notes ### Are these changes tested? I'll do some CI testing ### Are there any user-facing changes? No ### AI use Basically all of this, with Claude Opus 4.5 but I did ask multiple questions on the reasoning behind the changes and alternatives - don't understand 100% but looks reasonable to me * GitHub Issue: #49529 Authored-by: Nic Crane Signed-off-by: Nic Crane --- r/src/arrow_cpp11.h | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/r/src/arrow_cpp11.h b/r/src/arrow_cpp11.h index f44fd635fdef..149c6eb4b36a 100644 --- a/r/src/arrow_cpp11.h +++ b/r/src/arrow_cpp11.h @@ -39,17 +39,6 @@ #define ARROW_R_DCHECK(EXPR) #endif -#if (R_VERSION < R_Version(3, 5, 0)) -#define LOGICAL_RO(x) ((const int*)LOGICAL(x)) -#define INTEGER_RO(x) ((const int*)INTEGER(x)) -#define REAL_RO(x) ((const double*)REAL(x)) -#define COMPLEX_RO(x) ((const Rcomplex*)COMPLEX(x)) -#define STRING_PTR_RO(x) ((const SEXP*)STRING_PTR(x)) -#define RAW_RO(x) ((const Rbyte*)RAW(x)) -#define DATAPTR_RO(x) ((const void*)STRING_PTR(x)) -#define DATAPTR(x) (void*)STRING_PTR(x) -#endif - // R_altrep_class_name and R_altrep_class_package don't exist before R 4.6 #if R_VERSION < R_Version(4, 6, 0) inline SEXP R_altrep_class_name(SEXP x) { @@ -220,8 +209,12 @@ Pointer r6_to_pointer(SEXP self) { cpp11::stop("Invalid R object for %s, must be an ArrowObject", type_name.c_str()); } +#if R_VERSION >= R_Version(4, 5, 0) + SEXP xp = R_getVarEx(arrow::r::symbols::xp, self, FALSE, R_UnboundValue); +#else SEXP xp = Rf_findVarInFrame(self, arrow::r::symbols::xp); - if (xp == R_NilValue) { +#endif + if (xp == R_UnboundValue || xp == R_NilValue) { cpp11::stop("Invalid: self$`.:xp:.` is NULL"); } @@ -235,7 +228,11 @@ Pointer r6_to_pointer(SEXP self) { template void r6_reset_pointer(SEXP r6) { +#if R_VERSION >= R_Version(4, 5, 0) + SEXP xp = R_getVarEx(arrow::r::symbols::xp, r6, FALSE, R_UnboundValue); +#else SEXP xp = Rf_findVarInFrame(r6, arrow::r::symbols::xp); +#endif void* p = R_ExternalPtrAddr(xp); if (p != nullptr) { delete reinterpret_cast*>(p); From 0098a6fa7a94b398350de79e91b0334328ecde0d Mon Sep 17 00:00:00 2001 From: Jonathan Keane Date: Tue, 24 Mar 2026 05:13:04 -0700 Subject: [PATCH 2/4] GH-49578: [CI][R] gcc sanitizer failure (#49581) ### Rationale for this change Resolve the crossbow failure, I've already created an issue upstream ### What changes are included in this PR? Skipping a test under sanitization ### Are these changes tested? They are the tests ### Are there any user-facing changes? No * GitHub Issue: #49578 Authored-by: Jonathan Keane Signed-off-by: Nic Crane --- r/tests/testthat/test-dplyr-mutate.R | 3 +++ 1 file changed, 3 insertions(+) diff --git a/r/tests/testthat/test-dplyr-mutate.R b/r/tests/testthat/test-dplyr-mutate.R index e9a52c60e876..3e116a1012ca 100644 --- a/r/tests/testthat/test-dplyr-mutate.R +++ b/r/tests/testthat/test-dplyr-mutate.R @@ -152,6 +152,9 @@ test_that("transmute() with unsupported arguments", { }) test_that("transmute() defuses dots arguments (ARROW-13262)", { + # There is a sanitizer issue when stringi compiles with bundled ICU + # see https://github.com/gagolews/stringi/issues/525 + skip_on_linux_devel() expect_snapshot( tbl |> Table$create() |> From 8679f1122e33a74a49ce088c269fce79a79d48c2 Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Tue, 24 Mar 2026 12:31:46 +0000 Subject: [PATCH 3/4] Update NEWS.md for 23.0.1.X-r releases --- r/NEWS.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/r/NEWS.md b/r/NEWS.md index 333cf77261ae..c5cab1cf8227 100644 --- a/r/NEWS.md +++ b/r/NEWS.md @@ -17,9 +17,17 @@ under the License. --> +# arrow 23.0.1.2 + +## Minor improvements and fixes + +- Update use of internal function for non-API call CRAN requirements (#49530) + # arrow 23.0.1.1 -- More robust against malignant libtools +## Minor improvements and fixes + +- Refine checks for ensuring building with macOS libtool instead of GNU libtool (#49370) # arrow 23.0.1 From 3a44ee97d427752e36ab5fe831fbc6b32f8bb38e Mon Sep 17 00:00:00 2001 From: Nic Crane Date: Tue, 24 Mar 2026 12:56:57 +0000 Subject: [PATCH 4/4] bump package version --- r/DESCRIPTION | 2 +- r/man/read_json_arrow.Rd | 2 +- r/man/schema.Rd | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/r/DESCRIPTION b/r/DESCRIPTION index 82a9b620ddea..8d101d66c806 100644 --- a/r/DESCRIPTION +++ b/r/DESCRIPTION @@ -1,6 +1,6 @@ Package: arrow Title: Integration to 'Apache' 'Arrow' -Version: 23.0.1.1 +Version: 23.0.1.2 Authors@R: c( person("Neal", "Richardson", email = "neal.p.richardson@gmail.com", role = c("aut")), person("Ian", "Cook", email = "ianmcook@gmail.com", role = c("aut")), diff --git a/r/man/read_json_arrow.Rd b/r/man/read_json_arrow.Rd index b809a63bcc6f..abf6b8fc44a8 100644 --- a/r/man/read_json_arrow.Rd +++ b/r/man/read_json_arrow.Rd @@ -54,7 +54,7 @@ If \code{schema} is not provided, Arrow data types are inferred from the data: \item JSON numbers convert to \code{\link[=int64]{int64()}}, falling back to \code{\link[=float64]{float64()}} if a non-integer is encountered. \item JSON strings of the kind "YYYY-MM-DD" and "YYYY-MM-DD hh:mm:ss" convert to \code{\link[=timestamp]{timestamp(unit = "s")}}, falling back to \code{\link[=utf8]{utf8()}} if a conversion error occurs. -\item JSON arrays convert to a \code{\link[=list_of]{list_of()}} type, and inference proceeds recursively on the JSON arrays' values. +\item JSON arrays convert to a \code{\link[vctrs:list_of]{vctrs::list_of()}} type, and inference proceeds recursively on the JSON arrays' values. \item Nested JSON objects convert to a \code{\link[=struct]{struct()}} type, and inference proceeds recursively on the JSON objects' values. } diff --git a/r/man/schema.Rd b/r/man/schema.Rd index 65ab2eea0d27..ff77a05d84aa 100644 --- a/r/man/schema.Rd +++ b/r/man/schema.Rd @@ -7,7 +7,7 @@ schema(...) } \arguments{ -\item{...}{\link[=field]{fields}, field name/\link[=data-type]{data type} pairs (or a list of), or object from which to extract +\item{...}{\link[vctrs:fields]{fields}, field name/\link[=data-type]{data type} pairs (or a list of), or object from which to extract a schema} } \description{