hstore_pllua
Hstore transform for Lua
Overview
| Package | Version | Category | License | Language |
|---|---|---|---|---|
pllua | 2.0.12 | LANG | MIT | C |
| ID | Extension | Bin | Lib | Load | Create | Trust | Reloc | Schema |
|---|---|---|---|---|---|---|---|---|
| 3020 | pllua | No | Yes | No | Yes | No | No | pg_catalog |
| 3021 | hstore_pllua | No | Yes | No | Yes | No | Yes | - |
| 3030 | plluau | No | Yes | No | Yes | No | No | pg_catalog |
| 3031 | hstore_plluau | No | Yes | No | Yes | No | Yes | pg_catalog |
| Related | hstore pllua hstore_plperl hstore_plperlu hstore_plpython3u plpgsql |
|---|
missing pg12-15 on el.aarch64
Version
| Type | Repo | Version | PG Ver | Package | Deps |
|---|---|---|---|---|---|
| EXT | PGDG | 2.0.12 | 1817161514 | pllua | hstore, pllua |
| DEB | PGDG | 2.0.12 | 1817161514 | postgresql-$v-pllua | - |
| OS / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PGDG MISS | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.11 | PGDG 2.0.11 |
| el8.aarch64 | PGDG MISS | PGDG 2.0.12 | PGDG 2.0.12 | PGDG MISS | PGDG MISS |
| el9.x86_64 | PGDG MISS | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.11 | PGDG 2.0.11 |
| el9.aarch64 | PGDG MISS | PGDG 2.0.12 | PGDG 2.0.12 | PGDG MISS | PGDG MISS |
| el10.x86_64 | PGDG MISS | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 |
| el10.aarch64 | PGDG MISS | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 |
| d12.x86_64 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 |
| d12.aarch64 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 |
| d13.x86_64 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 |
| d13.aarch64 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 |
| u22.x86_64 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 |
| u22.aarch64 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 |
| u24.x86_64 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 |
| u24.aarch64 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 | PGDG 2.0.12 |
Install
You can install pllua directly. First, make sure the PGDG repository is added and enabled:
pig repo add pgdg -u # Add PGDG repo and update cache
Install the extension using pig or apt/yum/dnf:
pig install pllua; # Install for current active PG version
pig ext install -y pllua -v 18 # PG 18
pig ext install -y pllua -v 17 # PG 17
pig ext install -y pllua -v 16 # PG 16
pig ext install -y pllua -v 15 # PG 15
pig ext install -y pllua -v 14 # PG 14
apt install -y postgresql-18-pllua # PG 18
apt install -y postgresql-17-pllua # PG 17
apt install -y postgresql-16-pllua # PG 16
apt install -y postgresql-15-pllua # PG 15
apt install -y postgresql-14-pllua # PG 14
Create Extension:
CREATE EXTENSION hstore_pllua CASCADE; -- requires: hstore, pllua
Usage
The hstore_pllua extension provides a transform that allows hstore values to be passed directly to and from PL/Lua functions as native Lua tables, instead of opaque datum objects.
CREATE EXTENSION hstore;
CREATE EXTENSION pllua;
CREATE EXTENSION hstore_pllua;
Using hstore in PL/Lua
With the transform installed, hstore arguments are automatically converted to Lua tables, and Lua tables can be returned as hstore values:
CREATE FUNCTION process_hstore(h hstore) RETURNS hstore LANGUAGE pllua AS $$
-- h is a Lua table with string keys and string values
h["new_key"] = "new_value"
h["modified"] = "true"
return h
$$;
SELECT process_hstore('name => "Alice", age => "30"'::hstore);
Iterate Over hstore Keys
CREATE FUNCTION hstore_keys(h hstore) RETURNS SETOF text LANGUAGE pllua AS $$
for k, v in pairs(h) do
coroutine.yield(k)
end
$$;
Without this transform, hstore values would need to be manually converted using the hstore type functions.
Feedback
Was this page helpful?
Thanks for the feedback! Please let us know how we can improve.
Sorry to hear that. Please let us know how we can improve.