pg_tle
Trusted Language Extensions for PostgreSQL
Overview
| Package | Version | Category | License | Language |
|---|---|---|---|---|
pg_tle | 1.5.2 | LANG | Apache-2.0 | C |
| ID | Extension | Bin | Lib | Load | Create | Trust | Reloc | Schema |
|---|---|---|---|---|---|---|---|---|
| 3000 | pg_tle | No | Yes | Yes | Yes | No | No | pgtle |
| Related | plpgsql plv8 pllua pljava plperl plpython3u plprql plsh |
|---|
require bison flex to build
Version
| Type | Repo | Version | PG Ver | Package | Deps |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.5.2 | 1817161514 | pg_tle | - |
| RPM | PGDG | 1.5.2 | 1817161514 | pg_tle_$v | - |
| DEB | PIGSTY | 1.5.2 | 1817161514 | postgresql-$v-pg-tle | - |
Build
You can build the RPM / DEB packages for pg_tle using pig build:
pig build pkg pg_tle # build RPM / DEB packages
Install
You can install pg_tle 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 pg_tle; # Install for current active PG version
pig ext install -y pg_tle -v 18 # PG 18
pig ext install -y pg_tle -v 17 # PG 17
pig ext install -y pg_tle -v 16 # PG 16
pig ext install -y pg_tle -v 15 # PG 15
pig ext install -y pg_tle -v 14 # PG 14
dnf install -y pg_tle_18 # PG 18
dnf install -y pg_tle_17 # PG 17
dnf install -y pg_tle_16 # PG 16
dnf install -y pg_tle_15 # PG 15
dnf install -y pg_tle_14 # PG 14
apt install -y postgresql-18-pg-tle # PG 18
apt install -y postgresql-17-pg-tle # PG 17
apt install -y postgresql-16-pg-tle # PG 16
apt install -y postgresql-15-pg-tle # PG 15
apt install -y postgresql-14-pg-tle # PG 14
Preload:
shared_preload_libraries = 'pg_tle';
Create Extension:
CREATE EXTENSION pg_tle;
Usage
pg_tle lets you create and manage PostgreSQL extensions using trusted languages (SQL, PL/pgSQL, PL/v8, PL/Perl) without requiring filesystem access or server restarts.
Add pg_tle to shared_preload_libraries in postgresql.conf:
shared_preload_libraries = 'pg_tle'
Install a TLE Extension
SELECT pgtle.install_extension(
'my_extension', -- extension name
'1.0', -- version
'My custom extension', -- description
$_pgtle_$
CREATE FUNCTION my_func() RETURNS text AS $$
SELECT 'hello from my_extension';
$$ LANGUAGE SQL;
$_pgtle_$
);
Manage Extension Versions
-- Add an upgrade path
SELECT pgtle.install_update_path(
'my_extension', -- extension name
'1.0', -- from version
'1.1', -- to version
$_pgtle_$
CREATE OR REPLACE FUNCTION my_func() RETURNS text AS $$
SELECT 'hello from my_extension v1.1';
$$ LANGUAGE SQL;
$_pgtle_$
);
-- Set default version
SELECT pgtle.set_default_version('my_extension', '1.1');
Use the TLE Extension
CREATE EXTENSION my_extension;
SELECT my_func(); -- 'hello from my_extension'
ALTER EXTENSION my_extension UPDATE TO '1.1';
Remove a TLE Extension
DROP EXTENSION my_extension;
SELECT pgtle.uninstall_extension('my_extension');
Hooks and Features
Register custom hooks (e.g., password check hooks):
SELECT pgtle.register_feature('my_password_check', 'passcheck');
SELECT pgtle.unregister_feature('my_password_check', 'passcheck');
Key Functions
| Function | Description |
|---|---|
pgtle.install_extension() | Install a new TLE extension |
pgtle.install_update_path() | Add an upgrade path between versions |
pgtle.set_default_version() | Set the default version for an extension |
pgtle.uninstall_extension() | Remove a TLE extension |
pgtle.register_feature() | Register a feature hook |
pgtle.unregister_feature() | Unregister a feature hook |
pgtle.available_extensions() | List available TLE extensions |
pgtle.available_extension_versions() | List available versions |
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.