This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

扩展:PGSQL

扩展是 PostgreSQL 的灵魂所在,Pigsty 制作、收录、整合了 340 个 PG 生态扩展,让这些插件开箱即用。

权威扩展列表现已搬迁至专门子站点:https://ext.pigsty.io

1 - 安装使用

如何在 Pigsty 中安装,启用,更新,卸载 PostgreSQL 扩展插件,使用 Pigsty 插件仓库。

1.1 - 快速上手

如何在 Pigsty 中,通过开箱即用的方式安装并启用 PostgreSQL 扩展插件?

Pigsty 让您可以直接在 PGSQL 集群中,通过声明式的方式启用 PostgreSQL 插件。


概览

通常想要在一套 PostgreSQL 集群中使用插件,涉及到 下载安装加载启用 四个核心问题:

  • 怎样下载扩展repo_upstream & repo_packages

    在 Pigsty 默认在线安装时,已经默认下载了当前首要PG大版本(16)可用的所有扩展,如果不需要添加额外或者冷门扩展,通常都不需要您操心 repo_upstreamrepo_packages 以及扩展下载相关的问题。

  • 安装哪些扩展pg_extensions & pg_packages

    在 Pigsty 配置模板中的样例集群中,已经提供了完整可用的扩展清单,您只需要将想要 安装 的扩展,添加到 pg_packagespg_extensions 中即可。

  • 加载哪些扩展pg_libs

    一小部分使用了 PostgreSQL HOOK 的扩展需要动态加载并重启数据库后才可以使用,您需要将这些扩展添加到 pg_libs 中,并在重启加载后生效。

  • 启用哪些扩展pg_databases.extensions

    绝大多数扩展在安装之后,都需要执行 CREATE EXTENSION DDL 语句,才会真实在具体的数据库中被创建并启用。您可以手工执行此 DDL,或者在 pg_datbasese.extensions 中显式指定,则数据库会在初始化的时候自动启用这些扩展。


开箱即用

Pigsty 为用户封装了扩展管理的复杂度,您不需要知道这些扩展的 RPM 包名,也不需要知道如何下载,安装,加载,启用这些扩展,只需要在配置文件中声明您需要的扩展即可。

例如,下面的配置文件片段声明了一个 PostgreSQL 集群,安装 了所有可用的扩展插件,动态 加载 了三个扩展,并 启用 了三个扩展。

pg-meta:
  hosts:
    10.10.10.10: { pg_seq: 1, pg_role: primary }
  vars:
    pg_cluster: pg-meta
    pg_databases:
      - name: meta
        extensions:
          - { name: postgis     }
          - { name: timescaledb }
          - { name: vector      }
    pg_libs: 'timescaledb, pg_stat_statements, auto_explain'
    pg_extensions:
      - timescaledb periods temporal_tables emaj table_version pg_cron pg_later pg_background pg_timetable                         #[TIME]#
      - postgis pgrouting pointcloud pg_h3 q3c ogr_fdw geoip                                                                        #[GIS]#
      - pgvector pgvectorscale pg_vectorize pg_similarity pg_tiktoken pgml                                                          #[RAG]#
      - pg_search pg_bigm zhparser hunspell                                                                                         #[FTS]#
      - hydra pg_lakehouse duckdb_fdw pg_fkpart pg_partman plproxy #citus pg_strom                                                 #[OLAP]#
      - age hll rum pg_graphql pg_jsonschema jsquery pg_hint_plan hypopg imgsmlr pg_ivm pgmq pgq                                   #[FEAT]#
      - pg_tle plv8 pllua plprql pldebugger plpgsql_check plprofiler plsh pljava #plr faker pgtap                                  #[LANG]#
      - prefix semver pgmp pguint pgunit roaringbitmap md5hash asn1oid numeral pg_rational ip4r pgsphere pgfaceting timestamp9     #[TYPE]# #[FUNC]# #[ADMIN]# #[STAT]# #[SEC]#
      - pg_gzip pg_http topn pg_net pgjwt shacrypt pgsql_tweaks pg_extra_time count_distinct extra_window_functions first_last_agg tdigest pgpcre icu_ext pg_idkit pg_hashids pg_uuidv7 permuteseq sequential_uuids
      - pg_repack pg_squeeze pg_dirtyread pgfincore pgdd ddlx pg_prioritize pg_checksums pg_readonly safeupdate pg_permissions pg_auto_failover preprepare pg_catcheck
      - pg_profile pg_show_plans pg_stat_kcache pg_stat_monitor pg_qualstats pg_store_plans pg_track_settings pg_wait_sampling system_stats bgw_replstatus pg_sqlog powa pgmeminfo toastinfo
      - passwordcheck supautils pgsodium pg_vault anonymizer pg_tde pgsmcrypto pgaudit pgauditlogtofile pg_auth_mon credcheck pgcryptokey pg_jobmon logerrors login_hook set_user tablelog pg_snakeoil pgextwlist
      - wrappers multicorn mongo_fdw mysql_fdw tds_fdw sqlite_fdw hdfs_fdw pgbouncer_fdw firebird_fdw #oracle_fdw db2_fdw           #[FDW]#
      - mysqlcompat pgmemcache pgtt orafce pg_statement_rollback pg_dbms_lock pg_dbms_metadata #pg_dbms_job babelfish               #[SIM]#
      - pglogical pgl_ddl_deploy decoderbufs wal2json wal2mongo pg_failover_slots mimeo pg_fact_loader pg_bulkload #repmgr slony    #[ETL]#
      - gis-stack rag-stack fdw-stack fts-stack etl-stack feat-stack olap-stack supa-stack stat-stack json-stack                  #[STACK]#

您可能注意到这里的扩展名称既非 RPM / DEB 包名,而是由 Pigsty 封装简化过的 标准扩展名(Alias)

在不同的操作系统发行版中,Pigsty 将标准扩展名翻译为对应 PG 大版本的 RPM / DEB 包名,这样您就无需关心不同操作系统发行版的扩展包名差异了。

在 Pigsty configure 过程中,针对特定操作系统发行版生成的默认配置里已经带有上述清单。 要安装这些扩展,您只需要根据自己的需求,在配置文件中将需要的扩展取消注释即可。

请注意,您依然可以在这里直接使用操作系统特定的 RPM/DEB 包名称。


预定义的扩展集合

如果您不清楚应该安装哪些扩展,Pigsty 为您提供了一些预定义的扩展集合(Stack),您可以根据自己的需求场景,选择其中一个集合与任意组合,将其添加到 pg_extensions 中即可。

  • gis-stack: 地理空间扩展集合,包括:postgis, pgrouting, pointcloud, h3, q3c, ogr_fdw
  • rag-stack: 向量检索扩展集合,包括:pgvector, pgvectorscale, pg_vectorize, pg_similarity, pg_tiktoken, pgml
  • fts-stack: 全文检索扩展集合,包括:pg_search, pg_bigm, zhparser, hunspell
  • fdw-stack: 外部数据扩展集合,包括:wrappers, mysql_fdw, tds_fdw, sqlite_fdw
  • etl-stack: 数据ETL/CDC集合,包括:pglogical, pgl_ddl_deploy, wal2json, wal2mongo, decoderbufs, pg_fact_loader, pg_bulkload, pgloader, pgcopydb
  • feat-stack: 类型函数扩展集合,包括:age, hll, rum, pg_graphql, pg_jsonschema, jsquery, pg_ivm, pgq3, gzip, http, topn, pgjwt
  • olap-stack: 数据仓库OLAP集合,包括:duckdb, duckdb_fdw, pg-lakehouse, hydra, timescaledb, pg-fkpart, pg-partman, plproxy
  • supa-stack: Supabase扩展集合,包括:pg-graphql, pg-jsonschema, wrappers, pgvector, cron, supautils, pgsodium, vault, pgjwt, http, pg-net
  • stat-stack: 统计监控扩展集合,包括:show-plans, pg-stat-kcache, pg-qualstats, pg-track-settings, pg-wait-sampling, pg-sqlog
  • json-stack: JSON处理扩展集合,包括:plv8, pg-jsonschema, pgjwt, jsquery, pg-graphql, ferretdb

当您在 pg_extensionspg_packages 中指定了这些扩展集合时,Pigsty 会自动翻译,展开并安装其中的所有扩展插件。


安装、加载与启用

Pigsty 不仅允许您在配置文件中声明需要安装的扩展,还允许您在配置文件中直接声明需要加载的扩展,以及需要启用的扩展。

下面是一个具体的例子:Supabase。 Supabase 是一个封装 PostgreSQL 作为底层存储的“上层抽象数据库”,它深度使用了 PostgreSQL 的扩展机制。 以下是使用 Pigsty 创建一套 Supabase 所需 PostgreSQL 集群的样例配置文件:

# supabase example cluster: pg-meta
# this cluster needs to be migrated with app/supabase/migration.sql :
# psql postgres://supabase_admin:DBUser.Supa@10.10.10.10:5432/supa -v ON_ERROR_STOP=1 --no-psqlrc -f ~pigsty/app/supabase/migration.sql
pg-meta:
  hosts: { 10.10.10.10: { pg_seq: 1, pg_role: primary } }
  vars:
    pg_cluster: pg-meta
    pg_users:
      - { name: supabase_admin ,password: 'DBUser.Supa' ,pgbouncer: true ,inherit: true   ,superuser: true ,replication: true ,createdb: true ,createrole: true ,bypassrls: true }
    pg_databases:
      - name: supa
        baseline: supa.sql    # the init-scripts: https://github.com/supabase/postgres/tree/develop/migrations/db/init-scripts
        owner: supabase_admin
        comment: supabase postgres database
        schemas: [ extensions ,auth ,realtime ,storage ,graphql_public ,supabase_functions ,_analytics ,_realtime ]
        extensions:
          - { name: pgcrypto  ,schema: extensions  } # 1.3   : cryptographic functions
          - { name: pg_net    ,schema: extensions  } # 0.9.2 : async HTTP
          - { name: pgjwt     ,schema: extensions  } # 0.2.0 : json web token API for postgres
          - { name: uuid-ossp ,schema: extensions  } # 1.1   : generate universally unique identifiers (UUIDs)
          - { name: pgsodium        }                # 3.1.9 : pgsodium is a modern cryptography library for Postgres.
          - { name: supabase_vault  }                # 0.2.8 : Supabase Vault Extension
          - { name: pg_graphql      }                # 1.5.7 : pg_graphql: GraphQL support
          - { name: pg_jsonschema   }                # 0.3.1 : pg_jsonschema: Validate json schema
          - { name: wrappers        }                # 0.4.1 : wrappers: FDW collections
          - { name: http            }                # 1.6   : http: allows web page retrieval inside the database.
          - { name: pg_cron         }
    # supabase required extensions
    pg_libs: 'pg_net, pg_cron, pg_stat_statements, auto_explain'    # add pg_net to shared_preload_libraries
    pg_extensions:
      - wal2json pg_repack
      - supa-stack # pgvector pg_cron pgsodium pg_graphql pg_jsonschema wrappers pgjwt pgsql_http pg_net supautils
    pg_parameters:
      cron.database_name: supa
      pgsodium.enable_event_trigger: off
    pg_hba_rules: # supabase hba rules, require access from docker network
      - { user: all ,db: supa ,addr: intra       ,auth: pwd ,title: 'allow supa database access from intranet'      }
      - { user: all ,db: supa ,addr: 172.0.0.0/8 ,auth: pwd ,title: 'allow supa database access from docker network'}
      - { user: all ,db: supa ,addr: all         ,auth: pwd ,title: 'allow supa database access from entire world'  }  # not safe!

在这里,我们声明了一个名为 pg-meta 的 PostgreSQL 集群,它包含了一个名为 supa 的数据库,以及一系列的扩展插件。

pg_extensions 中定义的 supa-stack 被翻译为 pgvector pg_cron pgsodium pg_graphql pg_jsonschema wrappers pgjwt pgsql_http pg_net supautils,并自动安装。 与此同时,pg_libs 指定了两个需要动态加载的扩展: pg_netpg_cron;此外,pgsodiumpg_cron 扩展所必须的配置参数,也通过 pg_parameters 预先指定; 接下来,这些扩展在 pg_databases.extensions 中被依次创建到指定的/或默认的 Schema 中,正式启用。

最后,这样一个开箱即用,可以直接供无状态 Supabase 容器使用的高可用 PostgreSQL 集群,就能在一行 ./pgsql.yml 命令中被完整拉起,开箱即用。

1.2 - 下载扩展

如何下载新的扩展插件,并将其添加至 Pigsty 中?

在 Pigsty 默认安装模式中,扩展插件的下载与安装是分离的。在 安装扩展前 ,您需要确保目标节点上已经添加了相应的软件源,否则安装过程会因为找不到软件包而失败。

Pigsty 在安装过程中会下载当前首要PG大版本(16)可用的所有扩展至 INFRA节点 ,并构建一个 本地软件仓库,供包括本机在内的所有节点使用。 这样做可以加速安装,避免重复下载,减少网络流量消耗,提高交付可靠性性,并解决重复安装版本不一致的风险。

您也可以选择使用另一种方式:直接在 Pigsty 纳管的目标节点上添加上游 PostgreSQL 软件仓库及其依赖仓库(操作系统软件源)。 然后直接从互联网上游进行安装,这样做可以方便地将插件更新至最新版本,但要求环境有互联网访问或 HTTP 代理,同时可能会受网络条件影响,并有潜在的安装版本不一致风险。


软件仓库

在首次安装过程中,Pigsty 会从 repo_upstream 指定的上游软件仓库中下载 repo_packages 指定的软件包。 EL 系统与 Debian/Ubuntu 系统的软件包名称有所不同,完整列表请参考以下地址:

极个别插件因为各种原因被排除在外,默认没有下载。如果您需要使用这些扩展,请参考扩展列表里的 RPM / DEB 包名,将其加入到 repo_upstream 中后下载。

  • 依赖过重:pljava, plr
  • 生态位重叠:repmgr, pgexporterext, pgpool
  • EL9 独占:pljava, sequential_uuids, firebird_fdw

下载扩展

要想下载新的扩展插件,您可以将其添加至 repo_upstream 中,并执行以下任务更新本地软件仓库,并刷新所有节点的软件源缓存:

./infra.yml -t repo       # 重新下载指定的软件包至本地软件仓库
./node.yml  -t node_repo  # 刷新所有节点的本地软件仓库元数据缓存 

Pigsty 默认使用位于 INFRA节点 上的本地软件源,如果您不想将这些扩展下载至本地软件源,而是直接使用在线软件仓库进行安装,那么可以直接将上游软件源添加到节点上:

./node.yml -t node_repo -e node_repo_modules=node,pgsql  # 添加 Postgres 插件仓库与操作系统软件源(依赖)

完成这些任务后,您就可以通过标准操作系统包管理器(yum/apt)的方式,安装 PostgreSQL 扩展插件了。

1.3 - 扩展仓库

如何在 EL/Debian/Ubuntu 及其兼容操作系统上,使用 Pigsty 提供的补充插件仓库?

YUM仓库

Pigsty 目前针对 EL 系统提供了补充插件仓库,在官方 PGDG YUM 仓库的基础上提供了 65 个额外的 RPM 插件。

Pigsty Yum 仓库只收录那些 不存在于 PGDG Yum 仓库的扩展,一旦某个扩展进入 PGDG YUM 仓库,Pigsty Yum 仓库将移除此扩展或与 PGDG 仓库保持一致。

对于 EL 7/8/9 及其兼容系统,使用以下命令依次添加 Pigsty 仓库的 GPG 公钥与上游仓库文件:

curl -fsSL https://repo.pigsty.io/key      | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-pigsty >/dev/null  # 添加公钥
curl -fsSL https://repo.pigsty.io/yum/repo | sudo tee /etc/yum.repos.d/pigsty.repo        >/dev/null  # 添加仓库

中国大陆地区的用户,可以使用国内 CDN 镜像 YUM 仓库:

curl -fsSL https://repo.pigsty.cc/key      | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-pigsty >/dev/null  # 添加公钥
curl -fsSL https://repo.pigsty.cc/yum/repo | sudo tee /etc/yum.repos.d/pigsty.repo        >/dev/null  # 添加仓库

所有的 RPM 包都使用指纹为 9592A7BC7A682E7333376E09E7935D8DB9BD8B20 (B9BD8B20) 的 GPG 密钥进行签名。

手工写入Repo文件
sudo tee /etc/yum.repos.d/pigsty-io.repo > /dev/null <<-'EOF'
[pigsty-infra]
name=Pigsty Infra for $basearch
baseurl=https://repo.pigsty.io/yum/infra/$basearch
skip_if_unavailable = 1
enabled = 1
priority = 1
gpgcheck = 1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-pigsty
module_hotfixes=1

[pigsty-pgsql]
name=Pigsty PGSQL For el$releasever.$basearch
baseurl=https://repo.pigsty.io/yum/pgsql/el$releasever.$basearch
skip_if_unavailable = 1
enabled = 1
priority = 1
gpgcheck = 1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-pigsty
module_hotfixes=1
EOF
sudo yum makecache;

APT仓库

Pigsty 目前针对 Debian / Ubuntu 系统提供了补充插件仓库,在官方 PGDG YUM 仓库的基础上提供了 77 个额外的 DEB 插件包。

Pigsty APT 仓库只收录那些 不存在于 PGDG ATP 仓库的扩展:一旦某个扩展进入 PGDG APT 仓库,Pigsty APT 仓库将移除此扩展或与 PGDG 仓库保持一致。

对于 Debian / Ubuntu 及其兼容系统,使用以下命令依次添加 Pigsty 仓库的 GPG 公钥与上游仓库文件:

# 将 pigsty 的 gpg 公钥添加到你的系统钥匙链中,从而验证软件包签名
curl -fsSL https://repo.pigsty.io/key | sudo gpg --dearmor -o /etc/apt/keyrings/pigsty.gpg      # 添加公钥

# 获取 Debian 发行版代号,distro_codename=jammy, focal, bullseye, bookworm,并将对应上游仓库地址写入 APT List 文件
distro_codename=$(lsb_release -cs)
sudo tee /etc/apt/sources.list.d/pigsty-io.list > /dev/null <<EOF
deb [signed-by=/etc/apt/keyrings/pigsty.gpg] https://repo.pigsty.io/apt/infra generic main 
deb [signed-by=/etc/apt/keyrings/pigsty.gpg] https://repo.pigsty.io/apt/pgsql ${distro_codename} main
EOF

# 刷新 APT 仓库缓存
sudo apt update

中国大陆地区的用户,可以使用国内 CDN 镜像 APT 仓库:

# 将 pigsty 的 gpg 公钥添加到你的系统钥匙链中,从而验证软件包签名
curl -fsSL https://repo.pigsty.cc/key | sudo gpg --dearmor -o /etc/apt/keyrings/pigsty.gpg      # 添加公钥

# 获取 Debian 发行版代号,distro_codename=jammy, focal, bullseye, bookworm,并将对应上游仓库地址写入 APT List 文件
distro_codename=$(lsb_release -cs)
sudo tee /etc/apt/sources.list.d/pigsty-io.list > /dev/null <<EOF
deb [signed-by=/etc/apt/keyrings/pigsty.gpg] https://repo.pigsty.cc/apt/infra generic main 
deb [signed-by=/etc/apt/keyrings/pigsty.gpg] https://repo.pigsty.cc/apt/pgsql/${distro_codename} ${distro_codename} main
EOF

# 刷新 APT 仓库缓存
sudo apt update

所有的 DEB 包都使用指纹为 9592A7BC7A682E7333376E09E7935D8DB9BD8B20 (B9BD8B20) 的 GPG 密钥进行签名。


扩展安装

Pigsty 目前针对 EL 系统提供了补充插件仓库,在官方 PGDG YUM 仓库的基础上提供了 65 个额外的 RPM 插件。

Pigsty Yum 仓库只收录那些 不存在于 PGDG Yum 仓库的扩展,一旦某个扩展进入 PGDG YUM 仓库,Pigsty Yum 仓库将移除此扩展或与 PGDG 仓库保持一致。

1.4 - 安装扩展

如何从 Pigsty 本地软件源,或直接从上游互联网软件源安装 PostgreSQL 扩展插件?

Pigsty 使用操作系统标准的包管理器(yum/apt)来安装 PostgreSQL 扩展插件。


扩展安装相关参数

您可以在以下变量中指定要安装哪些扩展,两者的效果基本相同:

通常 pg_packages 用于在全局指定整个环境中所有 PostgreSQL 集群都需要统一安装的软件包: 例如 PostgreSQL 内核,高可用组建 Patroni,连接池 pgBouncer,监控 pgExporter 等。 Pigsty 默认也会在这里指定安装两个必选扩展: pg_repackwal2json 用于膨胀治理和 CDC 变更抽取。

pg_extensions 则通常用于在特定集群中,指定本集群需要安装的扩展插件。 Pigsty 默认安装三个PG生态的重要扩展:postgis, timescaledb, pgvector,您可以在这里指定需要安装的其他扩展插件。

pg_packages:                      # pg packages to be installed, alias can be used
  - postgresql
  - patroni pgbouncer pgbackrest pg_exporter pgbadger vip-manager wal2json pg_repack
pg_extensions:                    # pg extensions to be installed, alias can be used
  - postgis timescaledb pgvector

另一个重要区别是:pg_packages 安装的软件包只确保存在,而 pg_extensions 安装的软件包会默认升级到最新可用版本。 当使用本地软件源时,这并不是一个问题。当您直接使用互联网上游软件源时,请充分考虑这一点,并将不希望升级的扩展插件转移到 pg_packages 中。

在 PGSQL 集群初始化时,Pigsty 会自动安装 pg_packagespg_extensions 中指定的扩展插件。


在已有集群上安装扩展

对于一个已经完成置备初始化的 PostgreSQL 集群,您可以首先将所需的扩展添加至 pg_packagespg_extensions 中,然后通过以下命令安装扩展:

./pgsql.yml -t pg_extension  # 安装 pg_extensions 中指定的扩展插件

扩展名翻译机制

在 Pigsty 中,您可以在 pg_packagespg_extensions 中使用:

  • 原始的操作系统包名
  • 标准扩展名(Alias)

例如:

postgis                    # 安装当前 PG 大版本对应的 PostGIS 包
postgis34_$v*              # 安装当前 PG 大版本对应的 PostGIS RPM 包
postgis34_15*              # 安装 PG 15 大版本对应的 PostGIS RPM 包
postgresql-$v-postgis-3*   # 安装当前 PG 大版本对应的 PostGIS DEB 包
postgresql-14-postgis-3*   # 安装 PG 14 大版本对应的 PostGIS DEB 包

我们建议使用 Pigsty 提供的标准化扩展名(Alias),在不同的操作系统发行版中,Pigsty 将标准扩展名翻译为对应 PG 大版本的 RPM / DEB 包名,这样用户可以无需关心不同操作系统发行版的扩展包名差异:

Pigsty 尽最大努力对齐 EL 操作系统与 Debian 操作系统生态的 PostgreSQL 扩展,但仍有少量扩展因为各种原因难以/尚未移植, 请参考 RPM扩展列表DEB扩展列表 了解更多信息。

1.5 - 加载扩展

使用了 HOOK 的扩展插件需要显式加载,并重启数据库服务器生效。

安装 PostgreSQL 扩展后,您便可以在 PostgreSQL 的 pg_available_extensions 视图中看到它们。

除了纯 SQL 编写的扩展外,绝大多数扩展都会提供一个 .so 文件,这是一个动态连接库文件。

大部分扩展并不需要显式加载,只需要通过 CREATE EXTENSION 启用即可。 但一小部分扩展使用 PostgreSQL 的 Hook 机制,这些扩展必须通过 shared_preload_libraries 参数预先加载,并重启 PostgreSQL 后才能生效。 如果您在未加载/重启生效的情况下直接执行 CREATE EXTENSION 会报错。

在 Pigsty 中,您可以在集群的 pg_libs 参数中预先指定集群需要加载的扩展,或者在集群初始化后 修改集群配置


需要加载的扩展

扩展列表 中,带有 LOAD 标记的扩展,即为需要动态加载并重启的扩展,包括:

扩展名 标准名 说明
timescaledb timescaledb 时序数据库扩展插件
pgml pgml PostgresML:用SQL运行机器学习算法并训练模型
citus citus Citus 分布式数据库
pg_squeeze pg_squeeze 从关系中删除未使用空间
pgautofailover pgautofailover PG 自动故障迁移
pg_prewarm pg_prewarm 预热关系数据
pg_stat_kcache pg_stat_kcache 内核统计信息收集
bgw_replstatus bgw_replstatus 用于汇报本机主从状态的后台工作进程
auto_explain auto_explain 提供一种自动记录执行计划的手段
pg_stat_statements pg_stat_statements 跟踪所有执行的 SQL 语句的计划和执行统计信息
passwordcheck_cracklib passwordcheck 使用cracklib加固PG用户密码
supautils supautils 用于在云环境中确保数据库集群的安全
pg_tde pg_tde 试点性质的加密存储引擎
pgaudit pgaudit 提供审计功能
pg_snakeoil pg_snakeoil PostgreSQL动态链接库反病毒功能
pgextwlist pgextwlist PostgreSQL扩展白名单功能
sepgsql sepgsql 基于SELinux标签的强制访问控制
auth_delay auth_delay 在返回认证失败前暂停一会,避免爆破
passwordcheck passwordcheck 用于强制拒绝修改弱密码的扩展
pg_statement_rollback pg_statement_rollback 在服务端提供类似Oracle/DB2的语句级回滚能力
babelfishpg_tsql babelfishpg_tsql SQL Server SQL语法兼容性扩展

加载顺序

shared_preload_libraries 中,如果有多个扩展插件需要加载,可以使用逗号分隔,例如:

  • 'timescaledb, pg_stat_statements, auto_explain'

请注意,Citus 和 TimescaleDB 这两个扩展显式提出要求,要在 shared_preload_libraries 中预先加载,也就是放在最前面。

虽然同时使用 Citus 与 TimescaleDB 的情况非常罕见,但在这种情况中,建议将 citus 放在 timescaledb 之前。

Pigsty 默认会加载两个扩展:pg_stat_statementsauto_explain,这两个扩展对于优化数据库性能非常实用,强烈建议安装。

1.6 - 启用扩展

如何通过 CREATE EXTENSION 在 PostgreSQL 数据库中真正启用扩展?

列出可用扩展

安装 PostgreSQL 扩展后,您可以在 PostgreSQL 的 pg_available_extensions 视图中看到它们。但想要实际启用扩展,通常还需要额外的步骤:

  1. 一部分扩展要求被添加到 shared_preload_libraries 中动态加载,例如 timescaledbcitus 等。
  2. 大部分扩展都需要通过 SQL 语句:CREATE EXTENSION <name>; 启用,极少量扩展不需要,例如 wal2json
  • 修改 shared_preload_libraries
    • 在数据库集群初始化前,可以通过 pg_libs 参数手工预先指定;
    • 当数据库已经初始化完毕后,您可以修改集群配置,直接修改 shared_preload_libraries 参数并应用(无需重启)。
    • 需要动态加载的典型插件:citus, timescaledb, pg_cron, pg_net, pg_tle
  • 执行 CREATE EXTENSION
    • 在数据库集群初始化前,可以在 pg_databases.extensions 列表中指定。
    • 当数据库已经初始化完毕后,您可以直接连接数据库执行此 SQL 命令,或使用其他模式变更工具管理扩展。

从原理上讲:PostgreSQL 的扩展通常由 Control文件(元数据,一定存在),SQL文件(SQL语句,可选),So文件(二进制动态连接库,可选)三部分组成。 提供 .so 文件的扩展有可能需要添加到 shared_preload_libraries 才能生效,例如 citustimescaledb,但也有许多扩展不用,例如 postgispgvector。 不通过 SQL 接口对外服务的扩展不需要执行 CREATE EXTENSION,例如提供 CDC 抽取能力的 wal2json 扩展。

