plluau
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 | plperlu plpgsql plpython3u plv8 pljava pltclu |
|---|---|
| Depended By | hstore_plluau |
missing pg12-15 on el.aarch64
Version
| Type | Repo | Version | PG Ver | Package | Deps |
|---|---|---|---|---|---|
| EXT | PGDG | 2.0.12 | 1817161514 | pllua | - |
| RPM | PGDG | 2.0.12 | 1817161514 | pllua_$v | - |
| 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
dnf install -y pllua_18 # PG 18
dnf install -y pllua_17 # PG 17
dnf install -y pllua_16 # PG 16
dnf install -y pllua_15 # PG 15
dnf install -y pllua_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 plluau;
Usage
plluau is the untrusted variant of pllua, allowing Lua functions to access the filesystem, load arbitrary modules, and perform operations restricted in the trusted version.
CREATE EXTENSION plluau;
Create Functions
CREATE FUNCTION read_file(path text) RETURNS text LANGUAGE plluau AS $$
local f = io.open(path, "r")
if f then
local content = f:read("*a")
f:close()
return content
end
return nil
$$;
Differences from pllua (Trusted)
| Feature | pllua (trusted) | plluau (untrusted) |
|---|---|---|
| File I/O | Restricted | Full access |
| Module loading | Whitelisted only | Unrestricted |
| OS access | No | Yes |
| Suitable for | User-defined functions | Admin/superuser functions |
Same API as pllua
plluau shares the same SPI interface, trigger support, set-returning functions, and data type handling as pllua. All SPI functions (spi.execute, spi.prepare, spi.rows), coroutine-based set returns, and trigger functions work identically.
CREATE FUNCTION run_command(cmd text) RETURNS text LANGUAGE plluau AS $$
local handle = io.popen(cmd)
local result = handle:read("*a")
handle:close()
return result
$$;
Initialization
Configure via GUC (superuser only):
SET pllua.on_untrusted_init = 'myvar = {}';
Only superusers can create plluau functions due to the unrestricted access it provides.
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.