Skip to content

Commit

Permalink
apacheGH-39933: [R] Fix pointer conversion to Python for latest retic…
Browse files Browse the repository at this point in the history
…ulate (apache#39969)

### Rationale for this change

The integration tests and documentation build is failing

### What changes are included in this PR?

Instead of relying on how reticulate converts an R external pointer, use a Python integer instead. We can't use an R integer (because they're only 32 bits); we can't use an R double (because the static cast to/from uintptr_t is a bit iffy); however, we can use Python to convert a string to Python integer. This is probably how I should have written it the first time but it didn't occur to me at the time.

### Are these changes tested?

Yes, covered by existing tests.

### Are there any user-facing changes?

No
* Closes: apache#39933

Lead-authored-by: Dewey Dunnington <dewey@fishandwhistle.net>
Co-authored-by: Dewey Dunnington <dewey@voltrondata.com>
Signed-off-by: Dewey Dunnington <dewey@voltrondata.com>
  • Loading branch information
paleolimbot committed Feb 7, 2024
1 parent 7e2fe4f commit 8ffc214
Showing 1 changed file with 5 additions and 11 deletions.
16 changes: 5 additions & 11 deletions r/R/python.R
Original file line number Diff line number Diff line change
Expand Up @@ -339,15 +339,9 @@ install_pyarrow <- function(envname = NULL, nightly = FALSE, ...) {
}

pyarrow_compatible_pointer <- function(ptr) {
pa <- reticulate::import("pyarrow")
version_string <- pa$`__version__`
# remove trailing .devXXX because it won't work with package_version()
pyarrow_version <- package_version(gsub("\\.dev.*?$", "", version_string))

# pyarrow pointers changed in version 7.0.0
if (pyarrow_version >= "7.0.0") {
return(ptr)
} else {
return(external_pointer_addr_double(ptr))
}
# GH-39933: Workaround because there is no built-in way to send a
# 64-bit integer to Python from an R object
py <- reticulate::import_builtins(convert = FALSE)
addr <- external_pointer_addr_character(ptr)
py$int(addr)
}

0 comments on commit 8ffc214

Please sign in to comment.