在您希望启用扩展的数据库中执行 CREATE EXTENSION SQL 语句,即可完成扩展的创建:

CREATE EXTENSION vector;  -- 安装向量数据库扩展
CREATE EXTENSION hydra;   -- 安装列存数据库扩展

1.7 - 更新扩展

如何从安全地集群中移除扩展插件?

1.8 - 卸载扩展

如何从安全地集群中移除扩展插件?

要卸载某个扩展,通常需要执行以下步骤:

DROP EXTENSION "<extname>";

请注意,如果有其他扩展,或者使用此扩展的数据库对象依赖,您需要首先卸载/删除这些依赖,然后再卸载此扩展;

或者,也可以使用以下语句一次性强制卸载扩展及其依赖:

DROP EXTENSION "<extname>" CASCADE;

注意:CASCADE 选项会删除依赖于此扩展的所有对象,包括数据库对象、函数、视图等,慎用!

如果您希望移除扩展的软件包,可以操作系统的包管理器进行卸载:

1.9 - 预定义扩展栈

如何使用预定义的扩展堆栈,一次性安装特定场景下推荐的所有扩展插件?

2 - 扩展清单

Pigsty 中可用的 340 个 PostgreSQL 插件完整清单。

权威扩展列表现已搬迁至专门子站点:https://ext.pigsty.io

Pigsty 中总共有 340 个可用扩展,其中 EL 可用 RPM扩展 338 个,Debian/Ubuntu 可用 DEB扩展 326 个。 除去 PostgreSQL 自带的 70Contrib扩展,共有 275 个第三方(PGDG,Pigsty)扩展插件。

扩展名(官网) 标准名(简介) 仓库 版本 类目 许可证 LOAD DDL TRUST RELOC 简介
timescaledb timescaledb PGDG 2.17.0 TIME Timescale 时序数据库扩展插件
timeseries pg_timeseries PIGSTY 0.1.6 TIME PostgreSQL Tembo时序数据API封装
periods periods PGDG 1.2 TIME PostgreSQL 为 PERIODs 和 SYSTEM VERSIONING 提供标准 SQL 功能
temporal_tables temporal_tables PIGSTY 1.2.2 TIME BSD 2 时态表功能支持
emaj emaj PGDG 4.5.0 TIME GPLv3 让数据库的子集具有细粒度日志和时间旅行功能
table_version table_version PGDG 1.10.3 TIME BSD 3 PostgreSQL 版本控制表扩展
pg_cron pg_cron PGDG 1.6 TIME PostgreSQL 定时任务调度器
pg_later pg_later PIGSTY 0.1.1 TIME PostgreSQL 执行查询,并在稍后异步获取查询结果
pg_background pg_background PGDG 1.0 TIME GPLv3 在后台运行 SQL 查询
pg_timetable pg_timetable PGDG 5.9.0 TIME PostgreSQL PostgreSQL高级任务调度器
postgis postgis PGDG 3.5.0 GIS GPLv2 PostGIS 几何和地理空间扩展
postgis_topology postgis PGDG 3.5.0 GIS GPLv2 PostGIS 拓扑空间类型和函数
postgis_raster postgis PGDG 3.5.0 GIS GPLv2 PostGIS 光栅类型和函数
postgis_sfcgal postgis PGDG 3.5.0 GIS GPLv2 PostGIS SFCGAL 函数
postgis_tiger_geocoder postgis PGDG 3.5.0 GIS GPLv2 PostGIS tiger 地理编码器和反向地理编码器
address_standardizer postgis PGDG 3.5.0 GIS GPLv2 地址标准化函数。
address_standardizer_data_us postgis PGDG 3.5.0 GIS GPLv2 地址标准化函数:美国数据集示例
pgrouting pgrouting PGDG 3.6.0 GIS GPLv2 提供寻路能力
pointcloud pointcloud PIGSTY 1.2.5 GIS BSD 3 提供激光雷达点云数据类型支持
pointcloud_postgis pointcloud PGDG 1.2.5 GIS BSD 3 将激光雷达点云与PostGIS几何类型相集成
h3 pg_h3 PGDG 4.1.3 GIS Apache-2.0 H3六边形层级索引支持
h3_postgis pg_h3 PGDG 4.1.3 GIS Apache-2.0 H3与PostGIS集成的扩展插件
q3c q3c PIGSTY 2.0.1 GIS GPLv2 Q3C天空索引插件
ogr_fdw ogr_fdw PGDG 1.1 GIS MIT GIS 数据外部数据源包装器
geoip geoip PGDG 0.3.0 GIS BSD 2 IP 地理位置扩展(围绕 MaxMind GeoLite 数据集的包装器)
pg_polyline pg_polyline PIGSTY 0.0.0 GIS MIT Google快速Polyline编码解码扩展
pg_geohash pg_geohash PIGSTY 1.0 GIS MIT 使用GeoHash处理空间坐标的函数包
mobilitydb mobilitydb PGDG 1.1.1 GIS GPLv3 MobilityDB地理空间投影数据管理分析平台
earthdistance earthdistance CONTRIB 1.1 GIS PostgreSQL 计算地球表面上的大圆距离
vector pgvector PGDG 0.7.4 RAG PostgreSQL 向量数据类型和 ivfflat / hnsw 访问方法
vectorscale pgvectorscale PIGSTY 0.4.0 RAG PostgreSQL 使用DiskANN算法对向量进行高效索引
vectorize pg_vectorize PIGSTY 0.18.3 RAG PostgreSQL 在PostgreSQL中封装RAG向量检索服务
pg_similarity pg_similarity PIGSTY 1.0 RAG BSD 3 提供17种距离度量函数
smlar smlar PIGSTY 1.0 RAG PostgreSQL 高效的相似度搜索函数
pg_summarize pg_summarize PIGSTY 0.0.0 FUNC PostgreSQL 使用LLM对文本字段进行总结
pg_tiktoken pg_tiktoken PIGSTY 0.0.1 RAG Apache-2.0 在PostgreSQL中计算OpenAI使用的Token数
pgml pgml PIGSTY 2.9.3 RAG MIT PostgresML:用SQL运行机器学习算法并训练模型
pg4ml pg4ml PIGSTY 2.0 RAG AGPLv3 PG4ML是一个机器学习框架
pg_search pg_search PIGSTY 0.11.1 FTS AGPLv3 ParadeDB BM25算法全文检索插件,ES全文检索
pg_bigm pg_bigm PGDG 1.2 FTS PostgreSQL 基于二字组的多语言全文检索扩展
zhparser zhparser PIGSTY 2.2 FTS PostgreSQL 中文分词,全文搜索解析器
hunspell_cs_cz hunspell_cs_cz PIGSTY 1.0 FTS PostgreSQL Hunspell捷克语全文检索词典
hunspell_de_de hunspell_de_de PIGSTY 1.0 FTS PostgreSQL Hunspell德语全文检索词典
hunspell_en_us hunspell_en_us PIGSTY 1.0 FTS PostgreSQL Hunspell英语全文检索词典
hunspell_fr hunspell_fr PIGSTY 1.0 FTS PostgreSQL Hunspell法语全文检索词典
hunspell_ne_np hunspell_ne_np PIGSTY 1.0 FTS PostgreSQL Hunspell尼泊尔语全文检索词典
hunspell_nl_nl hunspell_nl_nl PIGSTY 1.0 FTS PostgreSQL Hunspell荷兰语全文检索词典
hunspell_nn_no hunspell_nn_no PIGSTY 1.0 FTS PostgreSQL Hunspell挪威语全文检索词典
hunspell_pt_pt hunspell_pt_pt PIGSTY 1.0 FTS PostgreSQL Hunspell葡萄牙语全文检索词典
hunspell_ru_ru hunspell_ru_ru PIGSTY 1.0 FTS PostgreSQL Hunspell俄语全文检索词典
hunspell_ru_ru_aot hunspell_ru_ru_aot PIGSTY 1.0 FTS PostgreSQL Hunspell俄语全文检索词典(来自AOT.ru小组)
fuzzystrmatch fuzzystrmatch CONTRIB 1.2 FTS PostgreSQL 确定字符串之间的相似性和距离
pg_trgm pg_trgm CONTRIB 1.6 FTS PostgreSQL 文本相似度测量函数与模糊检索
citus citus PGDG 12.1-1 OLAP AGPLv3 Citus 分布式数据库
citus_columnar citus PGDG 11.3-1 OLAP AGPLv3 Citus 列式存储
columnar hydra PIGSTY 11.1-11 OLAP AGPLv3 开源列式存储扩展
pg_analytics pg_analytics PIGSTY 0.2.1 OLAP AGPLv3 由 DuckDB 驱动的数据分析引擎
pg_duckdb pg_duckdb PIGSTY 0.0.1 OLAP MIT 在PostgreSQL中的嵌入式DuckDB扩展
duckdb_fdw duckdb_fdw PIGSTY 1.0.0 OLAP MIT DuckDB 外部数据源包装器
pg_parquet pg_parquet PIGSTY 0.1.0 OLAP PostgreSQL 在PostgreSQL与本地/S3中的Parquet文件复制数据
pg_fkpart pg_fkpart PGDG 1.7 OLAP GPLv2 按外键实用程序进行表分区的扩展
pg_partman pg_partman PGDG 5.1.0 OLAP PostgreSQL 用于按时间或 ID 管理分区表的扩展
plproxy plproxy PGDG 2.11.0 OLAP BSD 0 作为过程语言实现的数据库分区
pg_strom pg_strom PGDG 5.1 OLAP PostgreSQL 使用GPU与NVMe加速大数据处理
tablefunc tablefunc CONTRIB 1.0 OLAP PostgreSQL 交叉表函数
age age PIGSTY 1.5.0 FEAT Apache-2.0 Apache AGE,图数据库扩展 (Deb可用)
hll hll PGDG 2.18 FEAT Apache-2.0 hyperloglog 数据类型
rum rum PGDG 1.3 FEAT PostgreSQL RUM 索引访问方法
pg_graphql pg_graphql PIGSTY 1.5.9 FEAT Apache-2.0 PG内的 GraphQL 支持 (RUST, supabase)
pg_jsonschema pg_jsonschema PIGSTY 0.3.3 FEAT Apache-2.0 提供JSON Schema校验能力
jsquery jsquery PGDG 1.1 FEAT PostgreSQL 用于内省 JSONB 数据类型的查询类型
pg_hint_plan pg_hint_plan PGDG 1.6.1 FEAT BSD 3 添加强制指定执行计划的能力
hypopg hypopg PGDG 1.4.1 FEAT PostgreSQL 假设索引,用于创建一个虚拟索引检验执行计划
index_advisor index_advisor PIGSTY 0.2.0 FEAT PostgreSQL 查询索引建议器
plan_filter pg_plan_filter PIGSTY 0.0.1 FEAT PostgreSQL 使用执行计划代价过滤阻止特定查询语句
imgsmlr imgsmlr PIGSTY 1.0 FEAT PostgreSQL 使用Haar小波分析计算图片相似度
pg_ivm pg_ivm PGDG 1.8 FEAT PostgreSQL 增量维护的物化视图
pgmq pgmq PIGSTY 1.4.4 FEAT PostgreSQL 基于Postgres实现类似AWS SQS/RSMQ的消息队列
pgq pgq PGDG 3.5.1 FEAT ISC 通用队列的PG实现
pg_cardano pg_cardano PIGSTY 1.0.2 FEAT MIT Cardano相关工具包:加密函数,地址编解码,区块链处理
rdkit rdkit PGDG 4.3.0 FEAT BSD 3 在PostgreSQL化学领域数据管理功能
bloom bloom CONTRIB 1.0 FEAT PostgreSQL bloom 索引-基于指纹的索引
pg_tle pg_tle PIGSTY 1.2.0 LANG Apache-2.0 AWS 可信语言扩展
plv8 plv8 PIGSTY 3.2.3 LANG PostgreSQL PL/JavaScript (v8) 可信过程程序语言
plluau pllua PGDG 2.0 LANG MIT Lua 程序语言(不受信任的)
hstore_plluau pllua PGDG 1.0 LANG MIT Lua 程序语言的Hstore适配扩展(不受信任的)
pllua pllua PGDG 2.0 LANG MIT Lua 程序语言
hstore_pllua pllua PGDG 1.0 LANG MIT Lua 程序语言的Hstore适配扩展
plprql plprql PIGSTY 0.1.0 LANG Apache-2.0 在PostgreSQL使用PRQL——管线式关系查询语言
pldbgapi pldebugger PGDG 1.1 LANG Artistic 用于调试 PL/pgSQL 函数的服务器端支持
plpgsql_check plpgsql_check PGDG 2.7 LANG MIT 对 plpgsql 函数进行扩展检查
plprofiler plprofiler PGDG 4.2 LANG Artistic 剖析 PL/pgSQL 函数
plsh plsh PGDG 2 LANG MIT PL/sh 程序语言
pljava pljava PGDG 1.6.6 LANG BSD 3 Java 程序语言
plr plr PGDG 8.4.6 LANG GPLv2 从数据库中加载R语言解释器并执行R脚本
pgtap pgtap PGDG 1.3.1 LANG PostgreSQL PostgreSQL单元测试框架
faker faker PGDG 0.5.3 LANG PostgreSQL 插入生成的测试伪造数据,Python库的包装
dbt2 dbt2 PGDG 0.45.0 LANG Artistic OSDL-DBT-2 测试组件
pltcl pltcl CONTRIB 1.0 LANG PostgreSQL PL/TCL 存储过程语言
pltclu pltcl CONTRIB 1.0 LANG PostgreSQL PL/TCL 存储过程语言(未受信/高权限)
plperl plperl CONTRIB 1.0 LANG PostgreSQL PL/Perl 存储过程语言
bool_plperl plperl CONTRIB 1.0 LANG PostgreSQL 在 bool 和 plperl 之间转换
hstore_plperl plperl CONTRIB 1.0 LANG PostgreSQL 在 hstore 和 plperl 之间转换适配类型
jsonb_plperl plperl CONTRIB 1.0 LANG PostgreSQL 在 jsonb 和 plperl 之间转换
plperlu plperlu CONTRIB 1.0 LANG PostgreSQL PL/PerlU 存储过程语言(未受信/高权限)
bool_plperlu plperlu CONTRIB 1.0 LANG PostgreSQL 在 bool 和 plperlu 之间转换
jsonb_plperlu plperlu CONTRIB 1.0 LANG PostgreSQL 在 jsonb 和 plperlu 之间转换
hstore_plperlu plperlu CONTRIB 1.0 LANG PostgreSQL 在 hstore 和 plperlu 之间转换适配类型
plpgsql plpgsql CONTRIB 1.0 LANG PostgreSQL PL/pgSQL 程序设计语言
plpython3u plpython3u CONTRIB 1.0 LANG PostgreSQL PL/Python3 存储过程语言(未受信/高权限)
jsonb_plpython3u plpython3u CONTRIB 1.0 LANG PostgreSQL 在 jsonb 和 plpython3u 之间转换
ltree_plpython3u plpython3u CONTRIB 1.0 LANG PostgreSQL 在 ltree 和 plpython3u 之间转换
hstore_plpython3u plpython3u CONTRIB 1.0 LANG PostgreSQL 在 hstore 和 plpython3u 之间转换
prefix prefix PGDG 1.2.0 TYPE PostgreSQL 前缀树数据类型
semver semver PGDG 0.32.1 TYPE PostgreSQL 语义版本号数据类型
unit pgunit PGDG 7 TYPE GPLv3 SI 国标单位扩展
md5hash md5hash PIGSTY 1.0.1 TYPE BSD 2 提供128位MD5的原生数据类型
asn1oid asn1oid PIGSTY 1 TYPE GPLv3 ASN1OID数据类型支持
roaringbitmap roaringbitmap PIGSTY 0.5 TYPE Apache-2.0 支持RoaringBitmap数据类型
pgfaceting pgfaceting PIGSTY 0.2.0 TYPE BSD 3 使用倒排索引的高速切面查询
pg_sphere pgsphere PIGSTY 1.5.1 TYPE BSD 3 球面对象函数、运算符与索引支持
country pg_country PIGSTY 0.0.3 TYPE PostgreSQL 国家代码数据类型,遵循ISO 3166-1标准
currency pg_currency PIGSTY 0.0.3 TYPE MIT 使用1字节表示的货币数据类型
pgmp pgmp PGDG 1.1 TYPE LGPLv3 多精度算术扩展
numeral numeral PIGSTY 1 TYPE GPLv2 数值类型扩展
pg_rational pg_rational PIGSTY 0.0.2 TYPE MIT 使用BIGINT表示的有理数数据类型
uint pguint PGDG 0 TYPE PostgreSQL 无符号整型数据类型
uint128 pg_uint128 PIGSTY 1.0.0 TYPE PostgreSQL 原生128位无符号整型数据类型
ip4r ip4r PGDG 2.4 TYPE PostgreSQL PostgreSQL 的 IPv4/v6 和 IPv4/v6 范围索引类型
uri pg_uri PIGSTY 1 TYPE PostgreSQL URI数据类型
pgemailaddr pgemailaddr PIGSTY 0 TYPE PostgreSQL Email地址数据类型
acl acl PIGSTY 1.0.4 TYPE BSD-2 ACL数据类型
debversion debversion PGDG 1.2 TYPE PostgreSQL Debian版本号数据类型
pg_rrule pg_rrule PGDG 0.2.0 TYPE MIT 日历重复规则RRULE数据类型
timestamp9 timestamp9 PGDG 1.4.0 TYPE MIT 纳秒分辨率时间戳
chkpass chkpass PIGSTY 1.0 TYPE PostgreSQL 数据类型:自动加密的密码
isn isn CONTRIB 1.2 TYPE PostgreSQL 用于国际产品编号标准的数据类型
seg seg CONTRIB 1.4 TYPE PostgreSQL 表示线段或浮点间隔的数据类型
cube cube CONTRIB 1.5 TYPE PostgreSQL 用于存储多维立方体的数据类型
ltree ltree CONTRIB 1.2 TYPE PostgreSQL 用于表示分层树状结构的数据类型
hstore hstore CONTRIB 1.8 TYPE PostgreSQL 用于存储(键,值)对集合的数据类型
citext citext CONTRIB 1.6 TYPE PostgreSQL 提供大小写不敏感的字符串类型
xml2 xml2 CONTRIB 1.1 TYPE PostgreSQL XPath 查询和 XSLT
topn topn PGDG 2.6.0 FUNC AGPLv3 top-n JSONB 的类型
gzip pg_gzip PGDG 1.0 FUNC MIT 使用SQL执行Gzip压缩与解压缩
zstd pg_zstd PIGSTY 1.1.0 FUNC ISC ZSTD压缩解压缩函数包
http pg_http PGDG 1.6 FUNC MIT HTTP客户端,允许在数据库内收发HTTP请求 (supabase)
pg_net pg_net PIGSTY 0.9.2 FUNC Apache-2.0 用 SQL 进行异步非阻塞HTTP/HTTPS 请求的扩展 (supabase)
pg_html5_email_address pg_html5_email_address PIGSTY 1.2.3 FUNC PostgreSQL 验证Email是否符合HTML5规范的扩展
pgsql_tweaks pgsql_tweaks PGDG 0.10.6 FUNC PostgreSQL 一些日常会用到的便利函数与视图
pg_extra_time pg_extra_time PGDG 1.1.3 FUNC PostgreSQL 一些关于日期与时间的扩展函数
timeit pg_timeit PIGSTY 1.0 FUNC PostgreSQL 使用SQL语句执行高精度计时
count_distinct count_distinct PGDG 3.0.1 FUNC BSD 2 COUNT(DISTINCT …) 聚合的替代方案
extra_window_functions extra_window_functions PGDG 1.0 FUNC PostgreSQL 额外的窗口函数
first_last_agg first_last_agg PIGSTY 0.1.4 FUNC PostgreSQL first() 与 last() 聚合函数
tdigest tdigest PGDG 1.4.1 FUNC Apache-2.0 tdigest 聚合函数
aggs_for_vecs aggs_for_vecs PIGSTY 1.3.0 FUNC MIT 针对数组类型的聚合函数集合扩展
aggs_for_arrays aggs_for_arrays PIGSTY 1.3.2 FUNC MIT 计算数组聚合统计值的函数包
arraymath pg_arraymath PIGSTY 1.1 FUNC MIT 数组逐元素数学运算符包
quantile quantile PIGSTY 1.1.7 FUNC BSD Quantile聚合函数
lower_quantile lower_quantile PIGSTY 1.0.0 FUNC BSD-2 Lower Quantile 聚合函数
pg_idkit pg_idkit PIGSTY 0.2.4 FUNC Apache-2.0 生成各式各样的唯一标识符:UUIDv6, ULID, KSUID
pg_uuidv7 pg_uuidv7 PGDG 1.6 FUNC MPLv2 UUIDv7 支持
permuteseq permuteseq PIGSTY 1.2 FUNC PostgreSQL 伪随机数ID置换生成器
pg_hashids pg_hashids PIGSTY 1.3 FUNC MIT 加盐将整型ID转为短字符串ID
sequential_uuids sequential_uuids PGDG 1.0.2 FUNC MIT 生成连续生成的UUID
pg_math pg_math PIGSTY 1.0 FUNC GPLv3 使用GSL库的数学统计函数
random pg_random PIGSTY 2.0.0-dev FUNC PostgreSQL 随机数生成器
base36 pg_base36 PIGSTY 1.0.0 FUNC MIT Base36编码解码扩展
base62 pg_base62 PIGSTY 0.0.1 FUNC MIT Base62编码解码扩展
pg_base58 pg_base58 PIGSTY 0.0.1 FUNC MIT Base58 编码/解码函数
floatvec floatvec PIGSTY 1.0.1 FUNC MIT 数组类型数学运算扩展
financial pg_financial PIGSTY 1.0.1 FUNC PostgreSQL 金融领域聚合函数
pgjwt pgjwt PIGSTY 0.2.0 FUNC MIT JSON Web Token API 的PG实现 (supabase)
pg_hashlib pg_hashlib PIGSTY 1.1 FUNC PostgreSQL 稳定哈希函数包
shacrypt shacrypt PIGSTY 1.1 FUNC PostgreSQL 实现SHA256-CRYPT与SHA512-CRYPT密钥加密算法
cryptint cryptint PIGSTY 1.0.0 FUNC PostgreSQL 加密INT与BIGINT类型
pguecc pg_ecdsa PIGSTY 1.0 FUNC BSD-2 PostgreSQL的uECC绑定,椭圆曲线加解密函数包
pgpcre pgpcre PIGSTY 1 FUNC PostgreSQL PCRE/Perl风格的正则表达式支持
icu_ext icu_ext PIGSTY 1.9 FUNC PostgreSQL 访问ICU库提供的函数
pgqr pgqr PIGSTY 1.0 FUNC BSD-3 从数据库中直接生成QR二维码
envvar envvar PIGSTY 1.0.0 FUNC PostgreSQL 获取环境变量的函数
pg_protobuf pg_protobuf PIGSTY 1.0 FUNC MIT 提供Protobuf函数支持
url_encode url_encode PIGSTY 1.2 FUNC PostgreSQL 提供URL编码解码函数
refint refint CONTRIB 1.0 FUNC PostgreSQL 实现引用完整性的函数
autoinc autoinc CONTRIB 1.0 FUNC PostgreSQL 用于自动递增字段的函数
insert_username insert_username CONTRIB 1.0 FUNC PostgreSQL 用于跟踪谁更改了表的函数
moddatetime moddatetime CONTRIB 1.0 FUNC PostgreSQL 跟踪最后修改时间
tsm_system_time tsm_system_time CONTRIB 1.0 FUNC PostgreSQL 接受毫秒数限制的 TABLESAMPLE 方法
dict_xsyn dict_xsyn CONTRIB 1.0 FUNC PostgreSQL 用于扩展同义词处理的文本搜索字典模板
tsm_system_rows tsm_system_rows CONTRIB 1.0 FUNC PostgreSQL 接受行数限制的 TABLESAMPLE 方法
tcn tcn CONTRIB 1.0 FUNC PostgreSQL 用触发器通知变更
uuid-ossp uuid-ossp CONTRIB 1.1 FUNC PostgreSQL 生成通用唯一标识符(UUIDs)
btree_gist btree_gist CONTRIB 1.7 FUNC PostgreSQL 用GiST索引常见数据类型
btree_gin btree_gin CONTRIB 1.3 FUNC PostgreSQL 用GIN索引常见数据类型
intarray intarray CONTRIB 1.5 FUNC PostgreSQL 1维整数数组的额外函数、运算符和索引支持
intagg intagg CONTRIB 1.1 FUNC PostgreSQL 整数聚合器和枚举器(过时)
dict_int dict_int CONTRIB 1.0 FUNC PostgreSQL 用于整数的文本搜索字典模板
unaccent unaccent CONTRIB 1.1 FUNC PostgreSQL 删除重音的文本搜索字典
pg_repack pg_repack PGDG 1.5.0 ADMIN BSD 3 在线垃圾清理与表膨胀治理
pg_squeeze pg_squeeze PGDG 1.7 ADMIN BSD 2 从关系中删除未使用空间
pg_dirtyread pg_dirtyread PIGSTY 2 ADMIN BSD 3 从表中读取尚未垃圾回收的行
pgfincore pgfincore PGDG 1.3.1 ADMIN BSD 3 检查和管理操作系统缓冲区缓存
pgdd pgdd PIGSTY 0.5.2 ADMIN MIT 提供通过标准SQL查询数据库目录集簇的能力
ddlx ddlx PGDG 0.27 ADMIN PostgreSQL 提取数据库对象的DDL
prioritize pg_prioritize PGDG 1.0 ADMIN PostgreSQL 获取和设置 PostgreSQL 后端的优先级
pg_checksums pg_checksums PGDG 1.1 ADMIN BSD 2 在离线模式下激活/启用/禁用数据库集群的校验和功能
pg_readonly pg_readonly PGDG 1.0.0 ADMIN PostgreSQL 将集群设置为只读
safeupdate safeupdate PGDG 1.4 ADMIN ISC 强制在 UPDATE 和 DELETE 时提供 Where 条件
pg_permissions pg_permissions PGDG 1.3 ADMIN BSD 2 查看对象权限并将其与期望状态进行比较
pgautofailover pgautofailover PGDG 2.1 ADMIN PostgreSQL PG 自动故障迁移
pg_catcheck pg_catcheck PGDG 1.4.0 ADMIN BSD 3 用于诊断系统目录是否损坏的工具
pre_prepare preprepare PIGSTY 0.4 ADMIN PostgreSQL 在服务端预先准备好PreparedStatement备用
pgcozy pgcozy PIGSTY 1.0 ADMIN PostgreSQL 根据先前的pg_buffercache快照预热内存缓冲区
pg_orphaned pg_orphaned PIGSTY 1.0 ADMIN PostgreSQL 处理孤儿文件的扩展插件
pg_crash pg_crash PIGSTY 1.0 ADMIN BSD-3 向数据库进程随机发送信号模拟故障
pg_cheat_funcs pg_cheat_funcs PIGSTY 1.0 ADMIN PostgreSQL 一些超级实用的作弊函数
pg_savior pg_savior PIGSTY 0.0.1 ADMIN Apache-2.0 阻止不带条件的全表更新以避免意外事故
table_log table_log PIGSTY 0.6.1 ADMIN PostgreSQL 记录某张表的修改日志并做表/行级时间点恢复
pg_fio pg_fio PIGSTY 1.0 ADMIN BSD-3 PostgreSQL文件IO函数包
pgpool_adm pgpool PGDG 1.5 ADMIN PostgreSQL PGPool 管理函数
pgpool_recovery pgpool PGDG 1.4 ADMIN PostgreSQL PGPool辅助扩展,从v4.3提供的恢复函数
pgpool_regclass pgpool PGDG 1.0 ADMIN PostgreSQL PGPool辅助扩展,RegClass替代
pgagent pgagent PGDG 4.2 ADMIN PostgreSQL PostgreSQL任务调度工具,与PGADMIN配合使用
vacuumlo vacuumlo CONTRIB 16.3 ADMIN PostgreSQL 从PostgreSQL中移除孤儿数据库文件的实用命令行工具
pg_prewarm pg_prewarm CONTRIB 1.2 ADMIN PostgreSQL 预热关系数据
oid2name oid2name CONTRIB 16.3 ADMIN PostgreSQL 用于检查PG文件结构的实用命令行工具
lo lo CONTRIB 1.1 ADMIN PostgreSQL 大对象维护
basic_archive basic_archive CONTRIB 16.3 ADMIN PostgreSQL 归档模块样例
basebackup_to_shell basebackup_to_shell CONTRIB 16.3 ADMIN PostgreSQL 添加一种备份到Shell终端到基础备份方式
old_snapshot old_snapshot CONTRIB 1.0 ADMIN PostgreSQL 支持 old_snapshot_threshold 的实用程序
adminpack adminpack CONTRIB 2.1 ADMIN PostgreSQL PostgreSQL 管理函数集合
amcheck amcheck CONTRIB 1.3 ADMIN PostgreSQL 校验关系完整性
pg_surgery pg_surgery CONTRIB 1.0 ADMIN PostgreSQL 对损坏的关系进行手术
pg_profile pg_profile PGDG 4.7 STAT BSD 2 PostgreSQL 数据库负载记录与AWR报表工具
pg_show_plans pg_show_plans PGDG 2.1 STAT PostgreSQL 打印所有当前正在运行查询的执行计划
pg_stat_kcache pg_stat_kcache PGDG 2.3.0 STAT BSD 3 内核统计信息收集
pg_stat_monitor pg_stat_monitor PGDG 2.1 STAT BSD 3 提供查询聚合统计、客户端信息、执行计划详细信息和直方图
pg_qualstats pg_qualstats PGDG 2.1.1 STAT BSD 3 收集有关 quals 的统计信息的扩展
pg_store_plans pg_store_plans PGDG 1.8 STAT BSD 3 跟踪所有执行的 SQL 语句的计划统计信息
pg_track_settings pg_track_settings PGDG 2.1.2 STAT PostgreSQL 跟踪设置更改
pg_wait_sampling pg_wait_sampling PGDG 1.1 STAT PostgreSQL 基于采样的等待事件统计
system_stats system_stats PGDG 3.0 STAT PostgreSQL PostgreSQL 的系统统计函数
meta pg_meta PIGSTY 0.4.0 STAT BSD-2 标准化,更友好的PostgreSQL系统目录视图
pgnodemx pgnodemx PIGSTY 1.7 STAT Apache-2.0 使用SQL查询获取操作系统指标
pg_proctab pgnodemx PIGSTY 0.0.10-compat STAT BSD 3 通过SQL接口访问操作系统进程表
pg_sqlog pg_sqlog PIGSTY 1.6 STAT BSD 3 提供访问PostgreSQL日志的SQL接口
bgw_replstatus bgw_replstatus PGDG 1.0.6 STAT PostgreSQL 用于汇报本机主从状态的后台工作进程
pgmeminfo pgmeminfo PGDG 1.0 STAT MIT 显示内存使用情况
toastinfo toastinfo PIGSTY 1 STAT PostgreSQL 显示TOAST字段的详细信息
explain_ui pg_explain_ui PIGSTY 0.0.1 STAT PostgreSQL 快速跳转至PEV查阅可视化执行计划
pg_relusage pg_relusage PIGSTY 0.0.1 STAT PostgreSQL 打印查询引用的表与列
pg_mon pg_mon PIGSTY 1.0 STAT MIT 查看正在执行中的查询状态
pg_statviz pg_statviz PGDG 0.6 STAT BSD 3 可视化统计指标并分析时间序列
pgexporter_ext pgexporter_ext PGDG 0.2.3 STAT BSD 3 PGExporter的额外指标支持
pg_top pg_top PGDG 3.7.0 STAT BSD 3 像unix top命令一样监控PG进程
pagevis pagevis PIGSTY 0.1 STAT MIT 使用ASCII字符可视化数据库物理页面布局
powa powa PGDG 4.2.2 STAT PostgreSQL PostgreSQL 工作负载分析器-核心
pageinspect pageinspect CONTRIB 1.12 STAT PostgreSQL 检查数据库页面二进制内容
pgrowlocks pgrowlocks CONTRIB 1.2 STAT PostgreSQL 显示行级锁信息
sslinfo sslinfo CONTRIB 1.2 STAT PostgreSQL 关于 SSL 证书的信息
pg_buffercache pg_buffercache CONTRIB 1.4 STAT PostgreSQL 检查共享缓冲区缓存
pg_walinspect pg_walinspect CONTRIB 1.1 STAT PostgreSQL 用于检查 PostgreSQL WAL 日志内容的函数
pg_freespacemap pg_freespacemap CONTRIB 1.2 STAT PostgreSQL 检查自由空间映射的内容(FSM)
pg_visibility pg_visibility CONTRIB 1.2 STAT PostgreSQL 检查可见性图(VM)和页面级可见性信息
pgstattuple pgstattuple CONTRIB 1.5 STAT PostgreSQL 显示元组级统计信息
auto_explain auto_explain CONTRIB 16.3 STAT PostgreSQL 提供一种自动记录执行计划的手段
pg_stat_statements pg_stat_statements CONTRIB 1.10 STAT PostgreSQL 跟踪所有执行的 SQL 语句的计划和执行统计信息
passwordcheck_cracklib passwordcheck PGDG 3.0.0 SEC LGPLv2 使用cracklib加固PG用户密码
supautils supautils PIGSTY 2.5.0 SEC Apache-2.0 用于在云环境中确保数据库集群的安全
pgsodium pgsodium PIGSTY 3.1.9 SEC BSD 3 表数据加密存储 TDE
supabase_vault pg_vault PIGSTY 0.2.8 SEC Apache-2.0 在 Vault 中存储加密凭证的扩展 (supabase)
anon anonymizer PGDG 1.3.2 SEC PostgreSQL 数据匿名化处理工具
pg_tde pg_tde PIGSTY 1.0 SEC MIT 试点性质的加密存储引擎
pgsmcrypto pgsmcrypto PIGSTY 0.1.0 SEC MIT 为PostgreSQL提供商密算法支持:SM2,SM3,SM4
pgaudit pgaudit PGDG 16.0 SEC PostgreSQL 提供审计功能
pgauditlogtofile pgauditlogtofile PGDG 1.6 SEC PostgreSQL pgAudit 子扩展,将审计日志写入单独的文件中
pg_auth_mon pg_auth_mon PGDG 1.1 SEC MIT 监控每个用户的连接尝试
credcheck credcheck PGDG 2.7.0 SEC MIT 明文凭证检查器
pgcryptokey pgcryptokey PGDG 1.0 SEC PostgreSQL PG密钥管理
pg_jobmon pg_jobmon PGDG 1.4.1 SEC PostgreSQL 记录和监控函数
logerrors logerrors PGDG 2.1 SEC BSD 3 用于收集日志文件中消息统计信息的函数
login_hook login_hook PGDG 1.6 SEC GPLv3 在用户登陆时执行login_hook.login()函数
set_user set_user PGDG 4.1.0 SEC PostgreSQL 增加了日志记录的 SET ROLE
pg_snakeoil pg_snakeoil PIGSTY 1 SEC PostgreSQL PostgreSQL动态链接库反病毒功能
pgextwlist pgextwlist PIGSTY 1.17 SEC PostgreSQL PostgreSQL扩展白名单功能
pg_auditor pg_auditor PIGSTY 0.2 SEC BSD-3 审计数据变更并提供闪回能力
sslutils sslutils PIGSTY 1.3 SEC PostgreSQL 使用SQL管理SSL证书
noset noset PIGSTY 0.3.0 SEC AGPLv3 阻止非超级用户使用SET/RESET设置变量
sepgsql sepgsql CONTRIB 16.3 SEC PostgreSQL 基于SELinux标签的强制访问控制
auth_delay auth_delay CONTRIB 16.3 SEC PostgreSQL 在返回认证失败前暂停一会,避免爆破
pgcrypto pgcrypto CONTRIB 1.3 SEC PostgreSQL 实用加解密函数
passwordcheck passwordcheck CONTRIB 16.3 SEC PostgreSQL 用于强制拒绝修改弱密码的扩展
wrappers wrappers PIGSTY 0.4.3 FDW Apache-2.0 Supabase提供的外部数据源包装器捆绑包
multicorn multicorn PGDG 3.0 FDW PostgreSQL 用Python编写自定义的外部数据源包装器
odbc_fdw odbc_fdw PGDG 0.5.1 FDW PostgreSQL 访问ODBC可访问的任何外部数据源
jdbc_fdw jdbc_fdw PGDG 1.2 FDW PostgreSQL 访问JDBC可访问的任何外部数据源
mysql_fdw mysql_fdw PGDG 1.2 FDW BSD 3 MySQL外部数据包装器
oracle_fdw oracle_fdw PGDG 1.2 FDW PostgreSQL 提供对Oracle的外部数据源包装器
tds_fdw tds_fdw PGDG 2.0.4 FDW PostgreSQL TDS 数据库(Sybase/SQL Server)外部数据包装器
db2_fdw db2_fdw PGDG 6.0.1 FDW PostgreSQL 提供对DB2的外部数据源包装器
sqlite_fdw sqlite_fdw PGDG 1.1 FDW PostgreSQL SQLite 外部数据包装器
pgbouncer_fdw pgbouncer_fdw PGDG 1.2.0 FDW PostgreSQL 用SQL查询pgbouncer统计信息,并执行pgbouncer命令
mongo_fdw mongo_fdw PGDG 1.1 FDW LGPLv3 MongoDB 外部数据包装器
redis_fdw redis_fdw PIGSTY 1.0 FDW PostgreSQL 查询外部Redis数据源
redis pg_redis_pubsub PIGSTY 0.0.1 FDW MIT 从PG向Redis发送Pub/Sub消息
kafka_fdw kafka_fdw PIGSTY 0.0.3 FDW PostgreSQL Kafka外部数据源包装器
hdfs_fdw hdfs_fdw PGDG 2.0.5 FDW BSD 3 hdfs 外部数据包装器
firebird_fdw firebird_fdw PIGSTY 1.4.0 FDW PostgreSQL Firebird外部数据源包装器
aws_s3 aws_s3 PIGSTY 0.0.1 FDW Apache-2.0 从S3导入导出数据的外部数据源包装器
log_fdw log_fdw PIGSTY 1.4 FDW Apache-2.0 访问PostgreSQL日志文件的FDW
dblink dblink CONTRIB 1.2 FDW PostgreSQL 从数据库内连接到其他 PostgreSQL 数据库
file_fdw file_fdw CONTRIB 1.0 FDW PostgreSQL 访问外部文件的外部数据包装器
postgres_fdw postgres_fdw CONTRIB 1.1 FDW PostgreSQL 用于远程 PostgreSQL 服务器的外部数据包装器
orafce orafce PGDG 4.13 SIM BSD 0 模拟 Oracle RDBMS 的一部分函数和包的函数和运算符
pgtt pgtt PGDG 4.0.0 SIM ISC 类似Oracle的全局临时表功能
session_variable session_variable PIGSTY 3.4 SIM GPLv3 Oracle兼容的会话变量/常量操作函数
pg_statement_rollback pg_statement_rollback PGDG 1.4 SIM ISC 在服务端提供类似Oracle/DB2的语句级回滚能力
pg_dbms_metadata pg_dbms_metadata PGDG 1.0.0 SIM PostgreSQL 添加 Oracle DBMS_METADATA 兼容性支持的扩展
pg_dbms_lock pg_dbms_lock PGDG 1.0.0 SIM PostgreSQL 为PG添加对 Oracle DBMS_LOCK 的完整兼容性支持
pg_dbms_job pg_dbms_job PGDG 1.5.0 SIM PostgreSQL 添加 Oracle DBMS_JOB 兼容性支持的扩展
babelfishpg_common babelfishpg_common WILTON 3.3.3 SIM Apache-2.0 SQL Server 数据类型兼容扩展
babelfishpg_tsql babelfishpg_tsql WILTON 3.3.1 SIM Apache-2.0 SQL Server SQL语法兼容性扩展
babelfishpg_tds babelfishpg_tds WILTON 1.0.0 SIM Apache-2.0 SQL Server TDS线缆协议兼容扩展
babelfishpg_money babelfishpg_money WILTON 1.1.0 SIM Apache-2.0 SQL Server 货币数据类型兼容扩展
pgmemcache pgmemcache PGDG 2.3.0 SIM MIT 为PG提供memcached兼容接口
pglogical pglogical PGDG 2.4.4 ETL PostgreSQL PostgreSQL逻辑复制:三方扩展实现
pglogical_origin pglogical PGDG 1.0.0 ETL PostgreSQL 用于从 Postgres 9.4 升级时的兼容性虚拟扩展
pglogical_ticker pglogical PGDG 1.4 ETL PostgreSQL pglogical复制延迟的精确视图
pgl_ddl_deploy pgl_ddl_deploy PGDG 2.2 ETL MIT 使用 pglogical 执行自动 DDL 部署
pg_failover_slots pg_failover_slots PIGSTY 1.0.1 ETL PostgreSQL 在Failover过程中保留复制槽
wal2json wal2json PGDG 2.5.3 ETL BSD 3 用逻辑解码捕获 JSON 格式的 CDC 变更
wal2mongo wal2mongo PIGSTY 1.0.7 ETL Apache-2.0 使用逻辑解码捕获MongoDB JSON格式的CDC变更
decoderbufs decoderbufs PGDG 0.1.0 ETL MIT 将WAL逻辑解码为ProtocolBuffer协议的消息
decoder_raw decoder_raw PIGSTY 1.0 ETL PostgreSQL 逻辑复制解码输出插件:RAW SQL格式
test_decoding test_decoding CONTRIB 16.3 ETL PostgreSQL 基于SQL的WAL逻辑解码样例
mimeo mimeo PIGSTY 1.5.1 ETL PostgreSQL 在PostgreSQL实例间进行表级复制
repmgr repmgr PGDG 5.4 ETL GPLv3 PostgreSQL复制管理组件
pgcopydb pgcopydb PGDG 0.15 ETL PostgreSQL 将一个PostgreSQL数据库拷贝至目标服务器
pgloader pgloader PGDG 3.6.10 ETL PostgreSQL 从MySQL/SQLite/MSSQL一键迁移至PostgreSQL!
pg_fact_loader pg_fact_loader PGDG 2.0 ETL MIT 在 Postgres 中构建事实表
pg_bulkload pg_bulkload PGDG 3.1.21 ETL BSD 3 向 PostgreSQL 中高速加载数据
pg_comparator pg_comparator PGDG 2.2.5 ETL BSD 3 比对两个PostgreSQL数据库内容的差异
pgimportdoc pgimportdoc PGDG 0.1.4 ETL BSD 2 将XML,JSON,BYTEA文档导入PG数据库
pgexportdoc pgexportdoc PGDG 0.1.4 ETL BSD 2 从PG中导出XML,JSON,BYTEA文档

