This is the multi-page printable view of this section.
Click here to print.
Return to the regular view of this page.
Category: OLAP
OLAP: DuckDB Integration with FDW & PG Lakehouse, Access Parquet from File/S3, Sharding with Citus/Partman/PlProxy, …
OLAP category has 13 available extensions:
1 - citus
Distributed PostgreSQL as an extension
Overview
PIGSTY 3rd Party Extension: citus
: Distributed PostgreSQL as an extension
- Latest Version: 13.0.1
- Postgres Support:
17
,16
,15
,14
- Need Load: Explicit Loading Required
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can be installed into other schemas
- Trusted: Untrusted, Require Superuser to Create
- Schemas:
pg_catalog
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
citus_$v*
- RPM Ver :
13.0-1
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-citus
- DEB Ver :
13.0-1
- DEB Deps: N/A
Packages
Installation
Install citus
via the pig
CLI tool:
Install citus
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["citus"]}' # -l <cls>
Install citus
RPM from YUM repo directly:
dnf install citus_17*;
dnf install citus_16*;
dnf install citus_15*;
dnf install citus_14*;
Install citus
DEB from APT repo directly:
apt install postgresql-17-citus;
apt install postgresql-16-citus;
apt install postgresql-15-citus;
apt install postgresql-14-citus;
Extension citus
has to be added to shared_preload_libraries
shared_preload_libraries = 'citus'; # add to pg cluster config
Enable citus
extension on PostgreSQL cluster:
2 - citus_columnar
Citus columnar storage engine
Overview
PIGSTY 3rd Party Extension: citus
: Citus columnar storage engine
- Latest Version: 11.3-1
- Postgres Support:
17
,16
,15
,14
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can be installed into other schemas
- Trusted: Untrusted, Require Superuser to Create
- Schemas:
pg_catalog
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
citus_$v*
- RPM Ver :
11.3-1
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-citus
- DEB Ver :
11.3-1
- DEB Deps: N/A
Packages
Installation
Install citus_columnar
via the pig
CLI tool:
pig ext install citus; # Extension Namepig ext install citus_columnar; # normalized package name
Install citus
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["citus"]}' # -l <cls>
Install citus
RPM from YUM repo directly:
dnf install citus_17*;
dnf install citus_16*;
dnf install citus_15*;
dnf install citus_14*;
Install citus
DEB from APT repo directly:
apt install postgresql-17-citus;
apt install postgresql-16-citus;
apt install postgresql-15-citus;
apt install postgresql-14-citus;
Enable citus_columnar
extension on PostgreSQL cluster:
CREATE EXTENSION citus_columnar;
3 - columnar
Hydra Columnar extension
Overview
PIGSTY 3rd Party Extension: hydra
: Hydra Columnar extension
- Latest Version: 11.1-11
- Postgres Support:
16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can be installed into other schemas
- Trusted: Untrusted, Require Superuser to Create
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
hydra_$v*
- RPM Ver :
11.1-11
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-hydra
- DEB Ver :
11.1-11
- DEB Deps: N/A
Packages
Installation
Install columnar
via the pig
CLI tool:
pig ext install hydra; # Extension Namepig ext install columnar; # normalized package name
Install hydra
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["hydra"]}' # -l <cls>
Install hydra
RPM from YUM repo directly:
dnf install hydra_16*;
dnf install hydra_15*;
dnf install hydra_14*;
dnf install hydra_13*;
Install hydra
DEB from APT repo directly:
apt install postgresql-16-hydra;
apt install postgresql-15-hydra;
apt install postgresql-14-hydra;
apt install postgresql-13-hydra;
Enable columnar
extension on PostgreSQL cluster:
CREATE EXTENSION columnar;
4 - pg_analytics
Postgres for analytics, powered by DuckDB
Overview
PIGSTY 3rd Party Extension: pg_analytics
: Postgres for analytics, powered by DuckDB
- Latest Version: 0.3.3
- Postgres Support:
17
,16
,15
,14
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can be installed into other schemas
- Trusted: Trusted, Can be created by user with
CREATE
Privilege
- Schemas:
paradedb
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
pg_analytics_$v
- RPM Ver :
0.3.3
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-pg-analytics
- DEB Ver :
0.3.3
- DEB Deps: N/A
Packages
Installation
Install pg_analytics
via the pig
CLI tool:
pig ext install pg_analytics
Install pg_analytics
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["pg_analytics"]}' # -l <cls>
Install pg_analytics
RPM from YUM repo directly:
dnf install pg_analytics_17;
dnf install pg_analytics_16;
dnf install pg_analytics_15;
dnf install pg_analytics_14;
Install pg_analytics
DEB from APT repo directly:
apt install postgresql-17-pg-analytics;
apt install postgresql-16-pg-analytics;
apt install postgresql-15-pg-analytics;
apt install postgresql-14-pg-analytics;
Enable pg_analytics
extension on PostgreSQL cluster:
CREATE EXTENSION pg_analytics;
Usage
https://github.com/paradedb/pg_analytics
Example, read parquet file from S3:
CREATE EXTENSION pg_lakehouse;
CREATE FOREIGN DATA WRAPPER parquet_wrapper HANDLER parquet_fdw_handler VALIDATOR parquet_fdw_validator;
-- Provide S3 credentials
CREATE SERVER parquet_server FOREIGN DATA WRAPPER parquet_wrapper;
-- Create foreign table with auto schema creation
CREATE FOREIGN TABLE trips ()
SERVER parquet_server
OPTIONS (files 's3://paradedb-benchmarks/yellow_tripdata_2024-01.parquet');
-- Success! Now you can query the remote Parquet file like a regular Postgres table
SELECT COUNT(*) FROM trips;
count
---------
2964624
(1 row)
This fdw is read-only for now.
Iceberg Support
CREATE EXTENSION pg_lakehouse;
CREATE FOREIGN DATA WRAPPER iceberg_wrapper
HANDLER iceberg_fdw_handler
VALIDATOR iceberg_fdw_validator;
CREATE SERVER iceberg_server
FOREIGN DATA WRAPPER iceberg_wrapper;
-- Replace the dummy schema with the actual schema
CREATE FOREIGN TABLE iceberg_table (x INT)
SERVER iceberg_server
OPTIONS (files 's3://bucket/iceberg_folder');
-- Success! You can now query the Iceberg table
SELECT COUNT(*) FROM iceberg_table;
5 - pg_duckdb
DuckDB Embedded in Postgres
Overview
PIGSTY 3rd Party Extension: pg_duckdb
: DuckDB Embedded in Postgres
- Latest Version: 0.2.0
- Postgres Support:
17
,16
,15
,14
- Need Load: Explicit Loading Required
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can be installed into other schemas
- Trusted: Untrusted, Require Superuser to Create
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
pg_duckdb_$v*
- RPM Ver :
0.2.0
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-pg-duckdb
- DEB Ver :
0.2.0
- DEB Deps: N/A
Packages
Installation
Install pg_duckdb
via the pig
CLI tool:
pig ext install pg_duckdb
Install pg_duckdb
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["pg_duckdb"]}' # -l <cls>
Install pg_duckdb
RPM from YUM repo directly:
dnf install pg_duckdb_17*;
dnf install pg_duckdb_16*;
dnf install pg_duckdb_15*;
dnf install pg_duckdb_14*;
Install pg_duckdb
DEB from APT repo directly:
apt install postgresql-17-pg-duckdb;
apt install postgresql-16-pg-duckdb;
apt install postgresql-15-pg-duckdb;
apt install postgresql-14-pg-duckdb;
Extension pg_duckdb
has to be added to shared_preload_libraries
shared_preload_libraries = 'pg_duckdb'; # add to pg cluster config
Enable pg_duckdb
extension on PostgreSQL cluster:
CREATE EXTENSION pg_duckdb;
Usage
Add pg_duckdb
to shared_preload_libraries
via patronictl
pg edit-config --force -p shared_preload_libraries='pg_duckdb, pg_stat_statements, auto_explain'
pg restart --force pg-meta
Create Extension
CREATE EXTENSION pg_duckdb;
Generate some data
\timing on
SELECT count(*) FROM pgbench_accounts;
-- 3268.023ms
# use the duckdb execution engine
SET duckdb.force_execution = true;
postgres@el8:5432/postgres=# explain SELECT count(*) FROM pgbench_accounts;
QUERY PLAN
---------------------------------------------------------------------------------
Custom Scan (DuckDBScan) (cost=0.00..0.00 rows=0 width=0)
DuckDB Execution Plan:
┌───────────────────────────┐
│ UNGROUPED_AGGREGATE │
│ ──────────────────── │
│ Aggregates: │
│ count_star() │
└─────────────┬─────────────┘
┌─────────────┴─────────────┐
│ POSTGRES_SEQ_SCAN │
│ ──────────────────── │
│ Function: │
│ POSTGRES_SEQ_SCAN │
│ │
│ ~10000000 Rows │
└───────────────────────────┘
JIT:
Functions: 1
Options: Inlining false, Optimization false, Expressions true, Deforming true
(22 rows)
postgres@el8:5432/postgres=# SELECT count(*) FROM pgbench_accounts;
count
----------
10000000
(1 row)
Time: 696.801 ms
According some user feedbacks, the duckdb engine can achieve 100x - 1000x speed up on certain queries.
Check more details @ https://github.com/duckdb/pg_duckdb
6 - pg_mooncake
Columnstore Table in Postgres
Overview
PIGSTY 3rd Party Extension: pg_mooncake
: Columnstore Table in Postgres
- Latest Version: 0.1.0
- Postgres Support:
17
,16
,15
,14
- Need Load: Shared library do not need explicit loading
- Need DDL: Dd not need
CREATE EXTENSION
DDL
- Relocatable: Can be installed into other schemas
- Trusted: Untrusted, Require Superuser to Create
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
pg_mooncake_$v*
- RPM Ver :
0.1.0
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-pg-mooncake
- DEB Ver :
0.1.0
- DEB Deps: N/A
Packages
Installation
Install pg_mooncake
via the pig
CLI tool:
pig ext install pg_mooncake
Install pg_mooncake
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["pg_mooncake"]}' # -l <cls>
Install pg_mooncake
RPM from YUM repo directly:
dnf install pg_mooncake_17*;
dnf install pg_mooncake_16*;
dnf install pg_mooncake_15*;
dnf install pg_mooncake_14*;
Install pg_mooncake
DEB from APT repo directly:
apt install postgresql-17-pg-mooncake;
apt install postgresql-16-pg-mooncake;
apt install postgresql-15-pg-mooncake;
apt install postgresql-14-pg-mooncake;
Extension %s
does not need CREATE EXTENSION
command
Usage
THIS EXTENSION IS CONFLICT WITH pg_duckdb & duckdb_fdw, if it is under maintained, we may remove this extension in the future
Beware that this package is conflict with the official pg_duckdb
extension due to use the same libduckdb.so
under same path.
And this function will block the duckdb_fdw
functioning.
-- Create a columnstore table in PostgreSQL
CREATE TABLE user_activity (....) USING columnstore;
-- Insert data into a columnstore table
INSERT INTO user_activity VALUES ....;
-- Query a columnstore table in PostgreSQL
SELECT * FROM user_activity LIMIT 5;
Example
Use mooncake with S3:
SELECT mooncake.create_secret('<name>', 'S3', '<key_id>', '<secret>', '{"REGION": "<s3-region>"}');
SET mooncake.default_bucket = 's3://<bucket>';
SET mooncake.enable_local_cache = false; -- (if you are using Neon)
Use mooncake with local columnstore:
CREATE TABLE user_activity(
user_id BIGINT,
activity_type TEXT,
activity_timestamp TIMESTAMP,
duration INT
) USING columnstore;
INSERT INTO user_activity VALUES
(1, 'login', '2024-01-01 08:00:00', 120),
(2, 'page_view', '2024-01-01 08:05:00', 30),
(3, 'logout', '2024-01-01 08:30:00', 60),
(4, 'error', '2024-01-01 08:13:00', 60);
SELECT * FROM user_activity;
Run analytic queries
SELECT
user_id,
activity_type,
SUM(duration) AS total_duration,
COUNT(*) AS activity_count
FROM
user_activity
GROUP BY
user_id, activity_type
ORDER BY
user_id, activity_type;
The explain result could be:
postgres@u22:5432/postgres=# explain SELECT
user_id,
activity_type,
SUM(duration) AS total_duration,
COUNT(*) AS activity_count
FROM
user_activity
GROUP BY
user_id, activity_type
ORDER BY
user_id, activity_type;
QUERY PLAN
------------------------------------------------------------
Custom Scan (DuckDBScan) (cost=0.00..0.00 rows=0 width=0)
DuckDB Execution Plan:
┌───────────────────────────┐
│ PROJECTION │
│ ──────────────────── │
│__internal_decompress_integ│
│ ral_bigint(#0, 1) │
│ #1 │
│ #2 │
│ #3 │
│ │
│ ~2 Rows │
└─────────────┬─────────────┘
┌─────────────┴─────────────┐
│ ORDER_BY │
│ ──────────────────── │
│ user_activity.user_id ASC │
│ user_activity │
│ .activity_type ASC │
└─────────────┬─────────────┘
┌─────────────┴─────────────┐
│ PROJECTION │
│ ──────────────────── │
│__internal_compress_integra│
│ l_utinyint(#0, 1) │
│ #1 │
│ #2 │
│ #3 │
│ │
│ ~2 Rows │
└─────────────┬─────────────┘
┌─────────────┴─────────────┐
│ PROJECTION │
│ ──────────────────── │
│__internal_decompress_integ│
│ ral_bigint(#0, 1) │
│ #1 │
│ #2 │
│ #3 │
│ │
│ ~2 Rows │
└─────────────┬─────────────┘
┌─────────────┴─────────────┐
│ HASH_GROUP_BY │
│ ──────────────────── │
│ Groups: │
│ #0 │
│ #1 │
│ │
│ Aggregates: │
│ sum(#2) │
│ count_star() │
│ │
│ ~2 Rows │
└─────────────┬─────────────┘
┌─────────────┴─────────────┐
│ PROJECTION │
│ ──────────────────── │
│ user_id │
│ activity_type │
│ duration │
│ │
│ ~4 Rows │
└─────────────┬─────────────┘
┌─────────────┴─────────────┐
│ PROJECTION │
│ ──────────────────── │
│__internal_compress_integra│
│ l_utinyint(#0, 1) │
│ #1 │
│ #2 │
│ │
│ ~4 Rows │
└─────────────┬─────────────┘
┌─────────────┴─────────────┐
│ COLUMNSTORE_SCAN │
│ ──────────────────── │
│ Function: │
│ COLUMNSTORE_SCAN │
│ │
│ Projections: │
│ user_id │
│ activity_type │
│ duration │
│ │
│ ~4 Rows │
└───────────────────────────┘
(90 rows)
7 - duckdb_fdw
DuckDB Foreign Data Wrapper
Overview
PIGSTY 3rd Party Extension: duckdb_fdw
: DuckDB Foreign Data Wrapper
- Latest Version: 1.1.2
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can not install to arbitrary schema
- Trusted: Untrusted, Require Superuser to Create
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
duckdb_fdw_$v*
- RPM Ver :
1.1.2
- RPM Deps:
libduckdb
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-duckdb-fdw
- DEB Ver :
1.1.2
- DEB Deps:
libduckdb
Packages
Installation
Install duckdb_fdw
via the pig
CLI tool:
pig ext install duckdb_fdw
Install duckdb_fdw
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["duckdb_fdw"]}' # -l <cls>
Install duckdb_fdw
RPM from YUM repo directly:
dnf install duckdb_fdw_17*;
dnf install duckdb_fdw_16*;
dnf install duckdb_fdw_15*;
dnf install duckdb_fdw_14*;
dnf install duckdb_fdw_13*;
Install duckdb_fdw
DEB from APT repo directly:
apt install postgresql-17-duckdb-fdw;
apt install postgresql-16-duckdb-fdw;
apt install postgresql-15-duckdb-fdw;
apt install postgresql-14-duckdb-fdw;
apt install postgresql-13-duckdb-fdw;
Enable duckdb_fdw
extension on PostgreSQL cluster:
CREATE EXTENSION duckdb_fdw;
Usage
Create Extension
After install the duckdb_fdw
yum package, you can create the extension inside PostgreSQL database:
-- create extension
CREATE EXTENSION duckdb_fdw;
-- create duckdb_fdw server
CREATE SERVER duckdb_server FOREIGN DATA WRAPPER duckdb_fdw OPTIONS (database '/tmp/duck.db');
-- create user mapping [OPTIONAL]
-- GRANT USAGE ON FOREIGN SERVER duckdb_server TO PUBLIC;
SELECT duckdb_fdw_version();
-- You can execute duckdb command with `duckdb_execute`, for example, to create a table inside duckdb:
-- create a table in duckdb
SELECT duckdb_execute('duckdb_server', 'CREATE TABLE t1 (a integer,b varchar);');
-- create duckdb foreign table mapping that duckdb table
CREATE FOREIGN TABLE t1 (
a integer,
b text
) SERVER duckdb_server OPTIONS (
table 't1'
);
-- write some data and read it back
INSERT INTO t1 SELECT i AS a,i::text AS b FROM generate_series(1,10) i;
SELECT * FROM t1;
You can also import foreign schema from duckdb server, for example, create a table with duckdb cli:
duckdb /tmp/duck.db
CREATE TABLE t1 (
a integer,
b text
);
INSERT INTO t1 VALUES (1, 'a'), (2 , 'b'), (3, 'c');
SELECT * FROM t1;
Then import the schema into PostgreSQL:
IMPORT FOREIGN SCHEMA public FROM SERVER duckdb_server INTO public;
Other Resource
8 - pg_parquet
copy data between Postgres and Parquet
Overview
PIGSTY 3rd Party Extension: pg_parquet
: copy data between Postgres and Parquet
- Latest Version: 0.2.0
- Postgres Support:
17
,16
,15
,14
- Need Load: Explicit Loading Required
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can be installed into other schemas
- Trusted: Trusted, Can be created by user with
CREATE
Privilege
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
pg_parquet_$v
- RPM Ver :
0.2.0
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-pg-parquet
- DEB Ver :
0.2.0
- DEB Deps: N/A
Packages
Installation
Install pg_parquet
via the pig
CLI tool:
pig ext install pg_parquet
Install pg_parquet
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["pg_parquet"]}' # -l <cls>
Install pg_parquet
RPM from YUM repo directly:
dnf install pg_parquet_17;
dnf install pg_parquet_16;
dnf install pg_parquet_15;
dnf install pg_parquet_14;
Install pg_parquet
DEB from APT repo directly:
apt install postgresql-17-pg-parquet;
apt install postgresql-16-pg-parquet;
apt install postgresql-15-pg-parquet;
apt install postgresql-14-pg-parquet;
Extension pg_parquet
has to be added to shared_preload_libraries
shared_preload_libraries = 'pg_parquet'; # add to pg cluster config
Enable pg_parquet
extension on PostgreSQL cluster:
CREATE EXTENSION pg_parquet;
9 - pg_fkpart
Table partitioning by foreign key utility
Overview
MIXED 3rd Party Extension: pg_fkpart
: Table partitioning by foreign key utility
- Latest Version: 1.7
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can be installed into other schemas
- Trusted: Untrusted, Require Superuser to Create
- Schemas:
pgfkpart
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
pg_fkpart_$v
- RPM Ver :
1.7
- RPM Deps: N/A
- DEB Repo: PIGSTY
- DEB Name:
postgresql-$v-pg-fkpart
- DEB Ver :
1.7
- DEB Deps: N/A
Packages
Installation
Install pg_fkpart
via the pig
CLI tool:
pig ext install pg_fkpart
Install pg_fkpart
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["pg_fkpart"]}' # -l <cls>
Install pg_fkpart
RPM from YUM repo directly:
dnf install pg_fkpart_17;
dnf install pg_fkpart_16;
dnf install pg_fkpart_15;
dnf install pg_fkpart_14;
dnf install pg_fkpart_13;
Install pg_fkpart
DEB from APT repo directly:
apt install postgresql-17-pg-fkpart;
apt install postgresql-16-pg-fkpart;
apt install postgresql-15-pg-fkpart;
apt install postgresql-14-pg-fkpart;
apt install postgresql-13-pg-fkpart;
Enable pg_fkpart
extension on PostgreSQL cluster:
CREATE EXTENSION pg_fkpart;
10 - pg_partman
Extension to manage partitioned tables by time or ID
Overview
PGDG 1st Party Extension: pg_partman
: Extension to manage partitioned tables by time or ID
- Latest Version: 5.2.4
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can be installed into other schemas
- Trusted: Untrusted, Require Superuser to Create
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PGDG
- RPM Name:
pg_partman_$v*
- RPM Ver :
5.2.4
- RPM Deps: N/A
- DEB Repo: PGDG
- DEB Name:
postgresql-$v-partman
- DEB Ver :
5.2.4
- DEB Deps: N/A
Packages
Installation
Install pg_partman
via the pig
CLI tool:
pig ext install pg_partman
Install pg_partman
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["pg_partman"]}' # -l <cls>
Install pg_partman
RPM from YUM repo directly:
dnf install pg_partman_17*;
dnf install pg_partman_16*;
dnf install pg_partman_15*;
dnf install pg_partman_14*;
dnf install pg_partman_13*;
Install pg_partman
DEB from APT repo directly:
apt install postgresql-17-partman;
apt install postgresql-16-partman;
apt install postgresql-15-partman;
apt install postgresql-14-partman;
apt install postgresql-13-partman;
Enable pg_partman
extension on PostgreSQL cluster:
CREATE EXTENSION pg_partman;
11 - plproxy
Database partitioning implemented as procedural language
Overview
PGDG 3rd Party Extension: plproxy
: Database partitioning implemented as procedural language
- Latest Version: 2.11.0
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Can be installed into other schemas
- Trusted: Untrusted, Require Superuser to Create
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PIGSTY
- RPM Name:
plproxy_$v*
- RPM Ver :
2.11.0
- RPM Deps: N/A
- DEB Repo: PGDG
- DEB Name:
postgresql-$v-plproxy
- DEB Ver :
2.11.0
- DEB Deps: N/A
Packages
Installation
Install plproxy
via the pig
CLI tool:
Install plproxy
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["plproxy"]}' # -l <cls>
Install plproxy
RPM from YUM repo directly:
dnf install plproxy_17*;
dnf install plproxy_16*;
dnf install plproxy_15*;
dnf install plproxy_14*;
dnf install plproxy_13*;
Install plproxy
DEB from APT repo directly:
apt install postgresql-17-plproxy;
apt install postgresql-16-plproxy;
apt install postgresql-15-plproxy;
apt install postgresql-14-plproxy;
apt install postgresql-13-plproxy;
Enable plproxy
extension on PostgreSQL cluster:
CREATE EXTENSION plproxy;
12 - pg_strom
PG-Strom - big-data processing acceleration using GPU and NVME
Overview
PGDG 1st Party Extension: pg_strom
: PG-Strom - big-data processing acceleration using GPU and NVME
- Latest Version: 5.1
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Unknown
- Trusted: Untrusted, Require Superuser to Create
- Schemas: N/A
- Requires: N/A
RPM / DEB
- RPM Repo: PGDG
- RPM Name:
pg_strom_$v*
- RPM Ver :
5.1
- RPM Deps: N/A
- DEB Repo: None
- DEB Name:
N/A
- DEB Ver : N/A
- DEB Deps: N/A
Packages
Installation
Install pg_strom
via the pig
CLI tool:
Install pg_strom
via Pigsty playbook:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["pg_strom"]}' # -l <cls>
Install pg_strom
RPM from YUM repo directly:
dnf install pg_strom_17*;
dnf install pg_strom_16*;
dnf install pg_strom_15*;
dnf install pg_strom_14*;
dnf install pg_strom_13*;
Enable pg_strom
extension on PostgreSQL cluster:
CREATE EXTENSION pg_strom;
13 - tablefunc
functions that manipulate whole tables, including crosstab
Overview
CONTRIB Built-in Extension: tablefunc
: functions that manipulate whole tables, including crosstab
- Latest Version: 1.0
- Postgres Support:
17
,16
,15
,14
,13
- Need Load: Shared library do not need explicit loading
- Need DDL: Need
CREATE EXTENSION
DDL
- Relocatable: Unknown
- Trusted: Trusted, Can be created by user with
CREATE
Privilege
- Schemas: N/A
- Requires: N/A
RPM / DEB
PostgreSQL Built-in Contrib Extension
Packages
OS |
Arch |
PG17 |
PG16 |
PG15 |
PG14 |
PG13 |
el8 |
x86_64 |
|
|
|
|
|
el8 |
aarch64 |
|
|
|
|
|
el9 |
x86_64 |
|
|
|
|
|
el9 |
aarch64 |
|
|
|
|
|
d12 |
x86_64 |
|
|
|
|
|
d12 |
aarch64 |
|
|
|
|
|
u22 |
x86_64 |
|
|
|
|
|
u22 |
aarch64 |
|
|
|
|
|
u24 |
x86_64 |
|
|
|
|
|
u24 |
aarch64 |
|
|
|
|
|
Installation
Extension tablefunc
is PostgreSQL Built-in Contrib Extension which is installed along with the kernel/contrib.
Install tablefunc
RPM from YUM repo directly:
dnf install postgresql17-contrib;
dnf install postgresql16-contrib;
dnf install postgresql15-contrib;
dnf install postgresql14-contrib;
dnf install postgresql13-contrib;
Install tablefunc
DEB from APT repo directly:
apt install postgresql-17;
apt install postgresql-16;
apt install postgresql-15;
apt install postgresql-14;
apt install postgresql-13;
Enable tablefunc
extension on PostgreSQL cluster:
CREATE EXTENSION tablefunc;