Installation and troubleshooting
Source:vignettes/installation-and-troubleshooting.Rmd
installation-and-troubleshooting.RmdRequirements
polyglotSQL has a compiled Rust backend. To install from source you need:
- R >= 4.2
- Rust: cargo and rustc >= 1.88
- the
xzutility (to unpack the vendored dependencies; present on virtually every system)
No Rust is needed when installing a prebuilt binary (e.g. from CI artifacts or a binary repository).
Installing Rust
The recommended path on every platform is rustup:
Alternatives: brew install rust (macOS),
apt-get install cargo rustc (Debian/Ubuntu — check the
version!), the official Windows installer from https://forge.rust-lang.org/infra/other-installation-methods.html.
On Windows, the gnu toolchain targeting
x86_64-pc-windows-gnu is required for R; rustup installs it
with:
The package’s configure script checks the toolchain up
front and prints exactly what is missing (it never installs anything
itself).
Installing the package
# install.packages("remotes")
remotes::install_github("StrategicProjects/polyglot-sql-r")Offline / air-gapped builds
The source package ships all Rust dependencies as a vendored archive
(src/rust/vendor.tar.xz), and the build runs
cargo with --offline. Nothing is
downloaded during R CMD INSTALL — an internet
connection is only needed to obtain the package itself.
Build details you may care about
- Compilation uses at most 2 parallel jobs (CRAN policy).
- The Rust static library is linked into a single shared object; the installed package has no runtime dependency on cargo.
-
DEBUG=true R CMD INSTALL .produces a debug build (faster compile, slower runtime).
Troubleshooting
cargo: command not found / configure fails
Rust is not on the PATH R uses. After installing via
rustup, restart R so ~/.cargo/bin (added to your shell
profile) is visible, or add it manually:
Sys.setenv(PATH = paste0(Sys.getenv("PATH"), ":", path.expand("~/.cargo/bin")))
rustc >= 1.88 required
Distribution packages are often too old. Install via rustup, or
update with rustup update stable.
Windows: cannot find -lpolyglotsql or wrong target
Make sure the x86_64-pc-windows-gnu target is installed
(see above) and that you are using Rtools matching your R version.
Updating the embedded engine (for developers)
The upstream crate version is pinned in
src/rust/Cargo.toml and Cargo.lock, and its
sources are vendored. To upgrade:
then update Config/polyglotSQL/upstream in
DESCRIPTION, run the test suite, and check
polyglot_version() reports the new version.
Verifying an installation
library(polyglotSQL)
polyglot_version()
sql_transpile("SELECT IFNULL(a, b) FROM t", from = "mysql", to = "postgres")