2.1 - 扩展元数据

关于 PostgreSQL 扩展插件元数据的说明

每个扩展都有一些元数据属性,以下是这些属性的说明

  • id

扩展标识,由 Pigsty 唯一分配给每个扩展的整型标识符,用于内部排序。

  • name

扩展名,扩展在 PostgreSQL 扩展系统目录中的名称,用于 CREATE EXTESION 时引用。

扩展一般会带有同名的 <name>.control<name>*.so,以及 <name>*.sql 文件。

  • alias

扩展别名,由 Pigsty 为每个逻辑扩展分配的唯一名称,通常与 扩展名 name 保持一致。 但存在一些特例,比如安装一个扩展 RPM 包如果引入多个 Extension,那么这些 Extension 会共享一个别名,例如 postgis

  • version

扩展默认版本,通常是扩展的最新版本。在一些特殊情况下,RPM 与 Debian 中可用的扩展版本可能略微有所不同。

  • category

扩展分类,用于区分扩展的功能类型,例如 gistimeragftsolapfeatlangtypefuncadminstatsecfdwsimetl 等。

  • tags

一些标签,用于描述扩展的特性

  • repo

扩展的来源仓库,CONTRIB 代表这是一个 PostgreSQL 自带扩展,PGDG 代表这是一个 PGDG 第一方扩展,PIGSTY 代表这是一个 Pigsty 第三方扩展。

  • lang

扩展使用的编程语言,通常为 C,也有一些 C++Rust 编写的扩展。也有纯 SQL 与纯数据组成的扩展。

  • need_load

带有 Load 标记,意味着这个扩展使用了 PostgreSQL Hook,需要动态加载,并重启 PostgreSQL 生效。 只有少量扩展需要动态加载,大部分扩展都是静态加载的。

  • need_ddl

带有 DDL 标记,意味着这个扩展需要执行 DDL 语句:CREATE EXTENSION

绝大多数扩展都需要执行 CREATE EXTENSION DDL 语句完成创建,但也有一些特例,例如 pg_stat_statementswal2json 等。

  • need_dbsu

安装此扩展是否需要超级用户权限?或者说,这个扩展是否被“信任” —— 只在数据库内部提供功能。

少部分扩展因为只在数据库内部提供功能,因此不需要超级用户权限就能安装,任何持有 CREATE 权限的用户都可以安装受信任的扩展。

  • relocatable

扩展是否可以被重定位?即是否可以被安装到其他 Schema 中?大部分扩展都是可以被重定位的,但也有一些特例,这些扩展会显式指定自己使用的扩展名。

  • schemas

如果扩展是可重定位的,那么它可以被安装到指定的 Schema 中,这个属性指定了扩展的默认 Schema。 PostgreSQL 默认只允许扩展使用一个 Schema,但一些扩展并不遵循这个规则,例如 citustimescaledb 等。

  • pg_ver

扩展支持的 PostgreSQL 版本,默认只考虑支持声明周期内的版本,即 12 - 16 。

  • requires

此扩展依赖的其他扩展,如果有的话。一个扩展可能同时依赖多个其他扩展,这些依赖关系通常在扩展的 control 文件中的 requires 字段里声明。

安装扩展时,可以通过 CREATE EXTENSION xxx CASCADE 语句自动安装依赖的扩展。

  • pkg

扩展软件包(RPM/DEB)名称,这里使用 $v 来替代具体的 PostgreSQL 大版本号。

  • pkg_ver

扩展软件包(RPM/DEB)的版本号,通常 RPM / DEB 包的版本与扩展本身的版本(version,从系统视图中得到)是一致的。 但依然存在极个别特例,软件包的版本与扩展本身的版本是不一致,甚至是独立演进管理的。

  • pkg_deps

扩展软件包(RPM/DEB)的依赖,不同于扩展本身的依赖(requires),这里是扩展 RPM/DEB 包的特殊依赖。

  • url

扩展的官方网站或者源代码仓库地址。

  • license

扩展使用的开源许可证,通常是 PostgreSQLMITApacheGPL 等。

  • en_desc

扩展的英文描述,用于描述扩展的功能与用途。

  • zh_desc

扩展的中文描述,用于描述扩展的功能与用途。

  • comment

一些额外的注释,用于描述扩展的特性或者注意事项。

2.2 - RPM 扩展清单

338 个在 EL 兼容系统中可用的 RPM 扩展包清单与支持情况。

权威扩展列表现已搬迁至专门子站点:https://ext.pigsty.io

Pigsty 在 EL 系统中总共有 338 个可用 RPM 扩展,其中有 19 个RPM独占扩展,缺少 7 个DEB独占扩展。 在EL可用扩展中,PG 自带了 70Contrib扩展,PGDG YUM 仓库提供了 134 个,Pigsty 提供了 130 个。 当前首要大版本 PostgreSQL 16 支持了 333 个扩展,而 PostgreSQL 17 支持了其中的 297 个。

