ltree_plruby

Transform between ltree and Ruby Arrays for PL/Ruby

Overview

PackageVersionCategoryLicenseLanguage
plruby1.0LANGMITC
IDExtensionBinLibLoadCreateTrustRelocSchema
3160plrubyNoYesNoYesNoNopg_catalog
3161jsonb_plrubyNoYesNoYesNoYes-
3162hstore_plrubyNoYesNoYesNoYes-
3163ltree_plrubyNoYesNoYesNoYes-
Relatedltree plruby ltree plruby hstore_plruby jsonb_plruby

Extension control default_version is 1.0; shipped in the PL/Ruby 2.5.0 package.

Version

TypeRepoVersionPG VerPackageDeps
EXTPIGSTY1.01817161514plrubyltree, plruby
RPMPIGSTY2.5.01817161514plruby_$vruby-libs
DEBPIGSTY2.5.01817161514postgresql-$v-plruby-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0
el8.aarch64PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0
el9.x86_64PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0
el9.aarch64PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0
el10.x86_64PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0
el10.aarch64PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0
d12.x86_64PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0
d12.aarch64PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0
d13.x86_64PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0
d13.aarch64PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0
u22.x86_64PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0
u22.aarch64PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0
u24.x86_64PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0
u24.aarch64PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0
u26.x86_64PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0
u26.aarch64PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0PIGSTY 2.5.0

Build

You can build the RPM / DEB packages for plruby using pig build:

pig build pkg plruby         # build RPM / DEB packages

Install

You can install plruby directly. First, make sure the PGDG and PIGSTY repositories are added and enabled:

pig repo add pgsql -u          # Add repo and update cache

Install the extension using pig or apt/yum/dnf:

pig install plruby;          # Install for current active PG version
pig ext install -y plruby -v 18  # PG 18
pig ext install -y plruby -v 17  # PG 17
pig ext install -y plruby -v 16  # PG 16
pig ext install -y plruby -v 15  # PG 15
pig ext install -y plruby -v 14  # PG 14
dnf install -y plruby_18       # PG 18
dnf install -y plruby_17       # PG 17
dnf install -y plruby_16       # PG 16
dnf install -y plruby_15       # PG 15
dnf install -y plruby_14       # PG 14
apt install -y postgresql-18-plruby   # PG 18
apt install -y postgresql-17-plruby   # PG 17
apt install -y postgresql-16-plruby   # PG 16
apt install -y postgresql-15-plruby   # PG 15
apt install -y postgresql-14-plruby   # PG 14

Create Extension:

CREATE EXTENSION ltree_plruby CASCADE;  -- requires: ltree, plruby

Usage

Sources:

ltree_plruby installs a PostgreSQL transform between ltree paths and Ruby arrays for the plruby language. An ltree argument becomes an array of label strings, and an array of valid labels can be returned directly as an ltree value.

Install and Use the Transform

CREATE EXTENSION ltree;
CREATE EXTENSION plruby;
CREATE EXTENSION ltree_plruby;

CREATE FUNCTION ruby_append_label(ltree, text)
RETURNS ltree
LANGUAGE plruby
TRANSFORM FOR TYPE ltree
AS $$
  path = args[0]
  path << args[1]
  path
$$;

SELECT ruby_append_label('Top.Science'::ltree, 'Astronomy');

The transform is used only by functions that declare TRANSFORM FOR TYPE ltree.

Objects and Caveats

  • ltree_to_plruby(internal) implements SQL-to-Ruby conversion.
  • plruby_to_ltree(internal) implements Ruby-to-SQL conversion.
  • The extension version is 1.0, it requires both ltree and plruby, and it is relocatable.
  • Every returned array element must be a valid ltree label. PostgreSQL rejects invalid characters, empty labels, or paths that exceed ltree limits.
  • PL/Ruby remains untrusted. Installing this transform does not sandbox Ruby code or reduce the privileges required to create PL/Ruby functions.

Last Modified: 2026-08-09: update extension count (24575456)