Skip to content
hstore_plruby

hstore_plruby

plruby : Transform between hstore and Ruby Hashes for PL/Ruby

Overview

ID Extension Package Version Category License Language
3162
hstore_plruby
plruby
1.0
LANG
MIT
C
Attribute Has Binary Has Library Need Load Has DDL Relocatable Trusted
--s-d-r
No
Yes
No
Yes
yes
no
Relationships
Requires
hstore
plruby
See Also
hstore
plruby
jsonb_plruby
ltree_plruby
hstore_plperl
hstore_plpython3u
Siblings
plruby
jsonb_plruby
ltree_plruby

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

Packages

Type Repo Version PG Major Compatibility Package Pattern Dependencies
EXT
PIGSTY
1.0
18
17
16
15
14
plruby hstore, plruby
RPM
PIGSTY
2.5.0
18
17
16
15
14
plruby_$v ruby-libs
DEB
PIGSTY
2.5.0
18
17
16
15
14
postgresql-$v-plruby -
Linux / PG PG18 PG17 PG16 PG15 PG14
el8.x86_64
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
el8.aarch64
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
el9.x86_64
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
el9.aarch64
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
el10.x86_64
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
el10.aarch64
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
d12.x86_64
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
d12.aarch64
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
d13.x86_64
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
d13.aarch64
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
u22.x86_64
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
u22.aarch64
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
u24.x86_64
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
u24.aarch64
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
u26.x86_64
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
u26.aarch64
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0
PIGSTY 2.5.0

Source

pig build pkg plruby;		# build rpm/deb

Install

Make sure PGDG and PIGSTY repo available:

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

Install this extension with pig:

pig install plruby;		# install via package name, for the active PG version
pig install hstore_plruby;		# install by extension name, for the current active PG version

pig install hstore_plruby -v 18;   # install for PG 18
pig install hstore_plruby -v 17;   # install for PG 17
pig install hstore_plruby -v 16;   # install for PG 16
pig install hstore_plruby -v 15;   # install for PG 15
pig install hstore_plruby -v 14;   # install for PG 14

Create this extension with:

CREATE EXTENSION hstore_plruby CASCADE; -- requires hstore, plruby

Usage

Sources:

hstore_plruby installs a PostgreSQL transform between hstore and Ruby Hash values for the plruby language. Keys become Ruby strings and values become strings or nil; a compatible Ruby hash can be returned directly as hstore.

Install and Use the Transform

CREATE EXTENSION hstore;
CREATE EXTENSION plruby;
CREATE EXTENSION hstore_plruby;

CREATE FUNCTION ruby_add_hstore_key(hstore)
RETURNS hstore
LANGUAGE plruby
TRANSFORM FOR TYPE hstore
AS $$
  value = args[0]
  value['processed'] = 'yes'
  value
$$;

SELECT ruby_add_hstore_key('id=>42'::hstore);

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

Objects and Caveats

  • hstore_to_plruby(internal) implements SQL-to-Ruby conversion.
  • plruby_to_hstore(internal) implements Ruby-to-SQL conversion.
  • The extension version is 1.0, it requires both hstore and plruby, and it is relocatable.
  • hstore is a flat string-to-string-or-NULL map. It does not preserve nested Ruby hashes, arrays, or typed numeric values; use jsonb_plruby when those shapes matter.
  • PL/Ruby remains untrusted. Installing this transform does not sandbox Ruby code or reduce the privileges required to create PL/Ruby functions.
Last updated on