扩展名(官网) 标准名(简介) 包名 仓库 版本 类目 许可证 PG大版本支持 LOAD DDL DBSU RELOC 简介
timescaledb timescaledb timescaledb-2-postgresql-$v* PGDG 2.17.0 TIME Timescale 17,16,15,14,13,12 时序数据库扩展插件
timeseries pg_timeseries pg_timeseries_$v PIGSTY 0.1.6 TIME PostgreSQL 17,16,15,14,13,12 Tembo时序数据API封装
periods periods periods_$v* PGDG 1.2 TIME PostgreSQL 17,16,15,14,13,12 为 PERIODs 和 SYSTEM VERSIONING 提供标准 SQL 功能
temporal_tables temporal_tables temporal_tables_$v* PIGSTY 1.2.2 TIME BSD 2 16,15,14,13,12 时态表功能支持
emaj emaj e-maj_$v* PGDG 4.5.0 TIME GPLv3 16,15,14,13,12 让数据库的子集具有细粒度日志和时间旅行功能
table_version table_version table_version_$v* PGDG 1.10.3 TIME BSD 3 17,16,15,14,13,12 PostgreSQL 版本控制表扩展
pg_cron pg_cron pg_cron_$v* PGDG 1.6 TIME PostgreSQL 17,16,15,14,13,12 定时任务调度器
pg_later pg_later pg_later_$v PIGSTY 0.1.1 TIME PostgreSQL 16,15,14,13 执行查询,并在稍后异步获取查询结果
pg_background pg_background pg_background_$v* PGDG 1.0 TIME GPLv3 17,16,15,14,13,12 在后台运行 SQL 查询
pg_timetable pg_timetable pg_timetable PIGSTY 5.9.0 TIME PostgreSQL 17,16,15,14,13,12 PostgreSQL高级任务调度器
postgis postgis postgis34_$v* PGDG 3.5.0 GIS GPLv2 17,16,15,14,13,12 PostGIS 几何和地理空间扩展
postgis_topology postgis postgis34_$v* PGDG 3.5.0 GIS GPLv2 17,16,15,14,13,12 PostGIS 拓扑空间类型和函数
postgis_raster postgis postgis34_$v* PGDG 3.5.0 GIS GPLv2 17,16,15,14,13,12 PostGIS 光栅类型和函数
postgis_sfcgal postgis postgis34_$v* PGDG 3.5.0 GIS GPLv2 17,16,15,14,13,12 PostGIS SFCGAL 函数
postgis_tiger_geocoder postgis postgis34_$v* PGDG 3.5.0 GIS GPLv2 17,16,15,14,13,12 PostGIS tiger 地理编码器和反向地理编码器
address_standardizer postgis postgis34_$v* PGDG 3.5.0 GIS GPLv2 17,16,15,14,13,12 地址标准化函数。
address_standardizer_data_us postgis postgis34_$v* PGDG 3.5.0 GIS GPLv2 17,16,15,14,13,12 地址标准化函数:美国数据集示例
pgrouting pgrouting pgrouting_$v* PGDG 3.6.0 GIS GPLv2 17,16,15,14,13,12 提供寻路能力
pointcloud pointcloud pointcloud_$v* PIGSTY 1.2.5 GIS BSD 3 17,16,15,14,13,12 提供激光雷达点云数据类型支持
pointcloud_postgis pointcloud pointcloud_$v* PGDG 1.2.5 GIS BSD 3 17,16,15,14,13,12 将激光雷达点云与PostGIS几何类型相集成
h3 pg_h3 h3-pg_$v* PGDG 4.1.3 GIS Apache-2.0 16,15,14,13,12 H3六边形层级索引支持
h3_postgis pg_h3 h3-pg_$v* PGDG 4.1.3 GIS Apache-2.0 16,15,14,13,12 H3与PostGIS集成的扩展插件
q3c q3c q3c_$v* PIGSTY 2.0.1 GIS GPLv2 17,16,15,14,13,12 Q3C天空索引插件
ogr_fdw ogr_fdw ogr_fdw_$v* PGDG 1.1 GIS MIT 16,15,14,13,12 GIS 数据外部数据源包装器
geoip geoip geoip_$v* PGDG 0.3.0 GIS BSD 2 17,16,15,14,13,12 IP 地理位置扩展(围绕 MaxMind GeoLite 数据集的包装器)
pg_polyline pg_polyline pg_polyline_$v PIGSTY 0.0.0 GIS MIT 17,16,15,14,13,12 Google快速Polyline编码解码扩展
pg_geohash pg_geohash pg_geohash_$v* PIGSTY 1.0 GIS MIT 17,16,15,14,13,12 使用GeoHash处理空间坐标的函数包
earthdistance earthdistance postgresql$v-contrib CONTRIB 1.1 GIS PostgreSQL 17,16,15,14,13,12 计算地球表面上的大圆距离
vector pgvector pgvector_$v* PGDG 0.7.4 RAG PostgreSQL 17,16,15,14,13,12 向量数据类型和 ivfflat / hnsw 访问方法
vectorscale pgvectorscale pgvectorscale_$v PIGSTY 0.4.0 RAG PostgreSQL 17,16,15,14,13 使用DiskANN算法对向量进行高效索引
vectorize pg_vectorize pg_vectorize_$v PIGSTY 0.18.3 RAG PostgreSQL 16,15,14 在PostgreSQL中封装RAG向量检索服务
pg_similarity pg_similarity pg_similarity_$v* PIGSTY 1.0 RAG BSD 3 17,16,15,14,13,12 提供17种距离度量函数
smlar smlar smlar_$v* PIGSTY 1.0 RAG PostgreSQL 17,16,15,14,13 高效的相似度搜索函数
pg_summarize pg_summarize pg_summarize_$v PIGSTY 0.0.0 FUNC PostgreSQL 17,16,15,14,13,12 使用LLM对文本字段进行总结
pg_tiktoken pg_tiktoken pg_tiktoken_$v PIGSTY 0.0.1 RAG Apache-2.0 17,16,15,14,13,12 在PostgreSQL中计算OpenAI使用的Token数
pgml pgml pgml_$v PIGSTY 2.9.3 RAG MIT 16,15,14 PostgresML:用SQL运行机器学习算法并训练模型
pg4ml pg4ml pg4ml_$v PIGSTY 2.0 RAG AGPLv3 17,16,15,14,13,12 PG4ML是一个机器学习框架
pg_search pg_search pg_search_$v PIGSTY 0.11.1 FTS AGPLv3 17,16,15,14 ParadeDB BM25算法全文检索插件,ES全文检索
pg_bigm pg_bigm pg_bigm_$v* PGDG 1.2 FTS PostgreSQL 17,16,15,14,13,12 基于二字组的多语言全文检索扩展
zhparser zhparser zhparser_$v* PIGSTY 2.2 FTS PostgreSQL 17,16,15,14,13,12 中文分词,全文搜索解析器
hunspell_cs_cz hunspell_cs_cz hunspell_cs_cz_$v PIGSTY 1.0 FTS PostgreSQL 17,16,15,14,13,12 Hunspell捷克语全文检索词典
hunspell_de_de hunspell_de_de hunspell_de_de_$v PIGSTY 1.0 FTS PostgreSQL 17,16,15,14,13,12 Hunspell德语全文检索词典
hunspell_en_us hunspell_en_us hunspell_en_us_$v PIGSTY 1.0 FTS PostgreSQL 17,16,15,14,13,12 Hunspell英语全文检索词典
hunspell_fr hunspell_fr hunspell_fr_$v PIGSTY 1.0 FTS PostgreSQL 17,16,15,14,13,12 Hunspell法语全文检索词典
hunspell_ne_np hunspell_ne_np hunspell_ne_np_$v PIGSTY 1.0 FTS PostgreSQL 17,16,15,14,13,12 Hunspell尼泊尔语全文检索词典
hunspell_nl_nl hunspell_nl_nl hunspell_nl_nl_$v PIGSTY 1.0 FTS PostgreSQL 17,16,15,14,13,12 Hunspell荷兰语全文检索词典
hunspell_nn_no hunspell_nn_no hunspell_nn_no_$v PIGSTY 1.0 FTS PostgreSQL 17,16,15,14,13,12 Hunspell挪威语全文检索词典
hunspell_pt_pt hunspell_pt_pt hunspell_pt_pt_$v PIGSTY 1.0 FTS PostgreSQL 17,16,15,14,13,12 Hunspell葡萄牙语全文检索词典
hunspell_ru_ru hunspell_ru_ru hunspell_ru_ru_$v PIGSTY 1.0 FTS PostgreSQL 17,16,15,14,13,12 Hunspell俄语全文检索词典
hunspell_ru_ru_aot hunspell_ru_ru_aot hunspell_ru_ru_aot_$v PIGSTY 1.0 FTS PostgreSQL 17,16,15,14,13,12 Hunspell俄语全文检索词典(来自AOT.ru小组)
fuzzystrmatch fuzzystrmatch postgresql$v-contrib CONTRIB 1.2 FTS PostgreSQL 17,16,15,14,13,12 确定字符串之间的相似性和距离
pg_trgm pg_trgm postgresql$v-contrib CONTRIB 1.6 FTS PostgreSQL 17,16,15,14,13,12 文本相似度测量函数与模糊检索
citus citus citus_$v* PGDG 12.1-1 OLAP AGPLv3 16,15,14,13,12 Citus 分布式数据库
citus_columnar citus citus_$v* PGDG 11.3-1 OLAP AGPLv3 16,15,14,13,12 Citus 列式存储
columnar hydra hydra_$v* PIGSTY 11.1-11 OLAP AGPLv3 16,15,14,13 开源列式存储扩展
pg_analytics pg_analytics pg_analytics_$v PIGSTY 0.2.1 OLAP AGPLv3 17,16,15,14 由 DuckDB 驱动的数据分析引擎
pg_duckdb pg_duckdb pg_duckdb_$v* PIGSTY 0.0.1 OLAP MIT 17,16,15 在PostgreSQL中的嵌入式DuckDB扩展
duckdb_fdw duckdb_fdw duckdb_fdw_$v* PIGSTY 1.0.0 OLAP MIT 16,15,14,13,12 DuckDB 外部数据源包装器
pg_parquet pg_parquet pg_parquet_$v PIGSTY 0.1.0 OLAP PostgreSQL 17,16 在PostgreSQL与本地/S3中的Parquet文件复制数据
pg_fkpart pg_fkpart pg_fkpart_$v* PGDG 1.7 OLAP GPLv2 17,16,15,14,13,12 按外键实用程序进行表分区的扩展
pg_partman pg_partman pg_partman_$v* PGDG 5.1.0 OLAP PostgreSQL 17,16,15,14,13,12 用于按时间或 ID 管理分区表的扩展
plproxy plproxy plproxy_$v* PGDG 2.11.0 OLAP BSD 0 17,16,15,14,13,12 作为过程语言实现的数据库分区
pg_strom pg_strom pg_strom_$v* PGDG 5.1 OLAP PostgreSQL 17,16,15,14,13,12 使用GPU与NVMe加速大数据处理
tablefunc tablefunc postgresql$v-contrib CONTRIB 1.0 OLAP PostgreSQL 17,16,15,14,13,12 交叉表函数
age age apache-age_$v* PIGSTY 1.5.0 FEAT Apache-2.0 16,15,14,13,12 Apache AGE,图数据库扩展 (Deb可用)
hll hll hll_$v* PGDG 2.18 FEAT Apache-2.0 17,16,15,14,13,12 hyperloglog 数据类型
rum rum rum_$v PGDG 1.3 FEAT PostgreSQL 17,16,15,14,13,12 RUM 索引访问方法
pg_graphql pg_graphql pg_graphql_$v PIGSTY 1.5.9 FEAT Apache-2.0 17,16,15,14 PG内的 GraphQL 支持 (RUST, supabase)
pg_jsonschema pg_jsonschema pg_jsonschema_$v PIGSTY 0.3.3 FEAT Apache-2.0 17,16,15,14,13,12 提供JSON Schema校验能力
jsquery jsquery jsquery_$v* PGDG 1.1 FEAT PostgreSQL 17,16,15,14,13,12 用于内省 JSONB 数据类型的查询类型
pg_hint_plan pg_hint_plan pg_hint_plan_$v* PGDG 1.6.1 FEAT BSD 3 17,16,15,14,13,12 添加强制指定执行计划的能力
hypopg hypopg hypopg_$v* PGDG 1.4.1 FEAT PostgreSQL 17,16,15,14,13,12 假设索引,用于创建一个虚拟索引检验执行计划
index_advisor index_advisor index_advisor_$v PIGSTY 0.2.0 FEAT PostgreSQL 17,16,15,14,13,12 查询索引建议器
plan_filter pg_plan_filter pg_plan_filter_$v* PIGSTY 0.0.1 FEAT PostgreSQL 17,16,15,14,13,12 使用执行计划代价过滤阻止特定查询语句
imgsmlr imgsmlr imgsmlr_$v* PIGSTY 1.0 FEAT PostgreSQL 17,16,15,14,13,12 使用Haar小波分析计算图片相似度
pg_ivm pg_ivm pg_ivm_$v* PGDG 1.8 FEAT PostgreSQL 17,16,15,14,13,12 增量维护的物化视图
pgmq pgmq pgmq_$v PIGSTY 1.4.4 FEAT PostgreSQL 17,16,15,14,13,12 基于Postgres实现类似AWS SQS/RSMQ的消息队列
pgq pgq pgq_$v* PGDG 3.5.1 FEAT ISC 17,16,15,14,13,12 通用队列的PG实现
pg_cardano pg_cardano pg_cardano_$v PIGSTY 1.0.2 FEAT MIT 17,16,15,14,13,12 Cardano相关工具包:加密函数,地址编解码,区块链处理
bloom bloom postgresql$v-contrib CONTRIB 1.0 FEAT PostgreSQL 17,16,15,14,13,12 bloom 索引-基于指纹的索引
pg_tle pg_tle pg_tle_$v* PIGSTY 1.2.0 LANG Apache-2.0 17,16,15,14,13,12 AWS 可信语言扩展
plv8 plv8 plv8_$v* PIGSTY 3.2.3 LANG PostgreSQL 17,16,15,14,13,12 PL/JavaScript (v8) 可信过程程序语言
plluau pllua pllua_$v* PGDG 2.0 LANG MIT 17,16,15,14,13,12 Lua 程序语言(不受信任的)
pllua pllua pllua_$v* PGDG 2.0 LANG MIT 17,16,15,14,13,12 Lua 程序语言
plprql plprql plprql_$v PIGSTY 0.1.0 LANG Apache-2.0 16,15,14,13,12 在PostgreSQL使用PRQL——管线式关系查询语言
pldbgapi pldebugger pldebugger_$v* PGDG 1.1 LANG Artistic 17,16,15,14,13,12 用于调试 PL/pgSQL 函数的服务器端支持
plpgsql_check plpgsql_check plpgsql_check_$v* PGDG 2.7 LANG MIT 17,16,15,14,13,12 对 plpgsql 函数进行扩展检查
plprofiler plprofiler plprofiler_$v* PGDG 4.2 LANG Artistic 17,16,15,14,13,12 剖析 PL/pgSQL 函数
plsh plsh plsh_$v* PGDG 2 LANG MIT 17,16,15,14,13,12 PL/sh 程序语言
pljava pljava pljava_$v* PGDG 1.6.6 LANG BSD 3 16,15,14,13,12 Java 程序语言
plr plr plr_$v* PGDG 8.4.6 LANG GPLv2 17,16,15,14,13,12 从数据库中加载R语言解释器并执行R脚本
pgtap pgtap pgtap_$v* PGDG 1.3.1 LANG PostgreSQL 16,15,14,13,12 PostgreSQL单元测试框架
faker faker postgresql_faker_$v* PGDG 0.5.3 LANG PostgreSQL 17,16,15,14,13,12 插入生成的测试伪造数据,Python库的包装
dbt2 dbt2 dbt2-pg$v-extensions* PGDG 0.45.0 LANG Artistic 17,16,15,14,13,12 OSDL-DBT-2 测试组件
pltcl pltcl postgresql$v-contrib CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 PL/TCL 存储过程语言
pltclu pltcl postgresql$v-contrib CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 PL/TCL 存储过程语言(未受信/高权限)
plperl plperl postgresql$v-contrib CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 PL/Perl 存储过程语言
bool_plperl plperl postgresql$v-contrib CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 在 bool 和 plperl 之间转换
hstore_plperl plperl postgresql$v-contrib CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 在 hstore 和 plperl 之间转换适配类型
jsonb_plperl plperl postgresql$v-contrib CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 在 jsonb 和 plperl 之间转换
plperlu plperlu postgresql$v-contrib CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 PL/PerlU 存储过程语言(未受信/高权限)
bool_plperlu plperlu postgresql$v-contrib CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 在 bool 和 plperlu 之间转换
jsonb_plperlu plperlu postgresql$v-contrib CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 在 jsonb 和 plperlu 之间转换
hstore_plperlu plperlu postgresql$v-contrib CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 在 hstore 和 plperlu 之间转换适配类型
plpgsql plpgsql postgresql$v-contrib CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 PL/pgSQL 程序设计语言
plpython3u plpython3u postgresql$v-contrib CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 PL/Python3 存储过程语言(未受信/高权限)
jsonb_plpython3u plpython3u postgresql$v-contrib CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 在 jsonb 和 plpython3u 之间转换
ltree_plpython3u plpython3u postgresql$v-contrib CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 在 ltree 和 plpython3u 之间转换
hstore_plpython3u plpython3u postgresql$v-contrib CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 在 hstore 和 plpython3u 之间转换
prefix prefix prefix_$v* PGDG 1.2.0 TYPE PostgreSQL 17,16,15,14,13,12 前缀树数据类型
semver semver semver_$v* PGDG 0.32.1 TYPE PostgreSQL 17,16,15,14,13,12 语义版本号数据类型
unit pgunit postgresql-unit_$v* PGDG 7 TYPE GPLv3 17,16,15,14,13,12 SI 国标单位扩展
md5hash md5hash md5hash_$v* PIGSTY 1.0.1 TYPE BSD 2 17,16,15,14,13,12 提供128位MD5的原生数据类型
asn1oid asn1oid asn1oid_$v* PIGSTY 1 TYPE GPLv3 17,16,15,14,13,12 ASN1OID数据类型支持
roaringbitmap roaringbitmap pg_roaringbitmap_$v* PIGSTY 0.5 TYPE Apache-2.0 17,16,15,14,13,12 支持RoaringBitmap数据类型
pgfaceting pgfaceting pgfaceting_$v PIGSTY 0.2.0 TYPE BSD 3 17,16,15,14,13,12 使用倒排索引的高速切面查询
pg_sphere pgsphere pgsphere_$v* PIGSTY 1.5.1 TYPE BSD 3 17,16,15,14,13,12 球面对象函数、运算符与索引支持
country pg_country pg_country_$v* PIGSTY 0.0.3 TYPE PostgreSQL 17,16,15,14,13,12 国家代码数据类型,遵循ISO 3166-1标准
currency pg_currency pg_currency_$v* PIGSTY 0.0.3 TYPE MIT 17,16,15,14,13,12 使用1字节表示的货币数据类型
pgmp pgmp pgmp_$v* PGDG 1.1 TYPE LGPLv3 17,16,15,14,13,12 多精度算术扩展
numeral numeral numeral_$v* PIGSTY 1 TYPE GPLv2 17,16,15,14,13,12 数值类型扩展
pg_rational pg_rational pg_rational_$v* PIGSTY 0.0.2 TYPE MIT 17,16,15,14,13,12 使用BIGINT表示的有理数数据类型
uint pguint pguint_$v* PGDG 0 TYPE PostgreSQL 17,16,15,14,13,12 无符号整型数据类型
uint128 pg_uint128 pg_uint128_$v* PIGSTY 1.0.0 TYPE PostgreSQL 17,16,15,14,13,12 原生128位无符号整型数据类型
ip4r ip4r ip4r_$v* PGDG 2.4 TYPE PostgreSQL 17,16,15,14,13,12 PostgreSQL 的 IPv4/v6 和 IPv4/v6 范围索引类型
uri pg_uri pg_uri_$v* PIGSTY 1 TYPE PostgreSQL 17,16,15,14,13,12 URI数据类型
pgemailaddr pgemailaddr pg_emailaddr_$v* PIGSTY 0 TYPE PostgreSQL 17,16,15,14,13,12 Email地址数据类型
acl acl acl_$v* PIGSTY 1.0.4 TYPE BSD-2 17,16,15,14,13,12 ACL数据类型
timestamp9 timestamp9 timestamp9_$v* PGDG 1.4.0 TYPE MIT 17,16,15,14,13,12 纳秒分辨率时间戳
chkpass chkpass chkpass_$v* PIGSTY 1.0 TYPE PostgreSQL 17,16,15,14,13,12 数据类型:自动加密的密码
isn isn postgresql$v-contrib CONTRIB 1.2 TYPE PostgreSQL 17,16,15,14,13,12 用于国际产品编号标准的数据类型
seg seg postgresql$v-contrib CONTRIB 1.4 TYPE PostgreSQL 17,16,15,14,13,12 表示线段或浮点间隔的数据类型
cube cube postgresql$v-contrib CONTRIB 1.5 TYPE PostgreSQL 17,16,15,14,13,12 用于存储多维立方体的数据类型
ltree ltree postgresql$v-contrib CONTRIB 1.2 TYPE PostgreSQL 17,16,15,14,13,12 用于表示分层树状结构的数据类型
hstore hstore postgresql$v-contrib CONTRIB 1.8 TYPE PostgreSQL 17,16,15,14,13,12 用于存储(键,值)对集合的数据类型
citext citext postgresql$v-contrib CONTRIB 1.6 TYPE PostgreSQL 17,16,15,14,13,12 提供大小写不敏感的字符串类型
xml2 xml2 postgresql$v-contrib CONTRIB 1.1 TYPE PostgreSQL 17,16,15,14,13,12 XPath 查询和 XSLT
topn topn topn_$v* PGDG 2.6.0 FUNC AGPLv3 17,16,15,14,13,12 top-n JSONB 的类型
gzip pg_gzip pgsql_gzip_$v* PGDG 1.0 FUNC MIT 17,16,15,14,13,12 使用SQL执行Gzip压缩与解压缩
zstd pg_zstd pg_zstd_$v* PIGSTY 1.1.0 FUNC ISC 17,16,15,14,13,12 ZSTD压缩解压缩函数包
http pg_http pgsql_http_$v* PGDG 1.6 FUNC MIT 17,16,15,14,13,12 HTTP客户端,允许在数据库内收发HTTP请求 (supabase)
pg_net pg_net pg_net_$v* PIGSTY 0.9.2 FUNC Apache-2.0 17,16,15,14,13,12 用 SQL 进行异步非阻塞HTTP/HTTPS 请求的扩展 (supabase)
pg_html5_email_address pg_html5_email_address pg_html5_email_address_$v PIGSTY 1.2.3 FUNC PostgreSQL 17,16,15,14,13,12 验证Email是否符合HTML5规范的扩展
pgsql_tweaks pgsql_tweaks pgsql_tweaks_$v* PGDG 0.10.6 FUNC PostgreSQL 17,16,15,14,13,12 一些日常会用到的便利函数与视图
pg_extra_time pg_extra_time pg_extra_time_$v* PGDG 1.1.3 FUNC PostgreSQL 17,16,15,14,13,12 一些关于日期与时间的扩展函数
timeit pg_timeit pg_timeit_$v* PIGSTY 1.0 FUNC PostgreSQL 17,16,15,14,13,12 使用SQL语句执行高精度计时
count_distinct count_distinct count_distinct_$v* PGDG 3.0.1 FUNC BSD 2 17,16,15,14,13,12 COUNT(DISTINCT …) 聚合的替代方案
extra_window_functions extra_window_functions extra_window_functions_$v* PGDG 1.0 FUNC PostgreSQL 17,16,15,14,13,12 额外的窗口函数
first_last_agg first_last_agg first_last_agg_$v PIGSTY 0.1.4 FUNC PostgreSQL 17,16,15,14,13,12 first() 与 last() 聚合函数
tdigest tdigest tdigest_$v* PGDG 1.4.1 FUNC Apache-2.0 17,16,15,14,13,12 tdigest 聚合函数
aggs_for_vecs aggs_for_vecs aggs_for_vecs_$v* PIGSTY 1.3.0 FUNC MIT 17,16,15,14,13,12 针对数组类型的聚合函数集合扩展
aggs_for_arrays aggs_for_arrays aggs_for_arrays_$v* PIGSTY 1.3.2 FUNC MIT 17,16,15,14,13,12 计算数组聚合统计值的函数包
arraymath pg_arraymath pg_arraymath_$v* PIGSTY 1.1 FUNC MIT 17,16,15,14,13,12 数组逐元素数学运算符包
quantile quantile quantile_$v* PIGSTY 1.1.7 FUNC BSD 17,16,15,14,13,12 Quantile聚合函数
lower_quantile lower_quantile lower_quantile_$v* PIGSTY 1.0.0 FUNC BSD-2 17,16,15,14,13,12 Lower Quantile 聚合函数
pg_idkit pg_idkit pg_idkit_$v PIGSTY 0.2.4 FUNC Apache-2.0 17,16,15,14,13,12 生成各式各样的唯一标识符:UUIDv6, ULID, KSUID
pg_uuidv7 pg_uuidv7 pg_uuidv7_$v* PGDG 1.6 FUNC MPLv2 17,16,15,14,13,12 UUIDv7 支持
permuteseq permuteseq permuteseq_$v* PIGSTY 1.2 FUNC PostgreSQL 17,16,15,14,13,12 伪随机数ID置换生成器
pg_hashids pg_hashids pg_hashids_$v* PIGSTY 1.3 FUNC MIT 17,16,15,14,13,12 加盐将整型ID转为短字符串ID
sequential_uuids sequential_uuids sequential_uuids_$v* PGDG 1.0.2 FUNC MIT 17,16,15,14,13,12 生成连续生成的UUID
pg_math pg_math pg_math_$v* PIGSTY 1.0 FUNC GPLv3 17,16,15,14,13,12 使用GSL库的数学统计函数
random pg_random pg_random_$v* PIGSTY 2.0.0-dev FUNC PostgreSQL 17,16,15,14,13,12 随机数生成器
base36 pg_base36 pg_base36_$v* PIGSTY 1.0.0 FUNC MIT 17,16,15,14,13,12 Base36编码解码扩展
base62 pg_base62 pg_base62_$v* PIGSTY 0.0.1 FUNC MIT 17,16,15,14,13,12 Base62编码解码扩展
pg_base58 pg_base58 pg_base58_$v PIGSTY 0.0.1 FUNC MIT 17,16,15,14,13,12 Base58 编码/解码函数
floatvec floatvec floatvec_$v* PIGSTY 1.0.1 FUNC MIT 17,16,15,14,13,12 数组类型数学运算扩展
financial pg_financial pg_financial_$v* PIGSTY 1.0.1 FUNC PostgreSQL 17,16,15,14,13,12 金融领域聚合函数
pgjwt pgjwt pgjwt_$v* PIGSTY 0.2.0 FUNC MIT 17,16,15,14,13,12 JSON Web Token API 的PG实现 (supabase)
pg_hashlib pg_hashlib pg_hashlib_$v PIGSTY 1.1 FUNC PostgreSQL 17,16,15,14,13,12 稳定哈希函数包
shacrypt shacrypt postgres_shacrypt_$v* PIGSTY 1.1 FUNC PostgreSQL 17,16,15,14,13,12 实现SHA256-CRYPT与SHA512-CRYPT密钥加密算法
cryptint cryptint cryptint_$v* PIGSTY 1.0.0 FUNC PostgreSQL 17,16,15,14,13,12 加密INT与BIGINT类型
pguecc pg_ecdsa pg_ecdsa_$v* PIGSTY 1.0 FUNC BSD-2 17,16,15,14,13,12 PostgreSQL的uECC绑定,椭圆曲线加解密函数包
pgpcre pgpcre pgpcre_$v PIGSTY 1 FUNC PostgreSQL 17,16,15,14,13,12 PCRE/Perl风格的正则表达式支持
icu_ext icu_ext icu_ext_$v* PIGSTY 1.9 FUNC PostgreSQL 17,16,15,14,13,12 访问ICU库提供的函数
pgqr pgqr pgqr_$v* PIGSTY 1.0 FUNC BSD-3 17,16,15,14,13,12 从数据库中直接生成QR二维码
envvar envvar pg_envvar_$v* PIGSTY 1.0.0 FUNC PostgreSQL 17,16,15,14,13,12 获取环境变量的函数
pg_protobuf pg_protobuf pg_protobuf_$v PIGSTY 1.0 FUNC MIT 17,16,15,14,13,12 提供Protobuf函数支持
url_encode url_encode url_encode_$v* PIGSTY 1.2 FUNC PostgreSQL 17,16,15,14,13,12 提供URL编码解码函数
refint refint postgresql$v-contrib CONTRIB 1.0 FUNC PostgreSQL 17,16,15,14,13,12 实现引用完整性的函数
autoinc autoinc postgresql$v-contrib CONTRIB 1.0 FUNC PostgreSQL 17,16,15,14,13,12 用于自动递增字段的函数
insert_username insert_username postgresql$v-contrib CONTRIB 1.0 FUNC PostgreSQL 17,16,15,14,13,12 用于跟踪谁更改了表的函数
moddatetime moddatetime postgresql$v-contrib CONTRIB 1.0 FUNC PostgreSQL 17,16,15,14,13,12 跟踪最后修改时间
tsm_system_time tsm_system_time postgresql$v-contrib CONTRIB 1.0 FUNC PostgreSQL 17,16,15,14,13,12 接受毫秒数限制的 TABLESAMPLE 方法
dict_xsyn dict_xsyn postgresql$v-contrib CONTRIB 1.0 FUNC PostgreSQL 17,16,15,14,13,12 用于扩展同义词处理的文本搜索字典模板
tsm_system_rows tsm_system_rows postgresql$v-contrib CONTRIB 1.0 FUNC PostgreSQL 17,16,15,14,13,12 接受行数限制的 TABLESAMPLE 方法
tcn tcn postgresql$v-contrib CONTRIB 1.0 FUNC PostgreSQL 17,16,15,14,13,12 用触发器通知变更
uuid-ossp uuid-ossp postgresql$v-contrib CONTRIB 1.1 FUNC PostgreSQL 17,16,15,14,13,12 生成通用唯一标识符(UUIDs)
btree_gist btree_gist postgresql$v-contrib CONTRIB 1.7 FUNC PostgreSQL 17,16,15,14,13,12 用GiST索引常见数据类型
btree_gin btree_gin postgresql$v-contrib CONTRIB 1.3 FUNC PostgreSQL 17,16,15,14,13,12 用GIN索引常见数据类型
intarray intarray postgresql$v-contrib CONTRIB 1.5 FUNC PostgreSQL 17,16,15,14,13,12 1维整数数组的额外函数、运算符和索引支持
intagg intagg postgresql$v-contrib CONTRIB 1.1 FUNC PostgreSQL 17,16,15,14,13,12 整数聚合器和枚举器(过时)
dict_int dict_int postgresql$v-contrib CONTRIB 1.0 FUNC PostgreSQL 17,16,15,14,13,12 用于整数的文本搜索字典模板
unaccent unaccent postgresql$v-contrib CONTRIB 1.1 FUNC PostgreSQL 17,16,15,14,13,12 删除重音的文本搜索字典
pg_repack pg_repack pg_repack_$v* PGDG 1.5.0 ADMIN BSD 3 17,16,15,14,13,12 在线垃圾清理与表膨胀治理
pg_squeeze pg_squeeze pg_squeeze_$v* PGDG 1.7 ADMIN BSD 2 17,16,15,14,13,12 从关系中删除未使用空间
pg_dirtyread pg_dirtyread pg_dirtyread_$v* PIGSTY 2 ADMIN BSD 3 17,16,15,14,13,12 从表中读取尚未垃圾回收的行
pgfincore pgfincore pgfincore_$v* PGDG 1.3.1 ADMIN BSD 3 17,16,15,14,13,12 检查和管理操作系统缓冲区缓存
pgdd pgdd pgdd_$v PIGSTY 0.5.2 ADMIN MIT 16,15,14,13,12 提供通过标准SQL查询数据库目录集簇的能力
ddlx ddlx ddlx_$v* PGDG 0.27 ADMIN PostgreSQL 17,16,15,14,13,12 提取数据库对象的DDL
prioritize pg_prioritize pg_prioritize_$v* PGDG 1.0 ADMIN PostgreSQL 17,16,15,14,13,12 获取和设置 PostgreSQL 后端的优先级
pg_checksums pg_checksums pg_checksums_$v* PGDG 1.1 ADMIN BSD 2 16,15,14,13,12 在离线模式下激活/启用/禁用数据库集群的校验和功能
pg_readonly pg_readonly pg_readonly_$v* PGDG 1.0.0 ADMIN PostgreSQL 17,16,15,14,13,12 将集群设置为只读
safeupdate safeupdate safeupdate_$v* PGDG 1.4 ADMIN ISC 17,16,15,14,13,12 强制在 UPDATE 和 DELETE 时提供 Where 条件
pg_permissions pg_permissions pg_permissions_$v* PGDG 1.3 ADMIN BSD 2 17,16,15,14,13,12 查看对象权限并将其与期望状态进行比较
pgautofailover pgautofailover pg_auto_failover_$v* PGDG 2.1 ADMIN PostgreSQL 16,15,14,13,12 PG 自动故障迁移
pg_catcheck pg_catcheck pg_catcheck_$v* PGDG 1.4.0 ADMIN BSD 3 17,16,15,14,13,12 用于诊断系统目录是否损坏的工具
pre_prepare preprepare preprepare_$v* PIGSTY 0.4 ADMIN PostgreSQL 17,16,15,14,13,12 在服务端预先准备好PreparedStatement备用
pgcozy pgcozy pgcozy_$v PIGSTY 1.0 ADMIN PostgreSQL 17,16,15,14,13,12 根据先前的pg_buffercache快照预热内存缓冲区
pg_orphaned pg_orphaned pg_orphaned_$v* PIGSTY 1.0 ADMIN PostgreSQL 17,16,15,14,13,12 处理孤儿文件的扩展插件
pg_crash pg_crash pg_crash_$v* PIGSTY 1.0 ADMIN BSD-3 17,16,15,14,13,12 向数据库进程随机发送信号模拟故障
pg_cheat_funcs pg_cheat_funcs pg_cheat_funcs_$v* PIGSTY 1.0 ADMIN PostgreSQL 17,16,15,14,13,12 一些超级实用的作弊函数
pg_savior pg_savior pg_savior_$v* PIGSTY 0.0.1 ADMIN Apache-2.0 17,16,15,14,13 阻止不带条件的全表更新以避免意外事故
table_log table_log table_log_$v PIGSTY 0.6.1 ADMIN PostgreSQL 17,16,15,14,13,12 记录某张表的修改日志并做表/行级时间点恢复
pg_fio pg_fio pg_fio_$v PIGSTY 1.0 ADMIN BSD-3 17,16,15,14,13,12 PostgreSQL文件IO函数包
pgpool_adm pgpool pgpool-II-pg$v-extensions PGDG 1.5 ADMIN PostgreSQL 17,16,15,14,13,12 PGPool 管理函数
pgpool_recovery pgpool pgpool-II-pg$v-extensions PGDG 1.4 ADMIN PostgreSQL 17,16,15,14,13,12 PGPool辅助扩展,从v4.3提供的恢复函数
pgpool_regclass pgpool pgpool-II-pg$v-extensions PGDG 1.0 ADMIN PostgreSQL 17,16,15,14,13,12 PGPool辅助扩展,RegClass替代
pgagent pgagent pgagent_$v* PGDG 4.2 ADMIN PostgreSQL 17,16,15,14,13,12 PostgreSQL任务调度工具,与PGADMIN配合使用
vacuumlo vacuumlo postgresql$v-contrib CONTRIB 16.3 ADMIN PostgreSQL 17,16,15,14,13,12 从PostgreSQL中移除孤儿数据库文件的实用命令行工具
pg_prewarm pg_prewarm postgresql$v-contrib CONTRIB 1.2 ADMIN PostgreSQL 17,16,15,14,13,12 预热关系数据
oid2name oid2name postgresql$v-contrib CONTRIB 16.3 ADMIN PostgreSQL 17,16,15,14,13,12 用于检查PG文件结构的实用命令行工具
lo lo postgresql$v-contrib CONTRIB 1.1 ADMIN PostgreSQL 17,16,15,14,13,12 大对象维护
basic_archive basic_archive postgresql$v-contrib CONTRIB 16.3 ADMIN PostgreSQL 17,16,15 归档模块样例
basebackup_to_shell basebackup_to_shell postgresql$v-contrib CONTRIB 16.3 ADMIN PostgreSQL 17,16,15 添加一种备份到Shell终端到基础备份方式
old_snapshot old_snapshot postgresql$v-contrib CONTRIB 1.0 ADMIN PostgreSQL 17,16,15,14 支持 old_snapshot_threshold 的实用程序
adminpack adminpack postgresql$v-contrib CONTRIB 2.1 ADMIN PostgreSQL 17,16,15,14,13,12 PostgreSQL 管理函数集合
amcheck amcheck postgresql$v-contrib CONTRIB 1.3 ADMIN PostgreSQL 17,16,15,14,13,12 校验关系完整性
pg_surgery pg_surgery postgresql$v-contrib CONTRIB 1.0 ADMIN PostgreSQL 17,16,15,14 对损坏的关系进行手术
pg_profile pg_profile pg_profile_$v* PGDG 4.7 STAT BSD 2 17,16,15,14,13,12 PostgreSQL 数据库负载记录与AWR报表工具
pg_show_plans pg_show_plans pg_show_plans_$v* PGDG 2.1 STAT PostgreSQL 17,16,15,14,13,12 打印所有当前正在运行查询的执行计划
pg_stat_kcache pg_stat_kcache pg_stat_kcache_$v* PGDG 2.3.0 STAT BSD 3 17,16,15,14,13,12 内核统计信息收集
pg_stat_monitor pg_stat_monitor pg_stat_monitor_$v* PGDG 2.1 STAT BSD 3 17,16,15,14,13,12 提供查询聚合统计、客户端信息、执行计划详细信息和直方图
pg_qualstats pg_qualstats pg_qualstats_$v* PGDG 2.1.1 STAT BSD 3 17,16,15,14,13,12 收集有关 quals 的统计信息的扩展
pg_store_plans pg_store_plans pg_store_plans_$v* PGDG 1.8 STAT BSD 3 16,15,14,13,12 跟踪所有执行的 SQL 语句的计划统计信息
pg_track_settings pg_track_settings pg_track_settings_$v* PGDG 2.1.2 STAT PostgreSQL 17,16,15,14,13,12 跟踪设置更改
pg_wait_sampling pg_wait_sampling pg_wait_sampling_$v* PGDG 1.1 STAT PostgreSQL 17,16,15,14,13,12 基于采样的等待事件统计
system_stats system_stats system_stats_$v* PGDG 3.0 STAT PostgreSQL 17,16,15,14,13,12 PostgreSQL 的系统统计函数
meta pg_meta pg_meta_$v PIGSTY 0.4.0 STAT BSD-2 17,16,15,14,13,12 标准化,更友好的PostgreSQL系统目录视图
pgnodemx pgnodemx pgnodemx_$v PIGSTY 1.7 STAT Apache-2.0 17,16,15,14,13,12 使用SQL查询获取操作系统指标
pg_proctab pgnodemx pgnodemx_$v PIGSTY 0.0.10-compat STAT BSD 3 17,16,15,14,13,12 通过SQL接口访问操作系统进程表
pg_sqlog pg_sqlog pg_sqlog_$v* PIGSTY 1.6 STAT BSD 3 17,16,15,14,13,12 提供访问PostgreSQL日志的SQL接口
bgw_replstatus bgw_replstatus bgw_replstatus_$v* PGDG 1.0.6 STAT PostgreSQL 17,16,15,14,13,12 用于汇报本机主从状态的后台工作进程
pgmeminfo pgmeminfo pgmeminfo_$v* PGDG 1.0 STAT MIT 17,16,15,14,13,12 显示内存使用情况
toastinfo toastinfo toastinfo_$v* PIGSTY 1 STAT PostgreSQL 17,16,15,14,13,12 显示TOAST字段的详细信息
explain_ui pg_explain_ui pg_explain_ui_$v PIGSTY 0.0.1 STAT PostgreSQL 17,16,15,14,13,12 快速跳转至PEV查阅可视化执行计划
pg_relusage pg_relusage pg_relusage_$v PIGSTY 0.0.1 STAT PostgreSQL 17,16,15,14,13,12 打印查询引用的表与列
pg_mon pg_mon pg_mon_$v* PIGSTY 1.0 STAT MIT 17,16,15,14,13,12 查看正在执行中的查询状态
pg_statviz pg_statviz pg_statviz_extension_$v PGDG 0.6 STAT BSD 3 16,15,14,13,12 可视化统计指标并分析时间序列
pgexporter_ext pgexporter_ext pgexporter_ext_$v PGDG 0.2.3 STAT BSD 3 17,16,15,14,13,12 PGExporter的额外指标支持
pg_top pg_top pg_top_$v* PGDG 3.7.0 STAT BSD 3 16,15,14,13,12 像unix top命令一样监控PG进程
pagevis pagevis pagevis_$v PIGSTY 0.1 STAT MIT 17,16,15,14,13,12 使用ASCII字符可视化数据库物理页面布局
powa powa powa_$v* PGDG 4.2.2 STAT PostgreSQL 16,15,14,13,12 PostgreSQL 工作负载分析器-核心
pageinspect pageinspect postgresql$v-contrib CONTRIB 1.12 STAT PostgreSQL 17,16,15,14,13,12 检查数据库页面二进制内容
pgrowlocks pgrowlocks postgresql$v-contrib CONTRIB 1.2 STAT PostgreSQL 17,16,15,14,13,12 显示行级锁信息
sslinfo sslinfo postgresql$v-contrib CONTRIB 1.2 STAT PostgreSQL 17,16,15,14,13,12 关于 SSL 证书的信息
pg_buffercache pg_buffercache postgresql$v-contrib CONTRIB 1.4 STAT PostgreSQL 17,16,15,14,13,12 检查共享缓冲区缓存
pg_walinspect pg_walinspect postgresql$v-contrib CONTRIB 1.1 STAT PostgreSQL 17,16,15 用于检查 PostgreSQL WAL 日志内容的函数
pg_freespacemap pg_freespacemap postgresql$v-contrib CONTRIB 1.2 STAT PostgreSQL 17,16,15,14,13,12 检查自由空间映射的内容(FSM)
pg_visibility pg_visibility postgresql$v-contrib CONTRIB 1.2 STAT PostgreSQL 17,16,15,14,13,12 检查可见性图(VM)和页面级可见性信息
pgstattuple pgstattuple postgresql$v-contrib CONTRIB 1.5 STAT PostgreSQL 17,16,15,14,13,12 显示元组级统计信息
auto_explain auto_explain postgresql$v-contrib CONTRIB 16.3 STAT PostgreSQL 17,16,15,14,13,12 提供一种自动记录执行计划的手段
pg_stat_statements pg_stat_statements postgresql$v-contrib CONTRIB 1.10 STAT PostgreSQL 17,16,15,14,13,12 跟踪所有执行的 SQL 语句的计划和执行统计信息
passwordcheck_cracklib passwordcheck passwordcheck_cracklib_$v* PGDG 3.0.0 SEC LGPLv2 17,16,15,14,13,12 使用cracklib加固PG用户密码
supautils supautils supautils_$v* PIGSTY 2.5.0 SEC Apache-2.0 17,16,15,14,13 用于在云环境中确保数据库集群的安全
pgsodium pgsodium pgsodium_$v* PIGSTY 3.1.9 SEC BSD 3 17,16,15,14,13,12 表数据加密存储 TDE
supabase_vault pg_vault vault_$v* PIGSTY 0.2.8 SEC Apache-2.0 17,16,15,14,13,12 在 Vault 中存储加密凭证的扩展 (supabase)
anon anonymizer postgresql_anonymizer_$v* PGDG 1.3.2 SEC PostgreSQL 17,16,15,14,13,12 数据匿名化处理工具
pg_tde pg_tde pg_tde_$v* PIGSTY 1.0 SEC MIT 16 试点性质的加密存储引擎
pgsmcrypto pgsmcrypto pgsmcrypto_$v PIGSTY 0.1.0 SEC MIT 17,16,15,14,13,12 为PostgreSQL提供商密算法支持:SM2,SM3,SM4
pgaudit pgaudit pgaudit_$v* PGDG 16.0 SEC PostgreSQL 17,16,15,14,13,12 提供审计功能
pgauditlogtofile pgauditlogtofile pgauditlogtofile_$v* PGDG 1.6 SEC PostgreSQL 17,16,15,14,13,12 pgAudit 子扩展,将审计日志写入单独的文件中
pg_auth_mon pg_auth_mon pg_auth_mon_$v* PGDG 1.1 SEC MIT 17,16,15,14,13,12 监控每个用户的连接尝试
credcheck credcheck credcheck_$v* PGDG 2.7.0 SEC MIT 17,16,15,14,13,12 明文凭证检查器
pgcryptokey pgcryptokey pgcryptokey_$v* PGDG 1.0 SEC PostgreSQL 17,16,15,14,13,12 PG密钥管理
pg_jobmon pg_jobmon pg_jobmon_$v* PGDG 1.4.1 SEC PostgreSQL 17,16,15,14,13,12 记录和监控函数
logerrors logerrors logerrors_$v* PGDG 2.1 SEC BSD 3 17,16,15,14,13,12 用于收集日志文件中消息统计信息的函数
login_hook login_hook login_hook_$v* PGDG 1.6 SEC GPLv3 17,16,15,14,13,12 在用户登陆时执行login_hook.login()函数
set_user set_user set_user_$v* PGDG 4.1.0 SEC PostgreSQL 17,16,15,14,13,12 增加了日志记录的 SET ROLE
pg_snakeoil pg_snakeoil pg_snakeoil_$v* PIGSTY 1 SEC PostgreSQL 17,16,15,14,13,12 PostgreSQL动态链接库反病毒功能
pgextwlist pgextwlist pgextwlist_$v* PIGSTY 1.17 SEC PostgreSQL 17,16,15,14,13,12 PostgreSQL扩展白名单功能
pg_auditor pg_auditor pg_auditor_$v PIGSTY 0.2 SEC BSD-3 17,16,15,14,13,12 审计数据变更并提供闪回能力
sslutils sslutils sslutils_$v* PIGSTY 1.3 SEC PostgreSQL 17,16,15,14,13,12 使用SQL管理SSL证书
noset noset noset_$v* PIGSTY 0.3.0 SEC AGPLv3 17,16,15,14,13,12 阻止非超级用户使用SET/RESET设置变量
sepgsql sepgsql postgresql$v-contrib CONTRIB 16.3 SEC PostgreSQL 17,16,15,14,13,12 基于SELinux标签的强制访问控制
auth_delay auth_delay postgresql$v-contrib CONTRIB 16.3 SEC PostgreSQL 17,16,15,14,13,12 在返回认证失败前暂停一会,避免爆破
pgcrypto pgcrypto postgresql$v-contrib CONTRIB 1.3 SEC PostgreSQL 17,16,15,14,13,12 实用加解密函数
passwordcheck passwordcheck postgresql$v-contrib CONTRIB 16.3 SEC PostgreSQL 17,16,15,14,13,12 用于强制拒绝修改弱密码的扩展
wrappers wrappers wrappers_$v PIGSTY 0.4.3 FDW Apache-2.0 17,16,15,14 Supabase提供的外部数据源包装器捆绑包
multicorn multicorn multicorn2_$v* PGDG 3.0 FDW PostgreSQL 17,16,15,14,13,12 用Python编写自定义的外部数据源包装器
odbc_fdw odbc_fdw odbc_fdw_$v* PGDG 0.5.1 FDW PostgreSQL 16,15,14,13 访问ODBC可访问的任何外部数据源
jdbc_fdw jdbc_fdw jdbc_fdw_$v* PGDG 1.2 FDW PostgreSQL 16,15,14,13 访问JDBC可访问的任何外部数据源
mysql_fdw mysql_fdw mysql_fdw_$v* PGDG 1.2 FDW BSD 3 17,16,15,14,13,12 MySQL外部数据包装器
oracle_fdw oracle_fdw oracle_fdw_$v* PGDG 1.2 FDW PostgreSQL 17,16,15,14,13,12 提供对Oracle的外部数据源包装器
tds_fdw tds_fdw tds_fdw_$v* PGDG 2.0.4 FDW PostgreSQL 16,15,14,13,12 TDS 数据库(Sybase/SQL Server)外部数据包装器
db2_fdw db2_fdw db2_fdw_$v* PGDG 6.0.1 FDW PostgreSQL 16,15,14,13,12 提供对DB2的外部数据源包装器
sqlite_fdw sqlite_fdw sqlite_fdw_$v* PGDG 1.1 FDW PostgreSQL 16,15,14,13,12 SQLite 外部数据包装器
pgbouncer_fdw pgbouncer_fdw pgbouncer_fdw_$v* PGDG 1.2.0 FDW PostgreSQL 17,16,15,14,13,12 用SQL查询pgbouncer统计信息,并执行pgbouncer命令
mongo_fdw mongo_fdw mongo_fdw_$v* PGDG 1.1 FDW LGPLv3 16,15,14,13,12 MongoDB 外部数据包装器
redis_fdw redis_fdw redis_fdw_$v* PIGSTY 1.0 FDW PostgreSQL 17,16,15,14,13,12 查询外部Redis数据源
redis pg_redis_pubsub pg_redis_pubsub_$v* PIGSTY 0.0.1 FDW MIT 17,16,15,14,13,12 从PG向Redis发送Pub/Sub消息
kafka_fdw kafka_fdw kafka_fdw_$v PIGSTY 0.0.3 FDW PostgreSQL 16,15,14,13,12 Kafka外部数据源包装器
hdfs_fdw hdfs_fdw hdfs_fdw_$v* PGDG 2.0.5 FDW BSD 3 17,16,15,14,13,12 hdfs 外部数据包装器
firebird_fdw firebird_fdw firebird_fdw_$v PIGSTY 1.4.0 FDW PostgreSQL 17,16,15,14,13,12 Firebird外部数据源包装器
aws_s3 aws_s3 aws_s3_$v PIGSTY 0.0.1 FDW Apache-2.0 17,16,15,14,13,12 从S3导入导出数据的外部数据源包装器
log_fdw log_fdw log_fdw_$v* PIGSTY 1.4 FDW Apache-2.0 17,16,15,14 访问PostgreSQL日志文件的FDW
dblink dblink postgresql$v-contrib CONTRIB 1.2 FDW PostgreSQL 17,16,15,14,13,12 从数据库内连接到其他 PostgreSQL 数据库
file_fdw file_fdw postgresql$v-contrib CONTRIB 1.0 FDW PostgreSQL 17,16,15,14,13,12 访问外部文件的外部数据包装器
postgres_fdw postgres_fdw postgresql$v-contrib CONTRIB 1.1 FDW PostgreSQL 17,16,15,14,13,12 用于远程 PostgreSQL 服务器的外部数据包装器
orafce orafce orafce_$v* PGDG 4.13 SIM BSD 0 17,16,15,14,13,12 模拟 Oracle RDBMS 的一部分函数和包的函数和运算符
pgtt pgtt pgtt_$v* PGDG 4.0.0 SIM ISC 17,16,15,14,13,12 类似Oracle的全局临时表功能
session_variable session_variable session_variable_$v* PIGSTY 3.4 SIM GPLv3 17,16,15,14,13,12 Oracle兼容的会话变量/常量操作函数
pg_statement_rollback pg_statement_rollback pg_statement_rollback_$v* PGDG 1.4 SIM ISC 17,16,15,14,13,12 在服务端提供类似Oracle/DB2的语句级回滚能力
pg_dbms_metadata pg_dbms_metadata pg_dbms_metadata_$v* PGDG 1.0.0 SIM PostgreSQL 17,16,15,14,13,12 添加 Oracle DBMS_METADATA 兼容性支持的扩展
pg_dbms_lock pg_dbms_lock pg_dbms_lock_$v* PGDG 1.0.0 SIM PostgreSQL 17,16,15,14,13,12 为PG添加对 Oracle DBMS_LOCK 的完整兼容性支持
pg_dbms_job pg_dbms_job pg_dbms_job_$v* PGDG 1.5.0 SIM PostgreSQL 17,16,15,14,13,12 添加 Oracle DBMS_JOB 兼容性支持的扩展
babelfishpg_common babelfishpg_common babelfishpg-common* WILTON 3.3.3 SIM Apache-2.0 15 SQL Server 数据类型兼容扩展
babelfishpg_tsql babelfishpg_tsql babelfishpg-tsql* WILTON 3.3.1 SIM Apache-2.0 15 SQL Server SQL语法兼容性扩展
babelfishpg_tds babelfishpg_tds babelfishpg-tds* WILTON 1.0.0 SIM Apache-2.0 15 SQL Server TDS线缆协议兼容扩展
babelfishpg_money babelfishpg_money babelfishpg-money* WILTON 1.1.0 SIM Apache-2.0 15 SQL Server 货币数据类型兼容扩展
pgmemcache pgmemcache pgmemcache_$v* PGDG 2.3.0 SIM MIT 17,16,15,14,13,12 为PG提供memcached兼容接口
pglogical pglogical pglogical_$v* PGDG 2.4.4 ETL PostgreSQL 17,16,15,14,13,12 PostgreSQL逻辑复制:三方扩展实现
pglogical_origin pglogical pglogical_$v* PGDG 1.0.0 ETL PostgreSQL 17,16,15,14,13,12 用于从 Postgres 9.4 升级时的兼容性虚拟扩展
pgl_ddl_deploy pgl_ddl_deploy pgl_ddl_deploy_$v* PGDG 2.2 ETL MIT 17,16,15,14,13,12 使用 pglogical 执行自动 DDL 部署
pg_failover_slots pg_failover_slots pg_failover_slots_$v* PIGSTY 1.0.1 ETL PostgreSQL 17,16,15,14,13,12 在Failover过程中保留复制槽
wal2json wal2json wal2json_$v* PGDG 2.5.3 ETL BSD 3 17,16,15,14,13,12 用逻辑解码捕获 JSON 格式的 CDC 变更
wal2mongo wal2mongo wal2mongo_$v* PIGSTY 1.0.7 ETL Apache-2.0 16,15,14,13 使用逻辑解码捕获MongoDB JSON格式的CDC变更
decoderbufs decoderbufs postgres-decoderbufs_$v* PGDG 0.1.0 ETL MIT 16,15,14,13,12 将WAL逻辑解码为ProtocolBuffer协议的消息
decoder_raw decoder_raw decoder_raw_$v* PIGSTY 1.0 ETL PostgreSQL 17,16,15,14,13,12 逻辑复制解码输出插件:RAW SQL格式
test_decoding test_decoding postgresql$v-contrib CONTRIB 16.3 ETL PostgreSQL 17,16,15,14,13,12 基于SQL的WAL逻辑解码样例
mimeo mimeo mimeo_$v PIGSTY 1.5.1 ETL PostgreSQL 17,16,15,14,13,12 在PostgreSQL实例间进行表级复制
repmgr repmgr repmgr_$v* PGDG 5.4 ETL GPLv3 16,15,14,13,12 PostgreSQL复制管理组件
pgcopydb pgcopydb pgcopydb PGDG 0.15 ETL PostgreSQL 17,16,15,14,13,12 将一个PostgreSQL数据库拷贝至目标服务器
pgloader pgloader pgloader PGDG 3.6.10 ETL PostgreSQL 17,16,15,14,13,12 从MySQL/SQLite/MSSQL一键迁移至PostgreSQL!
pg_fact_loader pg_fact_loader pg_fact_loader_$v* PGDG 2.0 ETL MIT 17,16,15,14,13,12 在 Postgres 中构建事实表
pg_bulkload pg_bulkload pg_bulkload_$v* PGDG 3.1.21 ETL BSD 3 16,15,14,13,12 向 PostgreSQL 中高速加载数据
pg_comparator pg_comparator pg_comparator_$v* PGDG 2.2.5 ETL BSD 3 16,15,14,13,12 比对两个PostgreSQL数据库内容的差异
pgimportdoc pgimportdoc pgimportdoc_$v* PGDG 0.1.4 ETL BSD 2 17,16,15,14,13,12 将XML,JSON,BYTEA文档导入PG数据库
pgexportdoc pgexportdoc pgexportdoc_$v* PGDG 0.1.4 ETL BSD 2 17,16,15,14,13,12 从PG中导出XML,JSON,BYTEA文档

2.3 - DEB 扩展清单

323 个 Debian / Ubuntu 系统中可用的扩展 DEB 包清单。

权威扩展列表现已搬迁至专门子站点:https://ext.pigsty.io

Pigsty 在 Debian/Ubuntu 系统中总共有 323 个可用 RPM 扩展,其中DEB独占扩展 7 个,缺少RPM独占扩展 19 个。

其中除去 70 个PG自带的 Contrib扩展,PGDG APT 仓库提供了 109 个,Pigsty APT 仓库提供了 143 个。 当前首要大版本 PostgreSQL 16 支持了 322 个扩展,而 PostgreSQL 17 支持了其中的 290 个。

扩展名(官网) 标准名(简介) 包名 仓库 版本 类目 许可证 PG大版本支持 LOAD DDL DBSU RELOC 简介
timescaledb timescaledb timescaledb-2-postgresql-$v PGDG 2.17.0 TIME Timescale 17,16,15,14,13,12 时序数据库扩展插件
timeseries pg_timeseries postgresql-$v-pg-timeseries PIGSTY 0.1.6 TIME PostgreSQL 17,16,15,14,13,12 Tembo时序数据API封装
periods periods postgresql-$v-periods PGDG 1.2 TIME PostgreSQL 17,16,15,14,13,12 为 PERIODs 和 SYSTEM VERSIONING 提供标准 SQL 功能
temporal_tables temporal_tables postgresql-$v-temporal-tables PIGSTY 1.2.2 TIME BSD 2 16,15,14,13,12 时态表功能支持
emaj emaj postgresql-$v-emaj PIGSTY 4.5.0 TIME GPLv3 16,15,14,13,12 让数据库的子集具有细粒度日志和时间旅行功能
table_version table_version postgresql-$v-tableversion PIGSTY 1.10.3 TIME BSD 3 17,16,15,14,13,12 PostgreSQL 版本控制表扩展
pg_cron pg_cron postgresql-$v-cron PGDG 1.6 TIME PostgreSQL 17,16,15,14,13,12 定时任务调度器
pg_later pg_later postgresql-$v-pg-later PIGSTY 0.1.1 TIME PostgreSQL 16,15,14,13 执行查询,并在稍后异步获取查询结果
pg_background pg_background postgresql-$v-pg-background PIGSTY 1.0 TIME GPLv3 17,16,15,14,13,12 在后台运行 SQL 查询
pg_timetable pg_timetable pg-timetable PIGSTY 5.9.0 TIME PostgreSQL 17,16,15,14,13,12 PostgreSQL高级任务调度器
postgis postgis postgresql-$v-postgis-3* PGDG 3.5.0 GIS GPLv2 17,16,15,14,13,12 PostGIS 几何和地理空间扩展
postgis_topology postgis postgresql-$v-postgis-3* PGDG 3.5.0 GIS GPLv2 17,16,15,14,13,12 PostGIS 拓扑空间类型和函数
postgis_raster postgis postgresql-$v-postgis-3* PGDG 3.5.0 GIS GPLv2 17,16,15,14,13,12 PostGIS 光栅类型和函数
postgis_sfcgal postgis postgresql-$v-postgis-3* PGDG 3.5.0 GIS GPLv2 17,16,15,14,13,12 PostGIS SFCGAL 函数
postgis_tiger_geocoder postgis postgresql-$v-postgis-3* PGDG 3.5.0 GIS GPLv2 17,16,15,14,13,12 PostGIS tiger 地理编码器和反向地理编码器
address_standardizer postgis postgresql-$v-postgis-3* PGDG 3.5.0 GIS GPLv2 17,16,15,14,13,12 地址标准化函数。
address_standardizer_data_us postgis postgresql-$v-postgis-3* PGDG 3.5.0 GIS GPLv2 17,16,15,14,13,12 地址标准化函数:美国数据集示例
pgrouting pgrouting postgresql-$v-pgrouting* PGDG 3.6.0 GIS GPLv2 17,16,15,14,13,12 提供寻路能力
pointcloud pointcloud postgresql-$v-pointcloud PGDG 1.2.5 GIS BSD 3 17,16,15,14,13,12 提供激光雷达点云数据类型支持
pointcloud_postgis pointcloud postgresql-$v-pointcloud PGDG 1.2.5 GIS BSD 3 17,16,15,14,13,12 将激光雷达点云与PostGIS几何类型相集成
h3 pg_h3 postgresql-$v-h3 PGDG 4.1.3 GIS Apache-2.0 16,15,14,13,12 H3六边形层级索引支持
h3_postgis pg_h3 postgresql-$v-h3 PGDG 4.1.3 GIS Apache-2.0 16,15,14,13,12 H3与PostGIS集成的扩展插件
q3c q3c postgresql-$v-q3c PGDG 2.0.1 GIS GPLv2 17,16,15,14,13,12 Q3C天空索引插件
ogr_fdw ogr_fdw postgresql-$v-ogr-fdw PGDG 1.1 GIS MIT 16,15,14,13,12 GIS 数据外部数据源包装器
geoip geoip postgresql-$v-geoip PIGSTY 0.3.0 GIS BSD 2 17,16,15,14,13,12 IP 地理位置扩展(围绕 MaxMind GeoLite 数据集的包装器)
pg_polyline pg_polyline postgresql-$v-pg-polyline PIGSTY 0.0.0 GIS MIT 17,16,15,14,13,12 Google快速Polyline编码解码扩展
pg_geohash pg_geohash postgresql-$v-pg-geohash PIGSTY 1.0 GIS MIT 17,16,15,14,13,12 使用GeoHash处理空间坐标的函数包
mobilitydb mobilitydb postgresql-$v-mobilitydb PGDG 1.1.1 GIS GPLv3 16,15,14,13,12 MobilityDB地理空间投影数据管理分析平台
earthdistance earthdistance postgresql-$v CONTRIB 1.1 GIS PostgreSQL 17,16,15,14,13,12 计算地球表面上的大圆距离
vector pgvector postgresql-$v-pgvector PGDG 0.7.4 RAG PostgreSQL 17,16,15,14,13,12 向量数据类型和 ivfflat / hnsw 访问方法
vectorscale pgvectorscale postgresql-$v-pgvectorscale PIGSTY 0.4.0 RAG PostgreSQL 17,16,15,14,13 使用DiskANN算法对向量进行高效索引
vectorize pg_vectorize postgresql-$v-pg-vectorize PIGSTY 0.18.3 RAG PostgreSQL 16,15,14 在PostgreSQL中封装RAG向量检索服务
pg_similarity pg_similarity postgresql-$v-similarity PGDG 1.0 RAG BSD 3 17,16,15,14,13,12 提供17种距离度量函数
smlar smlar postgresql-$v-smlar PIGSTY 1.0 RAG PostgreSQL 17,16,15,14,13 高效的相似度搜索函数
pg_summarize pg_summarize postgresql-$v-pg-summarize PIGSTY 0.0.0 FUNC PostgreSQL 17,16,15,14,13,12 使用LLM对文本字段进行总结
pg_tiktoken pg_tiktoken postgresql-$v-pg-tiktoken PIGSTY 0.0.1 RAG Apache-2.0 17,16,15,14,13,12 在PostgreSQL中计算OpenAI使用的Token数
pgml pgml postgresql-$v-pgml PIGSTY 2.9.3 RAG MIT 16,15,14 PostgresML:用SQL运行机器学习算法并训练模型
pg4ml pg4ml postgresql-$v-pg4ml PIGSTY 2.0 RAG AGPLv3 17,16,15,14,13,12 PG4ML是一个机器学习框架
pg_search pg_search postgresql-$v-pg-search PIGSTY 0.11.1 FTS AGPLv3 17,16,15,14 ParadeDB BM25算法全文检索插件,ES全文检索
pg_bigm pg_bigm postgresql-$v-pg-bigm PIGSTY 1.2 FTS PostgreSQL 17,16,15,14,13,12 基于二字组的多语言全文检索扩展
zhparser zhparser postgresql-$v-zhparser PIGSTY 2.2 FTS PostgreSQL 17,16,15,14,13,12 中文分词,全文搜索解析器
hunspell_cs_cz hunspell_cs_cz postgresql-$v-hunspell-cs-cz PIGSTY 1.0 FTS PostgreSQL 17,16,15,14,13,12 Hunspell捷克语全文检索词典
hunspell_de_de hunspell_de_de postgresql-$v-hunspell-de-de PIGSTY 1.0 FTS PostgreSQL 17,16,15,14,13,12 Hunspell德语全文检索词典
hunspell_en_us hunspell_en_us postgresql-$v-hunspell-en-us PIGSTY 1.0 FTS PostgreSQL 17,16,15,14,13,12 Hunspell英语全文检索词典
hunspell_fr hunspell_fr postgresql-$v-hunspell-fr PIGSTY 1.0 FTS PostgreSQL 17,16,15,14,13,12 Hunspell法语全文检索词典
hunspell_ne_np hunspell_ne_np postgresql-$v-hunspell-ne-np PIGSTY 1.0 FTS PostgreSQL 17,16,15,14,13,12 Hunspell尼泊尔语全文检索词典
hunspell_nl_nl hunspell_nl_nl postgresql-$v-hunspell-nl-nl PIGSTY 1.0 FTS PostgreSQL 17,16,15,14,13,12 Hunspell荷兰语全文检索词典
hunspell_nn_no hunspell_nn_no postgresql-$v-hunspell-nn-no PIGSTY 1.0 FTS PostgreSQL 17,16,15,14,13,12 Hunspell挪威语全文检索词典
hunspell_pt_pt hunspell_pt_pt postgresql-$v-hunspell-pt-pt PIGSTY 1.0 FTS PostgreSQL 17,16,15,14,13,12 Hunspell葡萄牙语全文检索词典
hunspell_ru_ru hunspell_ru_ru postgresql-$v-hunspell-ru-ru PIGSTY 1.0 FTS PostgreSQL 17,16,15,14,13,12 Hunspell俄语全文检索词典
hunspell_ru_ru_aot hunspell_ru_ru_aot postgresql-$v-hunspell-ru-ru-aot PIGSTY 1.0 FTS PostgreSQL 17,16,15,14,13,12 Hunspell俄语全文检索词典(来自AOT.ru小组)
fuzzystrmatch fuzzystrmatch postgresql-$v CONTRIB 1.2 FTS PostgreSQL 17,16,15,14,13,12 确定字符串之间的相似性和距离
pg_trgm pg_trgm postgresql-$v CONTRIB 1.6 FTS PostgreSQL 17,16,15,14,13,12 文本相似度测量函数与模糊检索
citus citus postgresql-$v-citus-12.1 PGDG 12.1-1 OLAP AGPLv3 16,15,14,13,12 Citus 分布式数据库
citus_columnar citus postgresql-$v-citus-12.1 PGDG 11.3-1 OLAP AGPLv3 16,15,14,13,12 Citus 列式存储
columnar hydra postgresql-$v-hydra PIGSTY 11.1-11 OLAP AGPLv3 16,15,14,13 开源列式存储扩展
pg_analytics pg_analytics postgresql-$v-pg-analytics PIGSTY 0.2.1 OLAP AGPLv3 17,16,15,14 由 DuckDB 驱动的数据分析引擎
pg_duckdb pg_duckdb postgresql-$v-pg-duckdb PIGSTY 0.0.1 OLAP MIT 17,16,15 在PostgreSQL中的嵌入式DuckDB扩展
duckdb_fdw duckdb_fdw postgresql-$v-duckdb-fdw PIGSTY 1.0.0 OLAP MIT 16,15,14,13,12 DuckDB 外部数据源包装器
pg_parquet pg_parquet postgresql-$v-pg-parquet PIGSTY 0.1.0 OLAP PostgreSQL 17,16 在PostgreSQL与本地/S3中的Parquet文件复制数据
pg_fkpart pg_fkpart postgresql-$v-pg-fkpart PIGSTY 1.7 OLAP GPLv2 17,16,15,14,13,12 按外键实用程序进行表分区的扩展
pg_partman pg_partman postgresql-$v-partman PGDG 5.1.0 OLAP PostgreSQL 17,16,15,14,13,12 用于按时间或 ID 管理分区表的扩展
plproxy plproxy postgresql-$v-plproxy PGDG 2.11.0 OLAP BSD 0 17,16,15,14,13,12 作为过程语言实现的数据库分区
tablefunc tablefunc postgresql-$v CONTRIB 1.0 OLAP PostgreSQL 17,16,15,14,13,12 交叉表函数
age age postgresql-$v-age PGDG 1.5.0 FEAT Apache-2.0 16,15,14,13,12 Apache AGE,图数据库扩展 (Deb可用)
hll hll postgresql-$v-hll PGDG 2.18 FEAT Apache-2.0 17,16,15,14,13,12 hyperloglog 数据类型
rum rum postgresql-$v-rum PGDG 1.3 FEAT PostgreSQL 17,16,15,14,13,12 RUM 索引访问方法
pg_graphql pg_graphql postgresql-$v-pg-graphql PIGSTY 1.5.9 FEAT Apache-2.0 17,16,15,14 PG内的 GraphQL 支持 (RUST, supabase)
pg_jsonschema pg_jsonschema postgresql-$v-pg-jsonschema PIGSTY 0.3.3 FEAT Apache-2.0 17,16,15,14,13,12 提供JSON Schema校验能力
jsquery jsquery postgresql-$v-jsquery PGDG 1.1 FEAT PostgreSQL 17,16,15,14,13,12 用于内省 JSONB 数据类型的查询类型
pg_hint_plan pg_hint_plan postgresql-$v-pg-hint-plan PGDG 1.6.1 FEAT BSD 3 17,16,15,14,13,12 添加强制指定执行计划的能力
hypopg hypopg postgresql-$v-hypopg PGDG 1.4.1 FEAT PostgreSQL 17,16,15,14,13,12 假设索引,用于创建一个虚拟索引检验执行计划
index_advisor index_advisor postgresql-$v-index-advisor PIGSTY 0.2.0 FEAT PostgreSQL 17,16,15,14,13,12 查询索引建议器
plan_filter pg_plan_filter postgresql-$v-pg-plan-filter PIGSTY 0.0.1 FEAT PostgreSQL 17,16,15,14,13,12 使用执行计划代价过滤阻止特定查询语句
imgsmlr imgsmlr postgresql-$v-imgsmlr PIGSTY 1.0 FEAT PostgreSQL 17,16,15,14,13,12 使用Haar小波分析计算图片相似度
pg_ivm pg_ivm postgresql-$v-pg-ivm PIGSTY 1.8 FEAT PostgreSQL 17,16,15,14,13,12 增量维护的物化视图
pgmq pgmq postgresql-$v-pgmq PIGSTY 1.4.4 FEAT PostgreSQL 17,16,15,14,13,12 基于Postgres实现类似AWS SQS/RSMQ的消息队列
pgq pgq postgresql-$v-pgq3 PGDG 3.5.1 FEAT ISC 17,16,15,14,13,12 通用队列的PG实现
pg_cardano pg_cardano postgresql-$v-pg-cardano PIGSTY 1.0.2 FEAT MIT 17,16,15,14,13,12 Cardano相关工具包:加密函数,地址编解码,区块链处理
rdkit rdkit postgresql-$v-rdkit PGDG 4.3.0 FEAT BSD 3 16,15,14,13,12 在PostgreSQL化学领域数据管理功能
bloom bloom postgresql-$v CONTRIB 1.0 FEAT PostgreSQL 17,16,15,14,13,12 bloom 索引-基于指纹的索引
pg_tle pg_tle postgresql-$v-pg-tle PIGSTY 1.2.0 LANG Apache-2.0 17,16,15,14,13,12 AWS 可信语言扩展
plv8 plv8 postgresql-$v-plv8 PIGSTY 3.2.3 LANG PostgreSQL 17,16,15,14,13,12 PL/JavaScript (v8) 可信过程程序语言
plluau pllua postgresql-$v-pllua PGDG 2.0 LANG MIT 17,16,15,14,13,12 Lua 程序语言(不受信任的)
hstore_plluau pllua postgresql-$v-pllua PGDG 1.0 LANG MIT 17,16,15,14,13,12 Lua 程序语言的Hstore适配扩展(不受信任的)
pllua pllua postgresql-$v-pllua PGDG 2.0 LANG MIT 17,16,15,14,13,12 Lua 程序语言
hstore_pllua pllua postgresql-$v-pllua PGDG 1.0 LANG MIT 17,16,15,14,13,12 Lua 程序语言的Hstore适配扩展
plprql plprql postgresql-$v-plprql PIGSTY 0.1.0 LANG Apache-2.0 16,15,14,13,12 在PostgreSQL使用PRQL——管线式关系查询语言
pldbgapi pldebugger postgresql-$v-pldebugger PGDG 1.1 LANG Artistic 17,16,15,14,13,12 用于调试 PL/pgSQL 函数的服务器端支持
plpgsql_check plpgsql_check postgresql-$v-plpgsql-check PGDG 2.7 LANG MIT 17,16,15,14,13,12 对 plpgsql 函数进行扩展检查
plprofiler plprofiler postgresql-$v-plprofiler PGDG 4.2 LANG Artistic 17,16,15,14,13,12 剖析 PL/pgSQL 函数
plsh plsh postgresql-$v-plsh PGDG 2 LANG MIT 17,16,15,14,13,12 PL/sh 程序语言
pljava pljava postgresql-$v-pljava PGDG 1.6.6 LANG BSD 3 16,15,14,13,12 Java 程序语言
plr plr postgresql-$v-plr PGDG 8.4.6 LANG GPLv2 17,16,15,14,13,12 从数据库中加载R语言解释器并执行R脚本
pgtap pgtap postgresql-$v-pgtap PGDG 1.3.1 LANG PostgreSQL 16,15,14,13,12 PostgreSQL单元测试框架
pltcl pltcl postgresql-$v CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 PL/TCL 存储过程语言
pltclu pltcl postgresql-$v CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 PL/TCL 存储过程语言(未受信/高权限)
plperl plperl postgresql-$v CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 PL/Perl 存储过程语言
bool_plperl plperl postgresql-$v CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 在 bool 和 plperl 之间转换
hstore_plperl plperl postgresql-$v CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 在 hstore 和 plperl 之间转换适配类型
jsonb_plperl plperl postgresql-$v CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 在 jsonb 和 plperl 之间转换
plperlu plperlu postgresql-$v CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 PL/PerlU 存储过程语言(未受信/高权限)
bool_plperlu plperlu postgresql-$v CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 在 bool 和 plperlu 之间转换
jsonb_plperlu plperlu postgresql-$v CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 在 jsonb 和 plperlu 之间转换
hstore_plperlu plperlu postgresql-$v CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 在 hstore 和 plperlu 之间转换适配类型
plpgsql plpgsql postgresql-$v CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 PL/pgSQL 程序设计语言
plpython3u plpython3u postgresql-$v CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 PL/Python3 存储过程语言(未受信/高权限)
jsonb_plpython3u plpython3u postgresql-$v CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 在 jsonb 和 plpython3u 之间转换
ltree_plpython3u plpython3u postgresql-$v CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 在 ltree 和 plpython3u 之间转换
hstore_plpython3u plpython3u postgresql-$v CONTRIB 1.0 LANG PostgreSQL 17,16,15,14,13,12 在 hstore 和 plpython3u 之间转换
prefix prefix postgresql-$v-prefix PGDG 1.2.0 TYPE PostgreSQL 17,16,15,14,13,12 前缀树数据类型
semver semver postgresql-$v-semver PGDG 0.32.1 TYPE PostgreSQL 17,16,15,14,13,12 语义版本号数据类型
unit pgunit postgresql-$v-unit PGDG 7 TYPE GPLv3 17,16,15,14,13,12 SI 国标单位扩展
md5hash md5hash postgresql-$v-md5hash PIGSTY 1.0.1 TYPE BSD 2 17,16,15,14,13,12 提供128位MD5的原生数据类型
asn1oid asn1oid postgresql-$v-asn1oid PGDG 1 TYPE GPLv3 17,16,15,14,13,12 ASN1OID数据类型支持
roaringbitmap roaringbitmap postgresql-$v-roaringbitmap PGDG 0.5 TYPE Apache-2.0 17,16,15,14,13,12 支持RoaringBitmap数据类型
pgfaceting pgfaceting postgresql-$v-pgfaceting PGDG 0.2.0 TYPE BSD 3 17,16,15,14,13,12 使用倒排索引的高速切面查询
pg_sphere pgsphere postgresql-$v-pgsphere PGDG 1.5.1 TYPE BSD 3 17,16,15,14,13,12 球面对象函数、运算符与索引支持
country pg_country postgresql-$v-pg-country PIGSTY 0.0.3 TYPE PostgreSQL 17,16,15,14,13,12 国家代码数据类型,遵循ISO 3166-1标准
currency pg_currency postgresql-$v-pg-currency PIGSTY 0.0.3 TYPE MIT 17,16,15,14,13,12 使用1字节表示的货币数据类型
pgmp pgmp postgresql-$v-pgmp PGDG 1.1 TYPE LGPLv3 17,16,15,14,13,12 多精度算术扩展
numeral numeral postgresql-$v-numeral PGDG 1 TYPE GPLv2 17,16,15,14,13,12 数值类型扩展
pg_rational pg_rational postgresql-$v-rational PGDG 0.0.2 TYPE MIT 17,16,15,14,13,12 使用BIGINT表示的有理数数据类型
uint pguint postgresql-$v-pguint PIGSTY 0 TYPE PostgreSQL 17,16,15,14,13,12 无符号整型数据类型
uint128 pg_uint128 postgresql-$v-pg-uint128 PIGSTY 1.0.0 TYPE PostgreSQL 17,16,15,14,13,12 原生128位无符号整型数据类型
ip4r ip4r postgresql-$v-ip4r PGDG 2.4 TYPE PostgreSQL 17,16,15,14,13,12 PostgreSQL 的 IPv4/v6 和 IPv4/v6 范围索引类型
uri pg_uri postgresql-$v-pg-uri PIGSTY 1 TYPE PostgreSQL 17,16,15,14,13,12 URI数据类型
pgemailaddr pgemailaddr postgresql-$v$v-pg-emailaddr PIGSTY 0 TYPE PostgreSQL 17,16,15,14,13,12 Email地址数据类型
acl acl postgresql-$v-acl PIGSTY 1.0.4 TYPE BSD-2 17,16,15,14,13,12 ACL数据类型
debversion debversion postgresql-$v-debversion PGDG 1.2 TYPE PostgreSQL 17,16,15,14,13,12 Debian版本号数据类型
pg_rrule pg_rrule postgresql-$v-pg-rrule PGDG 0.2.0 TYPE MIT 17,16,15,14,13,12 日历重复规则RRULE数据类型
timestamp9 timestamp9 postgresql-$v-timestamp9 PIGSTY 1.4.0 TYPE MIT 17,16,15,14,13,12 纳秒分辨率时间戳
chkpass chkpass postgresql-$v-chkpass PIGSTY 1.0 TYPE PostgreSQL 17,16,15,14,13,12 数据类型:自动加密的密码
isn isn postgresql-$v CONTRIB 1.2 TYPE PostgreSQL 17,16,15,14,13,12 用于国际产品编号标准的数据类型
seg seg postgresql-$v CONTRIB 1.4 TYPE PostgreSQL 17,16,15,14,13,12 表示线段或浮点间隔的数据类型
cube cube postgresql-$v CONTRIB 1.5 TYPE PostgreSQL 17,16,15,14,13,12 用于存储多维立方体的数据类型
ltree ltree postgresql-$v CONTRIB 1.2 TYPE PostgreSQL 17,16,15,14,13,12 用于表示分层树状结构的数据类型
hstore hstore postgresql-$v CONTRIB 1.8 TYPE PostgreSQL 17,16,15,14,13,12 用于存储(键,值)对集合的数据类型
citext citext postgresql-$v CONTRIB 1.6 TYPE PostgreSQL 17,16,15,14,13,12 提供大小写不敏感的字符串类型
xml2 xml2 postgresql-$v CONTRIB 1.1 TYPE PostgreSQL 17,16,15,14,13,12 XPath 查询和 XSLT
topn topn postgresql-$v-topn PGDG 2.6.0 FUNC AGPLv3 17,16,15,14,13,12 top-n JSONB 的类型
gzip pg_gzip postgresql-$v-gzip PIGSTY 1.0 FUNC MIT 17,16,15,14,13,12 使用SQL执行Gzip压缩与解压缩
zstd pg_zstd postgresql-$v-pg-zstd PIGSTY 1.1.0 FUNC ISC 17,16,15,14,13,12 ZSTD压缩解压缩函数包
http pg_http postgresql-$v-http PGDG 1.6 FUNC MIT 17,16,15,14,13,12 HTTP客户端,允许在数据库内收发HTTP请求 (supabase)
pg_net pg_net postgresql-$v-pg-net PIGSTY 0.9.2 FUNC Apache-2.0 17,16,15,14,13,12 用 SQL 进行异步非阻塞HTTP/HTTPS 请求的扩展 (supabase)
pg_html5_email_address pg_html5_email_address postgresql-$v-pg-html5-email-address PIGSTY 1.2.3 FUNC PostgreSQL 17,16,15,14,13,12 验证Email是否符合HTML5规范的扩展
pgsql_tweaks pgsql_tweaks postgresql-$v-pgsql-tweaks PIGSTY 0.10.6 FUNC PostgreSQL 17,16,15,14,13,12 一些日常会用到的便利函数与视图
pg_extra_time pg_extra_time postgresql-$v-pg-extra-time PIGSTY 1.1.3 FUNC PostgreSQL 17,16,15,14,13,12 一些关于日期与时间的扩展函数
timeit pg_timeit postgresql-$v-pg-timeit PIGSTY 1.0 FUNC PostgreSQL 17,16,15,14,13,12 使用SQL语句执行高精度计时
count_distinct count_distinct postgresql-$v-count-distinct PIGSTY 3.0.1 FUNC BSD 2 17,16,15,14,13,12 COUNT(DISTINCT …) 聚合的替代方案
extra_window_functions extra_window_functions postgresql-$v-extra-window-functions PGDG 1.0 FUNC PostgreSQL 17,16,15,14,13,12 额外的窗口函数
first_last_agg first_last_agg postgresql-$v-first-last-agg PGDG 0.1.4 FUNC PostgreSQL 17,16,15,14,13,12 first() 与 last() 聚合函数
tdigest tdigest postgresql-$v-tdigest PGDG 1.4.1 FUNC Apache-2.0 17,16,15,14,13,12 tdigest 聚合函数
aggs_for_vecs aggs_for_vecs postgresql-$v-aggs-for-vecs PIGSTY 1.3.0 FUNC MIT 17,16,15,14,13,12 针对数组类型的聚合函数集合扩展
aggs_for_arrays aggs_for_arrays postgresql-$v-aggs-for-arrays PIGSTY 1.3.2 FUNC MIT 17,16,15,14,13,12 计算数组聚合统计值的函数包
arraymath pg_arraymath postgresql-$v-pg-arraymath PIGSTY 1.1 FUNC MIT 17,16,15,14,13,12 数组逐元素数学运算符包
quantile quantile postgresql-$v-quantile PIGSTY 1.1.7 FUNC BSD 17,16,15,14,13,12 Quantile聚合函数
lower_quantile lower_quantile postgresql-$v-lower-quantile PIGSTY 1.0.0 FUNC BSD-2 17,16,15,14,13,12 Lower Quantile 聚合函数
pg_idkit pg_idkit postgresql-$v-pg-idkit PIGSTY 0.2.4 FUNC Apache-2.0 17,16,15,14,13,12 生成各式各样的唯一标识符:UUIDv6, ULID, KSUID
pg_uuidv7 pg_uuidv7 postgresql-$v-pg-uuidv7 PIGSTY 1.6 FUNC MPLv2 17,16,15,14,13,12 UUIDv7 支持
permuteseq permuteseq postgresql-$v-permuteseq PIGSTY 1.2 FUNC PostgreSQL 17,16,15,14,13,12 伪随机数ID置换生成器
pg_hashids pg_hashids postgresql-$v-pg-hashids PIGSTY 1.3 FUNC MIT 17,16,15,14,13,12 加盐将整型ID转为短字符串ID
sequential_uuids sequential_uuids postgresql-$v-sequential-uuids PIGSTY 1.0.2 FUNC MIT 17,16,15,14,13,12 生成连续生成的UUID
pg_math pg_math postgresql-$v-pg-math PIGSTY 1.0 FUNC GPLv3 17,16,15,14,13,12 使用GSL库的数学统计函数
random pg_random postgresql-$v-random PIGSTY 2.0.0-dev FUNC PostgreSQL 17,16,15,14,13,12 随机数生成器
base36 pg_base36 postgresql-$v-base36 PIGSTY 1.0.0 FUNC MIT 17,16,15,14,13,12 Base36编码解码扩展
base62 pg_base62 postgresql-$v-base62 PIGSTY 0.0.1 FUNC MIT 17,16,15,14,13,12 Base62编码解码扩展
pg_base58 pg_base58 postgresql-$v-pg-base58 PIGSTY 0.0.1 FUNC MIT 17,16,15,14,13,12 Base58 编码/解码函数
floatvec floatvec postgresql-$v-floatvec PIGSTY 1.0.1 FUNC MIT 17,16,15,14,13,12 数组类型数学运算扩展
financial pg_financial postgresql-$v-pg-financial PIGSTY 1.0.1 FUNC PostgreSQL 17,16,15,14,13,12 金融领域聚合函数
pgjwt pgjwt postgresql-$v-pgjwt PIGSTY 0.2.0 FUNC MIT 17,16,15,14,13,12 JSON Web Token API 的PG实现 (supabase)
pg_hashlib pg_hashlib postgresql-$v-pg-hashlib PIGSTY 1.1 FUNC PostgreSQL 17,16,15,14,13,12 稳定哈希函数包
shacrypt shacrypt postgresql-$v-shacrypt PIGSTY 1.1 FUNC PostgreSQL 17,16,15,14,13,12 实现SHA256-CRYPT与SHA512-CRYPT密钥加密算法
cryptint cryptint postgresql-$v-cryptint PIGSTY 1.0.0 FUNC PostgreSQL 17,16,15,14,13,12 加密INT与BIGINT类型
pguecc pg_ecdsa postgresql-$v-pg-ecdsa PIGSTY 1.0 FUNC BSD-2 17,16,15,14,13,12 PostgreSQL的uECC绑定,椭圆曲线加解密函数包
pgpcre pgpcre postgresql-$v-pgpcre PGDG 1 FUNC PostgreSQL 17,16,15,14,13,12 PCRE/Perl风格的正则表达式支持
icu_ext icu_ext postgresql-$v-icu-ext PGDG 1.9 FUNC PostgreSQL 17,16,15,14,13,12 访问ICU库提供的函数
pgqr pgqr postgresql-$v-pgqr PIGSTY 1.0 FUNC BSD-3 17,16,15,14,13,12 从数据库中直接生成QR二维码
envvar envvar postgresql-$v-pg-envvar PIGSTY 1.0.0 FUNC PostgreSQL 17,16,15,14,13,12 获取环境变量的函数
pg_protobuf pg_protobuf postgresql-$v-pg-protobuf PIGSTY 1.0 FUNC MIT 17,16,15,14,13,12 提供Protobuf函数支持
url_encode url_encode postgresql-$v-url-encode PIGSTY 1.2 FUNC PostgreSQL 17,16,15,14,13,12 提供URL编码解码函数
refint refint postgresql-$v CONTRIB 1.0 FUNC PostgreSQL 17,16,15,14,13,12 实现引用完整性的函数
autoinc autoinc postgresql-$v CONTRIB 1.0 FUNC PostgreSQL 17,16,15,14,13,12 用于自动递增字段的函数
insert_username insert_username postgresql-$v CONTRIB 1.0 FUNC PostgreSQL 17,16,15,14,13,12 用于跟踪谁更改了表的函数
moddatetime moddatetime postgresql-$v CONTRIB 1.0 FUNC PostgreSQL 17,16,15,14,13,12 跟踪最后修改时间
tsm_system_time tsm_system_time postgresql-$v CONTRIB 1.0 FUNC PostgreSQL 17,16,15,14,13,12 接受毫秒数限制的 TABLESAMPLE 方法
dict_xsyn dict_xsyn postgresql-$v CONTRIB 1.0 FUNC PostgreSQL 17,16,15,14,13,12 用于扩展同义词处理的文本搜索字典模板
tsm_system_rows tsm_system_rows postgresql-$v CONTRIB 1.0 FUNC PostgreSQL 17,16,15,14,13,12 接受行数限制的 TABLESAMPLE 方法
tcn tcn postgresql-$v CONTRIB 1.0 FUNC PostgreSQL 17,16,15,14,13,12 用触发器通知变更
uuid-ossp uuid-ossp postgresql-$v CONTRIB 1.1 FUNC PostgreSQL 17,16,15,14,13,12 生成通用唯一标识符(UUIDs)
btree_gist btree_gist postgresql-$v CONTRIB 1.7 FUNC PostgreSQL 17,16,15,14,13,12 用GiST索引常见数据类型
btree_gin btree_gin postgresql-$v CONTRIB 1.3 FUNC PostgreSQL 17,16,15,14,13,12 用GIN索引常见数据类型
intarray intarray postgresql-$v CONTRIB 1.5 FUNC PostgreSQL 17,16,15,14,13,12 1维整数数组的额外函数、运算符和索引支持
intagg intagg postgresql-$v CONTRIB 1.1 FUNC PostgreSQL 17,16,15,14,13,12 整数聚合器和枚举器(过时)
dict_int dict_int postgresql-$v CONTRIB 1.0 FUNC PostgreSQL 17,16,15,14,13,12 用于整数的文本搜索字典模板
unaccent unaccent postgresql-$v CONTRIB 1.1 FUNC PostgreSQL 17,16,15,14,13,12 删除重音的文本搜索字典
pg_repack pg_repack postgresql-$v-repack PGDG 1.5.0 ADMIN BSD 3 17,16,15,14,13,12 在线垃圾清理与表膨胀治理
pg_squeeze pg_squeeze postgresql-$v-squeeze PGDG 1.7 ADMIN BSD 2 17,16,15,14,13,12 从关系中删除未使用空间
pg_dirtyread pg_dirtyread postgresql-$v-dirtyread PGDG 2 ADMIN BSD 3 17,16,15,14,13,12 从表中读取尚未垃圾回收的行
pgfincore pgfincore postgresql-$v-pgfincore PGDG 1.3.1 ADMIN BSD 3 17,16,15,14,13,12 检查和管理操作系统缓冲区缓存
pgdd pgdd postgresql-$v-pgdd PIGSTY 0.5.2 ADMIN MIT 16,15,14,13,12 提供通过标准SQL查询数据库目录集簇的能力
ddlx ddlx postgresql-$v-ddlx PIGSTY 0.27 ADMIN PostgreSQL 17,16,15,14,13,12 提取数据库对象的DDL
prioritize pg_prioritize postgresql-16-prioritize PGDG 1.0 ADMIN PostgreSQL 17,16,15,14,13,12 获取和设置 PostgreSQL 后端的优先级
pg_checksums pg_checksums postgresql-$v-pg-checksums PGDG 1.1 ADMIN BSD 2 16,15,14,13,12 在离线模式下激活/启用/禁用数据库集群的校验和功能
pg_readonly pg_readonly postgresql-$v-pg-readonly PGDG 1.0.0 ADMIN PostgreSQL 17,16,15,14,13,12 将集群设置为只读
safeupdate safeupdate postgresql-$v-pg-safeupdate PGDG 1.4 ADMIN ISC 17,16,15,14,13,12 强制在 UPDATE 和 DELETE 时提供 Where 条件
pg_permissions pg_permissions postgresql-$v-pg-permissions PIGSTY 1.3 ADMIN BSD 2 17,16,15,14,13,12 查看对象权限并将其与期望状态进行比较
pgautofailover pgautofailover postgresql-16-auto-failover PGDG 2.1 ADMIN PostgreSQL 16,15,14,13,12 PG 自动故障迁移
pg_catcheck pg_catcheck postgresql-$v-pg-catcheck PGDG 1.4.0 ADMIN BSD 3 17,16,15,14,13,12 用于诊断系统目录是否损坏的工具
pre_prepare preprepare postgresql-$v-preprepare PGDG 0.4 ADMIN PostgreSQL 17,16,15,14,13,12 在服务端预先准备好PreparedStatement备用
pgcozy pgcozy postgresql-$v-pgcozy PIGSTY 1.0 ADMIN PostgreSQL 17,16,15,14,13,12 根据先前的pg_buffercache快照预热内存缓冲区
pg_orphaned pg_orphaned postgresql-$v-pg-orphaned PIGSTY 1.0 ADMIN PostgreSQL 17,16,15,14,13,12 处理孤儿文件的扩展插件
pg_crash pg_crash postgresql-$v-pg-crash PIGSTY 1.0 ADMIN BSD-3 17,16,15,14,13,12 向数据库进程随机发送信号模拟故障
pg_cheat_funcs pg_cheat_funcs postgresql-$v-pg-cheat-funcs PIGSTY 1.0 ADMIN PostgreSQL 17,16,15,14,13,12 一些超级实用的作弊函数
pg_savior pg_savior postgresql-$v-pg-savior PIGSTY 0.0.1 ADMIN Apache-2.0 17,16,15,14,13 阻止不带条件的全表更新以避免意外事故
table_log table_log postgresql-$v-tablelog PGDG 0.6.1 ADMIN PostgreSQL 17,16,15,14,13,12 记录某张表的修改日志并做表/行级时间点恢复
pg_fio pg_fio postgresql-$v-pg-fio PIGSTY 1.0 ADMIN BSD-3 17,16,15,14,13,12 PostgreSQL文件IO函数包
pgpool_adm pgpool postgresql-$v-pgpool2 PGDG 1.5 ADMIN PostgreSQL 17,16,15,14,13,12 PGPool 管理函数
pgpool_recovery pgpool postgresql-$v-pgpool2 PGDG 1.4 ADMIN PostgreSQL 17,16,15,14,13,12 PGPool辅助扩展,从v4.3提供的恢复函数
pgpool_regclass pgpool postgresql-$v-pgpool2 PGDG 1.0 ADMIN PostgreSQL 17,16,15,14,13,12 PGPool辅助扩展,RegClass替代
pgagent pgagent pgagent PGDG 4.2 ADMIN PostgreSQL 17,16,15,14,13,12 PostgreSQL任务调度工具,与PGADMIN配合使用
vacuumlo vacuumlo postgresql-$v CONTRIB 16.3 ADMIN PostgreSQL 17,16,15,14,13,12 从PostgreSQL中移除孤儿数据库文件的实用命令行工具
pg_prewarm pg_prewarm postgresql-$v CONTRIB 1.2 ADMIN PostgreSQL 17,16,15,14,13,12 预热关系数据
oid2name oid2name postgresql-$v CONTRIB 16.3 ADMIN PostgreSQL 17,16,15,14,13,12 用于检查PG文件结构的实用命令行工具
lo lo postgresql-$v CONTRIB 1.1 ADMIN PostgreSQL 17,16,15,14,13,12 大对象维护
basic_archive basic_archive postgresql-$v CONTRIB 16.3 ADMIN PostgreSQL 17,16,15 归档模块样例
basebackup_to_shell basebackup_to_shell postgresql-$v CONTRIB 16.3 ADMIN PostgreSQL 17,16,15 添加一种备份到Shell终端到基础备份方式
old_snapshot old_snapshot postgresql-$v CONTRIB 1.0 ADMIN PostgreSQL 17,16,15,14 支持 old_snapshot_threshold 的实用程序
adminpack adminpack postgresql-$v CONTRIB 2.1 ADMIN PostgreSQL 17,16,15,14,13,12 PostgreSQL 管理函数集合
amcheck amcheck postgresql-$v CONTRIB 1.3 ADMIN PostgreSQL 17,16,15,14,13,12 校验关系完整性
pg_surgery pg_surgery postgresql-$v CONTRIB 1.0 ADMIN PostgreSQL 17,16,15,14 对损坏的关系进行手术
pg_profile pg_profile postgresql-$v-pg-profile PIGSTY 4.7 STAT BSD 2 17,16,15,14,13,12 PostgreSQL 数据库负载记录与AWR报表工具
pg_show_plans pg_show_plans postgresql-$v-show-plans PGDG 2.1 STAT PostgreSQL 17,16,15,14,13,12 打印所有当前正在运行查询的执行计划
pg_stat_kcache pg_stat_kcache postgresql-$v-pg-stat-kcache PGDG 2.3.0 STAT BSD 3 17,16,15,14,13,12 内核统计信息收集
pg_stat_monitor pg_stat_monitor postgresql-$v-pg-stat-monitor PIGSTY 2.1 STAT BSD 3 17,16,15,14,13,12 提供查询聚合统计、客户端信息、执行计划详细信息和直方图
pg_qualstats pg_qualstats postgresql-$v-pg-qualstats PGDG 2.1.1 STAT BSD 3 17,16,15,14,13,12 收集有关 quals 的统计信息的扩展
pg_store_plans pg_store_plans postgresql-$v-pg-store-plan PIGSTY 1.8 STAT BSD 3 16,15,14,13,12 跟踪所有执行的 SQL 语句的计划统计信息
pg_track_settings pg_track_settings postgresql-$v-pg-track-settings PGDG 2.1.2 STAT PostgreSQL 17,16,15,14,13,12 跟踪设置更改
pg_wait_sampling pg_wait_sampling postgresql-$v-pg-wait-sampling PGDG 1.1 STAT PostgreSQL 17,16,15,14,13,12 基于采样的等待事件统计
system_stats system_stats postgresql-$v-system-stats PIGSTY 3.0 STAT PostgreSQL 17,16,15,14,13,12 PostgreSQL 的系统统计函数
meta pg_meta postgresql-$v-pg-meta PIGSTY 0.4.0 STAT BSD-2 17,16,15,14,13,12 标准化,更友好的PostgreSQL系统目录视图
pgnodemx pgnodemx postgresql-$v-pgnodemx PIGSTY 1.7 STAT Apache-2.0 17,16,15,14,13,12 使用SQL查询获取操作系统指标
pg_proctab pgnodemx postgresql-$v-pgnodemx PIGSTY 0.0.10-compat STAT BSD 3 17,16,15,14,13,12 通过SQL接口访问操作系统进程表
pg_sqlog pg_sqlog postgresql-$v-pg-sqlog PIGSTY 1.6 STAT BSD 3 17,16,15,14,13,12 提供访问PostgreSQL日志的SQL接口
bgw_replstatus bgw_replstatus postgresql-$v-bgw-replstatus PGDG 1.0.6 STAT PostgreSQL 17,16,15,14,13,12 用于汇报本机主从状态的后台工作进程
pgmeminfo pgmeminfo postgresql-$v-pgmeminfo PIGSTY 1.0 STAT MIT 17,16,15,14,13,12 显示内存使用情况
toastinfo toastinfo postgresql-$v-toastinfo PIGSTY 1 STAT PostgreSQL 17,16,15,14,13,12 显示TOAST字段的详细信息
explain_ui pg_explain_ui postgresql-$v-pg-explain-ui PIGSTY 0.0.1 STAT PostgreSQL 17,16,15,14,13,12 快速跳转至PEV查阅可视化执行计划
pg_relusage pg_relusage postgresql-$v-pg-relusage PIGSTY 0.0.1 STAT PostgreSQL 17,16,15,14,13,12 打印查询引用的表与列
pg_mon pg_mon postgresql-$v-pg-mon PIGSTY 1.0 STAT MIT 17,16,15,14,13,12 查看正在执行中的查询状态
pg_statviz pg_statviz postgresql-$v-statviz PGDG 0.6 STAT BSD 3 16,15,14,13,12 可视化统计指标并分析时间序列
pagevis pagevis postgresql-$v-pagevis PIGSTY 0.1 STAT MIT 17,16,15,14,13,12 使用ASCII字符可视化数据库物理页面布局
powa powa postgresql-$v-powa PGDG 4.2.2 STAT PostgreSQL 16,15,14,13,12 PostgreSQL 工作负载分析器-核心
pageinspect pageinspect postgresql-$v CONTRIB 1.12 STAT PostgreSQL 17,16,15,14,13,12 检查数据库页面二进制内容
pgrowlocks pgrowlocks postgresql-$v CONTRIB 1.2 STAT PostgreSQL 17,16,15,14,13,12 显示行级锁信息
sslinfo sslinfo postgresql-$v CONTRIB 1.2 STAT PostgreSQL 17,16,15,14,13,12 关于 SSL 证书的信息
pg_buffercache pg_buffercache postgresql-$v CONTRIB 1.4 STAT PostgreSQL 17,16,15,14,13,12 检查共享缓冲区缓存
pg_walinspect pg_walinspect postgresql-$v CONTRIB 1.1 STAT PostgreSQL 17,16,15 用于检查 PostgreSQL WAL 日志内容的函数
pg_freespacemap pg_freespacemap postgresql-$v CONTRIB 1.2 STAT PostgreSQL 17,16,15,14,13,12 检查自由空间映射的内容(FSM)
pg_visibility pg_visibility postgresql-$v CONTRIB 1.2 STAT PostgreSQL 17,16,15,14,13,12 检查可见性图(VM)和页面级可见性信息
pgstattuple pgstattuple postgresql-$v CONTRIB 1.5 STAT PostgreSQL 17,16,15,14,13,12 显示元组级统计信息
auto_explain auto_explain postgresql-$v CONTRIB 16.3 STAT PostgreSQL 17,16,15,14,13,12 提供一种自动记录执行计划的手段
pg_stat_statements pg_stat_statements postgresql-$v CONTRIB 1.10 STAT PostgreSQL 17,16,15,14,13,12 跟踪所有执行的 SQL 语句的计划和执行统计信息
passwordcheck_cracklib passwordcheck postgresql-$v-passwordcheck-cracklib PIGSTY 3.0.0 SEC LGPLv2 17,16,15,14,13,12 使用cracklib加固PG用户密码
supautils supautils postgresql-$v-supautils PIGSTY 2.5.0 SEC Apache-2.0 17,16,15,14,13 用于在云环境中确保数据库集群的安全
pgsodium pgsodium postgresql-$v-pgsodium PIGSTY 3.1.9 SEC BSD 3 17,16,15,14,13,12 表数据加密存储 TDE
supabase_vault pg_vault postgresql-$v-vault PIGSTY 0.2.8 SEC Apache-2.0 17,16,15,14,13,12 在 Vault 中存储加密凭证的扩展 (supabase)
anon anonymizer postgresql-$v-anonymizer PIGSTY 1.3.2 SEC PostgreSQL 17,16,15,14,13,12 数据匿名化处理工具
pg_tde pg_tde postgresql-$v-pg-tde PIGSTY 1.0 SEC MIT 16 试点性质的加密存储引擎
pgsmcrypto pgsmcrypto postgresql-$v-pgsmcrypto PIGSTY 0.1.0 SEC MIT 17,16,15,14,13,12 为PostgreSQL提供商密算法支持:SM2,SM3,SM4
pgaudit pgaudit postgresql-$v-pgaudit PGDG 16.0 SEC PostgreSQL 17,16,15,14,13,12 提供审计功能
pgauditlogtofile pgauditlogtofile postgresql-$v-pgauditlogtofile PGDG 1.6 SEC PostgreSQL 17,16,15,14,13,12 pgAudit 子扩展,将审计日志写入单独的文件中
pg_auth_mon pg_auth_mon postgresql-$v-pg-auth-mon PIGSTY 1.1 SEC MIT 17,16,15,14,13,12 监控每个用户的连接尝试
credcheck credcheck postgresql-$v-credcheck PGDG 2.7.0 SEC MIT 17,16,15,14,13,12 明文凭证检查器
pgcryptokey pgcryptokey postgresql-$v-pgcryptokey PIGSTY 1.0 SEC PostgreSQL 17,16,15,14,13,12 PG密钥管理
pg_jobmon pg_jobmon postgresql-$v-pg-jobmon PIGSTY 1.4.1 SEC PostgreSQL 17,16,15,14,13,12 记录和监控函数
logerrors logerrors postgresql-$v-logerrors PIGSTY 2.1 SEC BSD 3 17,16,15,14,13,12 用于收集日志文件中消息统计信息的函数
login_hook login_hook postgresql-$v-login-hook PIGSTY 1.6 SEC GPLv3 17,16,15,14,13,12 在用户登陆时执行login_hook.login()函数
set_user set_user postgresql-$v-set-user PGDG 4.1.0 SEC PostgreSQL 17,16,15,14,13,12 增加了日志记录的 SET ROLE
pg_snakeoil pg_snakeoil postgresql-$v-snakeoil PGDG 1 SEC PostgreSQL 17,16,15,14,13,12 PostgreSQL动态链接库反病毒功能
pgextwlist pgextwlist postgresql-$v-pgextwlist PIGSTY 1.17 SEC PostgreSQL 17,16,15,14,13,12 PostgreSQL扩展白名单功能
pg_auditor pg_auditor postgresql-$v-pg-auditor PIGSTY 0.2 SEC BSD-3 17,16,15,14,13,12 审计数据变更并提供闪回能力
sslutils sslutils postgresql-$v-sslutils PIGSTY 1.3 SEC PostgreSQL 17,16,15,14,13,12 使用SQL管理SSL证书
noset noset postgresql-$v-noset PIGSTY 0.3.0 SEC AGPLv3 17,16,15,14,13,12 阻止非超级用户使用SET/RESET设置变量
sepgsql sepgsql postgresql-$v CONTRIB 16.3 SEC PostgreSQL 17,16,15,14,13,12 基于SELinux标签的强制访问控制
auth_delay auth_delay postgresql-$v CONTRIB 16.3 SEC PostgreSQL 17,16,15,14,13,12 在返回认证失败前暂停一会,避免爆破
pgcrypto pgcrypto postgresql-$v CONTRIB 1.3 SEC PostgreSQL 17,16,15,14,13,12 实用加解密函数
passwordcheck passwordcheck postgresql-$v CONTRIB 16.3 SEC PostgreSQL 17,16,15,14,13,12 用于强制拒绝修改弱密码的扩展
wrappers wrappers postgresql-$v-wrappers PIGSTY 0.4.3 FDW Apache-2.0 17,16,15,14 Supabase提供的外部数据源包装器捆绑包
mysql_fdw mysql_fdw postgresql-$v-mysql-fdw PGDG 1.2 FDW BSD 3 17,16,15,14,13,12 MySQL外部数据包装器
oracle_fdw oracle_fdw postgresql-$v-oracle-fdw PGDG 1.2 FDW PostgreSQL 17,16,15,14,13,12 提供对Oracle的外部数据源包装器
tds_fdw tds_fdw postgresql-$v-tds-fdw PGDG 2.0.4 FDW PostgreSQL 16,15,14,13,12 TDS 数据库(Sybase/SQL Server)外部数据包装器
sqlite_fdw sqlite_fdw postgresql-$v-sqlite-fdw PGDG 1.1 FDW PostgreSQL 16,15,14,13,12 SQLite 外部数据包装器
redis_fdw redis_fdw postgresql-$v-redis-fdw PIGSTY 1.0 FDW PostgreSQL 17,16,15,14,13,12 查询外部Redis数据源
redis pg_redis_pubsub postgresql-$v-pg-redis-pubsub PIGSTY 0.0.1 FDW MIT 17,16,15,14,13,12 从PG向Redis发送Pub/Sub消息
kafka_fdw kafka_fdw postgresql-$v-kafka-fdw PIGSTY 0.0.3 FDW PostgreSQL 16,15,14,13,12 Kafka外部数据源包装器
aws_s3 aws_s3 postgresql-$v-aws-s3 PIGSTY 0.0.1 FDW Apache-2.0 17,16,15,14,13,12 从S3导入导出数据的外部数据源包装器
log_fdw log_fdw postgresql-$v-log-fdw PIGSTY 1.4 FDW Apache-2.0 17,16,15,14 访问PostgreSQL日志文件的FDW
dblink dblink postgresql-$v CONTRIB 1.2 FDW PostgreSQL 17,16,15,14,13,12 从数据库内连接到其他 PostgreSQL 数据库
file_fdw file_fdw postgresql-$v CONTRIB 1.0 FDW PostgreSQL 17,16,15,14,13,12 访问外部文件的外部数据包装器
postgres_fdw postgres_fdw postgresql-$v CONTRIB 1.1 FDW PostgreSQL 17,16,15,14,13,12 用于远程 PostgreSQL 服务器的外部数据包装器
orafce orafce postgresql-$v-orafce PGDG 4.13 SIM BSD 0 17,16,15,14,13,12 模拟 Oracle RDBMS 的一部分函数和包的函数和运算符
pgtt pgtt postgresql-$v-pgtt PGDG 4.0.0 SIM ISC 17,16,15,14,13,12 类似Oracle的全局临时表功能
session_variable session_variable postgresql-$v-session-variable PIGSTY 3.4 SIM GPLv3 17,16,15,14,13,12 Oracle兼容的会话变量/常量操作函数
pg_statement_rollback pg_statement_rollback postgresql-$v-pg-statement-rollback PIGSTY 1.4 SIM ISC 17,16,15,14,13,12 在服务端提供类似Oracle/DB2的语句级回滚能力
babelfishpg_common babelfishpg_common babelfishpg-common WILTON 3.3.3 SIM Apache-2.0 15 SQL Server 数据类型兼容扩展
babelfishpg_tsql babelfishpg_tsql babelfishpg-tsql WILTON 3.3.1 SIM Apache-2.0 15 SQL Server SQL语法兼容性扩展
babelfishpg_tds babelfishpg_tds babelfishpg-tds WILTON 1.0.0 SIM Apache-2.0 15 SQL Server TDS线缆协议兼容扩展
babelfishpg_money babelfishpg_money babelfishpg-money WILTON 1.1.0 SIM Apache-2.0 15 SQL Server 货币数据类型兼容扩展
pgmemcache pgmemcache postgresql-$v-pgmemcache PGDG 2.3.0 SIM MIT 17,16,15,14,13,12 为PG提供memcached兼容接口
pglogical pglogical postgresql-$v-pglogical* PGDG 2.4.4 ETL PostgreSQL 17,16,15,14,13,12 PostgreSQL逻辑复制:三方扩展实现
pglogical_origin pglogical postgresql-$v-pglogical* PGDG 1.0.0 ETL PostgreSQL 17,16,15,14,13,12 用于从 Postgres 9.4 升级时的兼容性虚拟扩展
pglogical_ticker pglogical postgresql-$v-pglogical* PGDG 1.4 ETL PostgreSQL 17,16,15,14,13,12 pglogical复制延迟的精确视图
pgl_ddl_deploy pgl_ddl_deploy postgresql-$v-pgl-ddl-deploy PGDG 2.2 ETL MIT 17,16,15,14,13,12 使用 pglogical 执行自动 DDL 部署
pg_failover_slots pg_failover_slots postgresql-$v-pg-failover-slots PIGSTY 1.0.1 ETL PostgreSQL 17,16,15,14,13,12 在Failover过程中保留复制槽
wal2json wal2json postgresql-$v-wal2json PGDG 2.5.3 ETL BSD 3 17,16,15,14,13,12 用逻辑解码捕获 JSON 格式的 CDC 变更
wal2mongo wal2mongo postgresql-$v-wal2mongo PIGSTY 1.0.7 ETL Apache-2.0 16,15,14,13 使用逻辑解码捕获MongoDB JSON格式的CDC变更
decoderbufs decoderbufs postgresql-$v-decoderbufs PGDG 0.1.0 ETL MIT 16,15,14,13,12 将WAL逻辑解码为ProtocolBuffer协议的消息
decoder_raw decoder_raw postgresql-$v-decoder-raw PIGSTY 1.0 ETL PostgreSQL 17,16,15,14,13,12 逻辑复制解码输出插件:RAW SQL格式
test_decoding test_decoding postgresql-$v CONTRIB 16.3 ETL PostgreSQL 17,16,15,14,13,12 基于SQL的WAL逻辑解码样例
mimeo mimeo postgresql-$v-mimeo PGDG 1.5.1 ETL PostgreSQL 17,16,15,14,13,12 在PostgreSQL实例间进行表级复制
repmgr repmgr postgresql-$v-repmgr PGDG 5.4 ETL GPLv3 16,15,14,13,12 PostgreSQL复制管理组件
pgcopydb pgcopydb pgcopydb PIGSTY 0.15 ETL PostgreSQL 17,16,15,14,13,12 将一个PostgreSQL数据库拷贝至目标服务器
pgloader pgloader pgloader PGDG 3.6.10 ETL PostgreSQL 17,16,15,14,13,12 从MySQL/SQLite/MSSQL一键迁移至PostgreSQL!
pg_fact_loader pg_fact_loader postgresql-$v-pg-fact-loader PGDG 2.0 ETL MIT 17,16,15,14,13,12 在 Postgres 中构建事实表
pg_bulkload pg_bulkload postgresql-$v-pg-bulkload PIGSTY 3.1.21 ETL BSD 3 16,15,14,13,12 向 PostgreSQL 中高速加载数据

2.4 - Contrib 扩展清单

PostgreSQL 自带的 Contrib 扩展插件列表

权威扩展列表现已搬迁至专门子站点:https://ext.pigsty.io

PostgreSQL 最新的 16/17 大版本自带了 70 个 Contrib 扩展,全部来自 Contrib 模块,使用 PostgreSQL 开源许可证。

扩展名(官网) 标准名(简介) 版本 类目 PG大版本支持 LOAD DDL DBSU RELOC 简介
earthdistance earthdistance 1.1 GIS 17,16,15,14,13,12 计算地球表面上的大圆距离
fuzzystrmatch fuzzystrmatch 1.2 FTS 17,16,15,14,13,12 确定字符串之间的相似性和距离
pg_trgm pg_trgm 1.6 FTS 17,16,15,14,13,12 文本相似度测量函数与模糊检索
tablefunc tablefunc 1.0 OLAP 17,16,15,14,13,12 交叉表函数
bloom bloom 1.0 FEAT 17,16,15,14,13,12 bloom 索引-基于指纹的索引
pltcl pltcl 1.0 LANG 17,16,15,14,13,12 PL/TCL 存储过程语言
pltclu pltcl 1.0 LANG 17,16,15,14,13,12 PL/TCL 存储过程语言(未受信/高权限)
plperl plperl 1.0 LANG 17,16,15,14,13,12 PL/Perl 存储过程语言
bool_plperl plperl 1.0 LANG 17,16,15,14,13,12 在 bool 和 plperl 之间转换
hstore_plperl plperl 1.0 LANG 17,16,15,14,13,12 在 hstore 和 plperl 之间转换适配类型
jsonb_plperl plperl 1.0 LANG 17,16,15,14,13,12 在 jsonb 和 plperl 之间转换
plperlu plperlu 1.0 LANG 17,16,15,14,13,12 PL/PerlU 存储过程语言(未受信/高权限)
bool_plperlu plperlu 1.0 LANG 17,16,15,14,13,12 在 bool 和 plperlu 之间转换
jsonb_plperlu plperlu 1.0 LANG 17,16,15,14,13,12 在 jsonb 和 plperlu 之间转换
hstore_plperlu plperlu 1.0 LANG 17,16,15,14,13,12 在 hstore 和 plperlu 之间转换适配类型
plpgsql plpgsql 1.0 LANG 17,16,15,14,13,12 PL/pgSQL 程序设计语言
plpython3u plpython3u 1.0 LANG 17,16,15,14,13,12 PL/Python3 存储过程语言(未受信/高权限)
jsonb_plpython3u plpython3u 1.0 LANG 17,16,15,14,13,12 在 jsonb 和 plpython3u 之间转换
ltree_plpython3u plpython3u 1.0 LANG 17,16,15,14,13,12 在 ltree 和 plpython3u 之间转换
hstore_plpython3u plpython3u 1.0 LANG 17,16,15,14,13,12 在 hstore 和 plpython3u 之间转换
isn isn 1.2 TYPE 17,16,15,14,13,12 用于国际产品编号标准的数据类型
seg seg 1.4 TYPE 17,16,15,14,13,12 表示线段或浮点间隔的数据类型
cube cube 1.5 TYPE 17,16,15,14,13,12 用于存储多维立方体的数据类型
ltree ltree 1.2 TYPE 17,16,15,14,13,12 用于表示分层树状结构的数据类型
hstore hstore 1.8 TYPE 17,16,15,14,13,12 用于存储(键,值)对集合的数据类型
citext citext 1.6 TYPE 17,16,15,14,13,12 提供大小写不敏感的字符串类型
xml2 xml2 1.1 TYPE 17,16,15,14,13,12 XPath 查询和 XSLT
refint refint 1.0 FUNC 17,16,15,14,13,12 实现引用完整性的函数
autoinc autoinc 1.0 FUNC 17,16,15,14,13,12 用于自动递增字段的函数
insert_username insert_username 1.0 FUNC 17,16,15,14,13,12 用于跟踪谁更改了表的函数
moddatetime moddatetime 1.0 FUNC 17,16,15,14,13,12 跟踪最后修改时间
tsm_system_time tsm_system_time 1.0 FUNC 17,16,15,14,13,12 接受毫秒数限制的 TABLESAMPLE 方法
dict_xsyn dict_xsyn 1.0 FUNC 17,16,15,14,13,12 用于扩展同义词处理的文本搜索字典模板
tsm_system_rows tsm_system_rows 1.0 FUNC 17,16,15,14,13,12 接受行数限制的 TABLESAMPLE 方法
tcn tcn 1.0 FUNC 17,16,15,14,13,12 用触发器通知变更
uuid-ossp uuid-ossp 1.1 FUNC 17,16,15,14,13,12 生成通用唯一标识符(UUIDs)
btree_gist btree_gist 1.7 FUNC 17,16,15,14,13,12 用GiST索引常见数据类型
btree_gin btree_gin 1.3 FUNC 17,16,15,14,13,12 用GIN索引常见数据类型
intarray intarray 1.5 FUNC 17,16,15,14,13,12 1维整数数组的额外函数、运算符和索引支持
intagg intagg 1.1 FUNC 17,16,15,14,13,12 整数聚合器和枚举器(过时)
dict_int dict_int 1.0 FUNC 17,16,15,14,13,12 用于整数的文本搜索字典模板
unaccent unaccent 1.1 FUNC 17,16,15,14,13,12 删除重音的文本搜索字典
vacuumlo vacuumlo 16.3 ADMIN 17,16,15,14,13,12 从PostgreSQL中移除孤儿数据库文件的实用命令行工具
pg_prewarm pg_prewarm 1.2 ADMIN 17,16,15,14,13,12 预热关系数据
oid2name oid2name 16.3 ADMIN 17,16,15,14,13,12 用于检查PG文件结构的实用命令行工具
lo lo 1.1 ADMIN 17,16,15,14,13,12 大对象维护
basic_archive basic_archive 16.3 ADMIN 17,16,15 归档模块样例
basebackup_to_shell basebackup_to_shell 16.3 ADMIN 17,16,15 添加一种备份到Shell终端到基础备份方式
old_snapshot old_snapshot 1.0 ADMIN 17,16,15,14 支持 old_snapshot_threshold 的实用程序
adminpack adminpack 2.1 ADMIN 17,16,15,14,13,12 PostgreSQL 管理函数集合
amcheck amcheck 1.3 ADMIN 17,16,15,14,13,12 校验关系完整性
pg_surgery pg_surgery 1.0 ADMIN 17,16,15,14 对损坏的关系进行手术
pageinspect pageinspect 1.12 STAT 17,16,15,14,13,12 检查数据库页面二进制内容
pgrowlocks pgrowlocks 1.2 STAT 17,16,15,14,13,12 显示行级锁信息
sslinfo sslinfo 1.2 STAT 17,16,15,14,13,12 关于 SSL 证书的信息
pg_buffercache pg_buffercache 1.4 STAT 17,16,15,14,13,12 检查共享缓冲区缓存
pg_walinspect pg_walinspect 1.1 STAT 17,16,15 用于检查 PostgreSQL WAL 日志内容的函数
pg_freespacemap pg_freespacemap 1.2 STAT 17,16,15,14,13,12 检查自由空间映射的内容(FSM)
pg_visibility pg_visibility 1.2 STAT 17,16,15,14,13,12 检查可见性图(VM)和页面级可见性信息
pgstattuple pgstattuple 1.5 STAT 17,16,15,14,13,12 显示元组级统计信息
auto_explain auto_explain 16.3 STAT 17,16,15,14,13,12 提供一种自动记录执行计划的手段
pg_stat_statements pg_stat_statements 1.10 STAT 17,16,15,14,13,12 跟踪所有执行的 SQL 语句的计划和执行统计信息
sepgsql sepgsql 16.3 SEC 17,16,15,14,13,12 基于SELinux标签的强制访问控制
auth_delay auth_delay 16.3 SEC 17,16,15,14,13,12 在返回认证失败前暂停一会,避免爆破
pgcrypto pgcrypto 1.3 SEC 17,16,15,14,13,12 实用加解密函数
passwordcheck passwordcheck 16.3 SEC 17,16,15,14,13,12 用于强制拒绝修改弱密码的扩展
dblink dblink 1.2 FDW 17,16,15,14,13,12 从数据库内连接到其他 PostgreSQL 数据库
file_fdw file_fdw 1.0 FDW 17,16,15,14,13,12 访问外部文件的外部数据包装器
postgres_fdw postgres_fdw 1.1 FDW 17,16,15,14,13,12 用于远程 PostgreSQL 服务器的外部数据包装器
test_decoding test_decoding 16.3 ETL 17,16,15,14,13,12 基于SQL的WAL逻辑解码样例

3 - 构建打包

如何准备构建 PostgreSQL rpm/deb 扩展包的环境,以及重要扩展的构建打包方式。

3.1 - 虚拟机构建环境

如何制备构建 Pigsty 扩展所需的虚拟机环境:EL 8/9,Debian12,Ubuntu22。

准备虚拟机

想要在 EL / Debian 环境下构建 PGML RPM 包,需要准备虚拟机环境,Pigsty 提供 ext.yml 模板,用于准备构建所需的虚拟机环境

cd pigsty
make build
./node.yml -i conf/build/ext.yml -t node_repo,node_pkg

在该配置下,Pigsty 默认提供 EL8,EL9,Debian12,Ubuntu22 四台虚拟机,并安装构建所需的依赖软件包。


代理服务器

如果您的网络条件不佳,最好配置一个 HTTP 代理,例如,假设你的本地环境中,有一台可用的代理服务器: http://192.168.0.106:8118(需要换成你自己的地址)。那么 EL 环境下的环境变量配置如下:

PROXY=http://192.168.0.107:8118
export HTTP_PROXY=${PROXY}
export HTTPS_PROXY=${PROXY}
export ALL_PROXY=${PROXY}
export NO_PROXY="localhost,127.0.0.1,10.0.0.0/8,192.168.0.0/16,*.pigsty,*.aliyun.com,mirrors.*,*.myqcloud.com,*.tsinghua.edu.cn"
alias build="HTTPS_PROXY=${PROXY} cargo pgrx package -v"

编辑 ~/.ssh/config 文件,添加代理配置,让 Github git 克隆走 HTTPS 代理(可选):

Host github.com
    Hostname ssh.github.com
    Port 443
    User git

如果以下命令可以成功执行,说明 github 代理配置成功:

ssh -T git@github.com

快捷别名

EL 环境下,可以使用以下 Alias 便捷地切换 PG 环境:

alias pg17="export PATH=/usr/pgsql-17/bin:~/.cargo/bin:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
alias pg16="export PATH=/usr/pgsql-16/bin:~/.cargo/bin:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
alias pg15="export PATH=/usr/pgsql-15/bin:~/.cargo/bin:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
alias pg14="export PATH=/usr/pgsql-14/bin:~/.cargo/bin:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
alias pg13="export PATH=/usr/pgsql-13/bin:~/.cargo/bin:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
alias pg12="export PATH=/usr/pgsql-12/bin:~/.cargo/bin:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"

而 Debian / Ubuntu 环境下则使用以下的 Alias:

alias pg17="export PATH=/usr/lib/postgresql/17/bin:~/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin;"
alias pg16="export PATH=/usr/lib/postgresql/16/bin:~/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin;"
alias pg15="export PATH=/usr/lib/postgresql/15/bin:~/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin;"
alias pg14="export PATH=/usr/lib/postgresql/14/bin:~/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin;"
alias pg13="export PATH=/usr/lib/postgresql/13/bin:~/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin;"
alias pg12="export PATH=/usr/lib/postgresql/12/bin:~/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin;"

安装构建工具链

在 EL 8 / EL 9 环境中,还需要额外安装 'Development Tools' 组件。其中,EL8 因为依赖错漏问题,需要添加 --nobest 选项才能完成安装。

sudo yum groupinstall --nobest -y 'Development Tools';
rpmdev-setuptree  # 在当前用户家目录下创建 rpmbuild 目录

3.2 - 准备 rust 与 pgrx

编译 Rust 扩展需要安装 Rust 与 pgrx ,这里是配置说明与扩展编译的清单与手册。

安装Rust

如果需要构建 Rust 扩展,需要安装 rustpgrx

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"

安装 pgrx,注意 版本

cargo install --locked cargo-pgrx@${PGRX_VER-'0.12.7'} # <--- 
cargo install --locked cargo-pgrx@${PGRX_VER-'0.11.3'}
cargo install --locked cargo-pgrx@${PGRX_VER-'0.10.2'}
cargo pgrx init
配置 Rust Cargo 使用中国镜像(可选)
mkdir -vp ${CARGO_HOME:-$HOME/.cargo};
cat > ${CARGO_HOME:-$HOME/.cargo}/config << EOF
[source.crates-io]
replace-with = 'mirror'

[source.mirror]
registry = "sparse+https://mirrors.tuna.tsinghua.edu.cn/crates.io-index/"
EOF
env RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup rustup install stable


Rust扩展清单

Vendor Name Version PGRX License PG Ver Deps
Supabase pg_graphql v1.5.9 v0.12.5 Apache-2.0 17,16,15
Supabase pg_jsonschema v0.3.2 v0.12.5 Apache-2.0 17,16,15,14,13,12
Supabase wrappers v0.4.3 v0.12.6 Apache-2.0 17,16,15,14
TimescaleDB vectorscale v0.3.0 v0.12.5 PostgreSQL 17,16,15,14,13,12
kelvich pg_tiktoken v0.0.1 v0.12.6 Apache-2.0 16,15,14,13,12
PostgresML pgml v2.9.3 v0.11.3 MIT 16,15,14
Tembo pg_vectorize v0.17.0 v0.11.3 PostgreSQL 16,15,14 pgmq, pg_cron
Tembo pg_later v0.1.1 v0.11.3 PostgreSQL 16,15,14,13 pgmq
kaspermarstal plprql v0.1.0 v0.11.3 Apache-2.0 16,15,14,13,12
VADOSWARE pg_idkit v0.2.3 v0.12.5 Apache-2.0 17,16,15,14,13,12
pgsmcrypto pgsmcrypto v0.1.0 v0.12.6 MIT 17,16,15,14,13,12
rustprooflabs pgdd v0.5.2 v0.10.2 MIT 16,15,14,13,12
CrunchyData pg_parquet v0.1.0 v0.12.6 PostgreSQL 17, 16

下载并构建Rust扩展

cd ~;
cd ~; git clone --recursive git@github.com:postgresml/postgresml.git  ; cd ~/postgresml     && git checkout v2.9.3
cd ~; git clone git@github.com:supabase/pg_graphql.git                ; cd ~/pg_graphql     #&& git checkout v1.5.8             
cd ~; git clone git@github.com:supabase/pg_jsonschema.git             ; cd ~/pg_jsonschema  #&& git checkout v0.3.2       
cd ~; git clone git@github.com:supabase/wrappers.git                  ; cd ~/wrappers       && git checkout v0.4.3               
cd ~; git clone git@github.com:Vonng/pgsmcrypto.git                   ; cd ~/pgsmcrypto
cd ~; git clone git@github.com:Vonng/pg_tiktoken.git                  ; cd ~/pg_tiktoken
cd ~; git clone git@github.com:VADOSWARE/pg_idkit.git                 ; cd ~/pg_idkit       && git checkout v0.2.4             
cd ~; git clone git@github.com:timescale/pgvectorscale.git            ; cd ~/pgvectorscale  && git checkout 0.4.0                    

cd ~; git clone git@github.com:tembo-io/pg_vectorize.git              ; cd ~/pg_vectorize   && git checkout v0.18.3 
cd ~; git clone git@github.com:tembo-io/pg_later.git                  ; cd ~/pg_later       && git checkout v0.1.3           
cd ~; git clone git@github.com:kaspermarstal/plprql.git               ; cd ~/plprql         && git checkout v1.0.0
cd ~; git clone git@github.com:rustprooflabs/pgdd.git                 ; cd ~/pgdd           && git checkout 0.5.2

cd ~; git@github.com:CrunchyData/pg_parquet.git                       ; cd ~/pg_parquet     && git checkout 0.1.0

#cd ~; git clone git@github.com:tembo-io/pgmq.git                      ; cd ~/pgmq           && git checkout v1.2.1 #v1.3.3
#cd ~; git clone --recursive https://github.com/paradedb/paradedb.git  ; cd ~/paradedb       && git checkout v0.8.6
#cd ~/paradedb;     cargo update

您可以使用扩展别名,批量构建 Rust 扩展:

# pgrx 0.12.6
cd ~/pg_graphql;                  pg17 build; pg16 build; pg15 build; pg14 build;  
cd ~/pg_jsonschema;               pg17 build; pg16 build; pg15 build; pg14 build; pg13 build; pg12 build; 
cd ~/wrappers/wrappers;           pg17 build; pg16 build; pg15 build; pg14 build;
cd ~/pgsmcrypto;                  pg17 build; pg16 build; pg15 build; pg14 build; pg13 build; pg12 build; 
cd ~/pg_tiktoken;                 pg17 build; pg16 build; pg15 build; pg14 build; pg13 build; pg12 build; 
cd ~/pg_idkit;                    pg17 build; pg16 build; pg15 build; pg14 build; pg13 build; pg12 build; 
export RUSTFLAGS="-C target-feature=+avx2,+fma"
cd ~/pgvectorscale/pgvectorscale; pg17 build; pg16 build; pg15 build; pg14 build; pg13 build; 

# pgrx 0.11.3
cd ~/plprql/plprql;               pg16 build; pg15 build; pg14 build; pg13 build; pg12 build;
cd ~/pg_later;                    pg16 build; pg15 build; pg14 build; pg13 build; 
cd ~/pg_vectorize/extension;      pg16 build; pg15 build; pg14 build;
 
# pgrx 0.10.2
cd ~/pgdd;                        pg17 build; pg16 build; pg15 build; pg14 build; pg13 build; pg12 build; 

cd ~/pg_parquet;                  pg17 build; pg16 build;
cd ~/pg_polyline;                 pg17 build; pg16 build; pg15 build; pg14 build; pg13 build; pg12 build; 
cd ~/pg_explain_ui;               pg17 build; pg16 build; pg15 build; pg14 build; pg13 build; pg12 build; 
cd ~/pg_cardano;                  pg17 build; pg16 build; pg15 build; pg14 build; pg13 build; pg12 build; 
cd ~/pg_base58;                   pg17 build; pg16 build; pg15 build; pg14 build; pg13 build; pg12 build; 
cd ~/pg_summarize;                pg17 build; pg16 build; pg15 build; pg14 build; pg13 build; pg12 build; 

3.3 - PGML 构建指南

构建库内机器学习扩展 PostgresML 需要一些额外的配置

构建 PGML

构建 PostgresML 是相当麻烦的工作,下面是在 EL8 与 EL9 上构建 PGML 的教程。

首先,根据 RPM 构建环境 的说明,配置好 环境与代理,安装 rustpgrx,特别注意 pgml 使用的 pgrx 版本号

准备Python3

安装 Python,并设置为默认版本:

sudo yum install python3.11 python3.11-devel python3-virtualenv openssl openssl-devel cmake pkg-config libomp libomp-devel openblas* llvm llvm-devel lld openblas*
sudo alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1
sudo alternatives --set python3 /usr/bin/python3.11
sudo alternatives --set python /usr/bin/python3.11

准备代码仓库

克隆 pgml,并 检出指定版本

cd ~; git clone --recursive git@github.com:postgresml/postgresml.git; 
cd ~/postgresml && git checkout v2.9.3
cd ~/postgresml/pgml-extension

EL8专用编译说明

本节修改在 EL8 上进行,EL9 无需执行此操作。

sudo dnf install gcc-toolset-13
source /opt/rh/gcc-toolset-13/enable
source /opt/rh/gcc-toolset-13/enable
export CC=/opt/rh/gcc-toolset-13/root/usr/bin/gcc
export CXX=/opt/rh/gcc-toolset-13/root/usr/bin/g++
export LD_LIBRARY_PATH=/opt/rh/gcc-toolset-13/root/usr/lib64:$LD_LIBRARY_PATH

在 EL8 上构建时,需要修改 build.rs 文件,在合适的位置添加两行编译选项:

println!("cargo:rustc-link-lib=static=stdc++fs");
println!("cargo:rustc-link-search=native=/opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13");

整个文件应该是这样的:

fn main() {
    #[cfg(target_os = "macos")]
    {
        println!("cargo:rustc-link-search=/opt/homebrew/opt/openblas/lib");
        println!("cargo:rustc-link-search=/opt/homebrew/opt/libomp/lib");
    }

    // PostgreSQL is using dlopen(RTLD_GLOBAL). this will parse some
    // of symbols into the previous opened .so file, but the others will use a
    // relative offset in pgml.so, and will cause a null-pointer crash.
    //
    // hide all symbol to avoid symbol conflicts.
    //
    // append mode (link-args) only works with clang ld (lld)
    println!(
        "cargo:link-args=-Wl,--version-script={}/ld.map",
        std::env::current_dir().unwrap().to_string_lossy(),
    );

    println!("cargo:rustc-link-lib=static=stdc++fs");
    println!("cargo:rustc-link-search=native=/opt/rh/gcc-toolset-13/root/usr/lib/gcc/x86_64-redhat-linux/13");

    vergen::EmitBuilder::builder().all_git().emit().unwrap();
}

接着修改 Cargo.toml

[build-dependencies] 一节中添加:cc = "1.0"

[build-dependencies]
+++ cc = "1.0"

开始构建

针对 PostgreSQL 16, 15, 14 构建 PGML:

cd ~/postgresml/pgml-extension; pg16 build; pg15 build; pg14 build;

将构建产物放置于 ~/rpmbuild/SOURCES 目录备用

rm -rf ~/rpmbuild/SOURCES/pgml_16; cp -r ~/postgresml/pgml-extension/target/release/pgml-pg16 ~/rpmbuild/SOURCES/pgml_16;
rm -rf ~/rpmbuild/SOURCES/pgml_15; cp -r ~/postgresml/pgml-extension/target/release/pgml-pg15 ~/rpmbuild/SOURCES/pgml_15;
rm -rf ~/rpmbuild/SOURCES/pgml_14; cp -r ~/postgresml/pgml-extension/target/release/pgml-pg14 ~/rpmbuild/SOURCES/pgml_14;

使用 pgml.spec 执行 RPM 打包:

cd ~/rpmbuild/SPECS && make pgml

# 或手工进行构建:
rm -rf ~/rpmbuild/RPMS/x86_64/pgml*.rpm;
rpmbuild --without debuginfo --define "pgmajorversion 16" -ba ~/rpmbuild/SPECS/pgml.spec
rpmbuild --without debuginfo --define "pgmajorversion 15" -ba ~/rpmbuild/SPECS/pgml.spec
rpmbuild --without debuginfo --define "pgmajorversion 14" -ba ~/rpmbuild/SPECS/pgml.spec

3.4 - PLv8 构建指南

构建 Javascript 存储过程与编程语言支持扩展 PLv8

构建plv8

安装依赖 (EL):

sudo yum groupinstall --nobest -y 'Development Tools'; 
sudo yum install git cmake

克隆代码:

rpmdev-setuptree
cd ~/rpmbuild/SOURCES/
git clone git@github.com:plv8/plv8.git

cd plv8; git checkout v3.2.2
make -j16

基于第一段编译产物,针对不同 PG 大版本制作 RPM 包:

rpmbuild --define "pgmajorversion 16"  -ba ~/rpmbuild/SPECS/plv8.spec
rpmbuild --define "pgmajorversion 15"  -ba ~/rpmbuild/SPECS/plv8.spec
rpmbuild --define "pgmajorversion 14"  -ba ~/rpmbuild/SPECS/plv8.spec
rpmbuild --define "pgmajorversion 13"  -ba ~/rpmbuild/SPECS/plv8.spec
rpmbuild --define "pgmajorversion 12"  -ba ~/rpmbuild/SPECS/plv8.spec

或者:

cd ~/rpmbuild/SPECS && make plv8

3.5 - ParadeDB 构建指南

构建 ParadeDB 扩展 需要一些额外的注意事项

下面是构建 ParadeDB 扩展插件的教程:

首先,根据 RPM 构建环境 的说明,配置好环境与代理,安装 rustpgrx

安装时特别需要注意 pg_searchpg_lakehouse 使用的 pgrx 版本号

克隆 ParadeDB,并 检出最新版本,完成编译。

cd ~; git clone --recursive git@github.com:paradedb/paradedb.git;
cd ~/paradedb; git checkout v0.8.6

cd ~/paradedb/pg_search/
cargo update

# build pg_search
pg16 build
pg15 build
pg14 build
pg13 build
pg12 build

# move to rpmbuild SOURCES dir
rm -rf ~/rpmbuild/SOURCES/pg_search_16; cp -r ~/paradedb/target/release/pg_search-pg16 ~/rpmbuild/SOURCES/pg_search_16;
rm -rf ~/rpmbuild/SOURCES/pg_search_15; cp -r ~/paradedb/target/release/pg_search-pg15 ~/rpmbuild/SOURCES/pg_search_15;
rm -rf ~/rpmbuild/SOURCES/pg_search_14; cp -r ~/paradedb/target/release/pg_search-pg14 ~/rpmbuild/SOURCES/pg_search_14;
rm -rf ~/rpmbuild/SOURCES/pg_search_13; cp -r ~/paradedb/target/release/pg_search-pg13 ~/rpmbuild/SOURCES/pg_search_13;
rm -rf ~/rpmbuild/SOURCES/pg_search_12; cp -r ~/paradedb/target/release/pg_search-pg12 ~/rpmbuild/SOURCES/pg_search_12;

# packaging with rpmbuild
cd ~/rpmbuild/SPECS && make pg_search
rpmbuild --without debuginfo --define "pgmajorversion 16" -ba ~/rpmbuild/SPECS/pg_search.spec
rpmbuild --without debuginfo --define "pgmajorversion 15" -ba ~/rpmbuild/SPECS/pg_search.spec
rpmbuild --without debuginfo --define "pgmajorversion 14" -ba ~/rpmbuild/SPECS/pg_search.spec
rpmbuild --without debuginfo --define "pgmajorversion 13" -ba ~/rpmbuild/SPECS/pg_search.spec
rpmbuild --without debuginfo --define "pgmajorversion 12" -ba ~/rpmbuild/SPECS/pg_search.spec

pg_lakehouse

cd ~/paradedb/pg_lakehouse/
cargo update

# build pg_lakehouse
pg16 build
pg15 build

# move to rpmbuild SOURCES dir
rm -rf ~/rpmbuild/SOURCES/pg_lakehouse_16;  cp -r ~/paradedb/target/release/pg_lakehouse-pg16   ~/rpmbuild/SOURCES/pg_lakehouse_16;
rm -rf ~/rpmbuild/SOURCES/pg_lakehouse_15;  cp -r ~/paradedb/target/release/pg_lakehouse-pg15   ~/rpmbuild/SOURCES/pg_lakehouse_15;

# packaging with rpmbuild
cd ~/rpmbuild/SPECS && make pg_lakehouse
rpmbuild --without debuginfo --define "pgmajorversion 16" -ba ~/rpmbuild/SPECS/pg_lakehouse.spec
rpmbuild --without debuginfo --define "pgmajorversion 15" -ba ~/rpmbuild/SPECS/pg_lakehouse.spec

3.6 - DuckDB FDW 构建指南

如何构建 DuckDB FDW 及其依赖的 libduckdb.so 动态链接库。

DuckDB FDW 依赖 libduckdb.so 动态链接库。在 Ubuntu 与 Debian 上,可以直接使用由 DuckDB 官方提供的预编译二进制。

在 EL 系操作系统上,需要从头编译 libduckdb 并使用此版本编译 duckdb_fdw

Pigsty 的 github.com/pgsty/pgsql-rpm 仓库提供了预置的构建模板:

DuckDB 官方已经提供了 libduckdb-src.zip 源码,可以方便地进行构建。


构建注意事项

在 Ubuntu / Debian 上,可以直接使用 DuckDB 官方提供的预编译二进制 libduckdb.so

在 EL8 和 EL9 上需要从源码编译构建 libduckdb

要构建 libduckdb-src,你需要使用与构建 duckdb_fdw 一致的编译环境与参数:

clang++ -c -fPIC -std=c++11 -D_GLIBCXX_USE_CXX11_ABI=0 duckdb.cpp -o duckdb.o
clang++ -shared -o libduckdb.so *.o

构建 libduckdb RPM 包,可以使用以下命令:

cd ~/rpmbuild/SPECS && make libduckdb

要构建 duckdb_fdw RPM 包,可以使用以下命令:

cd ~/rpmbuild/SPECS && make duckdb_fdw

3.7 - Parquet S3 FDW 构建指南

构建 Parquet S3 FDW 扩展,及其依赖 libarrow, libparquet, 以及 libaws-cpp 的过程

构建parquet_s3_fdw

扩展 parquet_s3_fdw 有两个主要依赖:arrowawssdk


构建arrow

克隆 arrow 仓库并使用 cmake 构建:

cd ~ ; git clone git@github.com:apache/arrow.git;
mkdir -p ~/arrow/cpp/release; cd ~/arrow/cpp/release;
cmake .. -DARROW_PARQUET=ON -DARROW_S3=ON; make -j8
sudo make install

构建libaws

libaws-cpp 里有许多服务的驱动,但我们只需要两个:cores3

# 安装依赖
sudo yum install libcurl-devel openssl-devel libuuid-devel pulseaudio-libs-devel
# sudo apt-get install libcurl4-openssl-dev libssl-dev uuid-dev libpulse-dev # debian/ubuntu

# 克隆 libaws 仓库 (很大!)
cd ~; git clone --recurse-submodules git@github.com:aws/aws-sdk-cpp.git

mkdir -p ~/aws-sdk-cpp/release; cd ~/aws-sdk-cpp/release;
cmake .. -DBUILD_ONLY="s3"; make -j20
sudo make install

构建libarrow-s3

收集生成的 .so 文件,然后将其打包为一个 RPM / DEB 包:

mkdir -p ~/libarrow-s3
cp -d ~/arrow/cpp/release/release/libarrow.so*                                     ~/libarrow-s3/
cp -d ~/arrow/cpp/release/release/libparquet.so*                                   ~/libarrow-s3/
cp -f ~/aws-sdk-cpp/release/generated/src/aws-cpp-sdk-s3/libaws-cpp-sdk-s3.so      ~/libarrow-s3/
cp -f ~/aws-sdk-cpp/release/src/aws-cpp-sdk-core/libaws-cpp-sdk-core.so            ~/libarrow-s3/
cp -d ~/aws-sdk-cpp/release/lib/libaws-c-event-stream.so*                          ~/libarrow-s3/
cp -d ~/aws-sdk-cpp/release/lib/libs2n.so*                                         ~/libarrow-s3/
cp -d ~/aws-sdk-cpp/release/crt/aws-crt-cpp/libaws-crt-cpp.so                        ~/libarrow-s3/
cp -d ~/aws-sdk-cpp/release/crt/aws-crt-cpp/crt/aws-c-common/libaws-c-common.so*     ~/libarrow-s3/
cp -d ~/aws-sdk-cpp/release/crt/aws-crt-cpp/crt/aws-checksums/libaws-checksums.so*   ~/libarrow-s3/
cp -d ~/aws-sdk-cpp/release/crt/aws-crt-cpp/crt/aws-c-io/libaws-c-io.so*             ~/libarrow-s3/
cp -d ~/aws-sdk-cpp/release/crt/aws-crt-cpp/crt/aws-c-mqtt/libaws-c-mqtt.so*         ~/libarrow-s3/
cp -d ~/aws-sdk-cpp/release/crt/aws-crt-cpp/crt/aws-c-cal/libaws-c-cal.so*           ~/libarrow-s3/
cp -d ~/aws-sdk-cpp/release/crt/aws-crt-cpp/crt/aws-checksums/libaws-checksums.so*   ~/libarrow-s3/
cp -d ~/aws-sdk-cpp/release/crt/aws-crt-cpp/crt/aws-c-s3/libaws-c-s3.so*             ~/libarrow-s3/
cp -d ~/aws-sdk-cpp/release/crt/aws-crt-cpp/crt/aws-c-common/libaws-c-common.so*     ~/libarrow-s3/
cp -d ~/aws-sdk-cpp/release/crt/aws-crt-cpp/crt/aws-c-http/libaws-c-http.so*         ~/libarrow-s3/
cp -d ~/aws-sdk-cpp/release/crt/aws-crt-cpp/crt/aws-c-sdkutils/libaws-c-sdkutils.so* ~/libarrow-s3/
cp -d ~/aws-sdk-cpp/release/crt/aws-crt-cpp/crt/aws-c-auth/libaws-c-auth.so*         ~/libarrow-s3/
cp -d ~/aws-sdk-cpp/release/crt/aws-crt-cpp/crt/aws-c-compression/libaws-c-compression.so* ~/libarrow-s3/

构建生成的 so 文件包含空 RPATH,使用 patchelf 去除 (EL系统):

cd ~/libarrow-s3/
patchelf --remove-rpath libarrow.so.1800.0.0
patchelf --remove-rpath libparquet.so.1800.0.0
patchelf --remove-rpath libaws-cpp-sdk-core.so
patchelf --remove-rpath libaws-cpp-sdk-s3.so

将这些 so 文件整体打包为一个 libarrow-s3 软件包:

cd ~/rpmbuild/SPECS
rpmbuild -ba ~/rpmbuild/SPECS/libarrow-s3.spec
sudo rpm -ivh ~/rpmbuild/RPMS/x86_64/libarrow-s3-17.0.0-1PIGSTY.*