pg_extension_updater

在数据库启动时自动执行 ALTER EXTENSION UPDATE 的扩展更新器

概览

扩展包名版本分类许可证语言
pg_lake3.4OLAPApache-2.0C
ID扩展名BinLibLoadCreateTrustReloc模式
2560pg_lakelake
2561pg_extension_baseextension_base
2562pg_extension_updaterextension_updater
2563pg_mapmap_type
2564pg_lake_engine__lake__internal__nsp__
2565pg_lake_iceberglake_iceberg
2566pg_lake_table__pg_lake_table_writes
2567pg_lake_copypg_catalog
相关扩展pg_extension_base

Optional packaged component. It runs installed extension updates at database start through pg_extension_base; it is not part of CREATE EXTENSION pg_lake CASCADE dependency closure. Extension SQL/control version is 3.4; source and DEB/RPM package version is 3.4.0.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY3.41817161514pg_lakepg_extension_base
RPMPIGSTY3.4.01817161514pg_lake_$v-
DEBPIGSTY3.4.01817161514postgresql-$v-pg-lake-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64N/AN/AN/AN/AN/A
el8.aarch64N/AN/AN/AN/AN/A
el9.x86_64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
el9.aarch64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
el10.x86_64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
el10.aarch64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
d12.x86_64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
d12.aarch64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
d13.x86_64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
d13.aarch64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
u22.x86_64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
u22.aarch64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
u24.x86_64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
u24.aarch64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
u26.x86_64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A
u26.aarch64PIGSTY 3.4.0PIGSTY 3.4.0PIGSTY 3.4.0N/AN/A

构建

您可以使用 pig build 命令构建 pg_lake 扩展的 RPM / DEB 包:

pig build pkg pg_lake         # 构建 RPM / DEB 包

安装

您可以直接安装 pg_lake 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install pg_lake;          # 当前活跃 PG 版本安装
pig ext install -y pg_lake -v 18  # PG 18
pig ext install -y pg_lake -v 17  # PG 17
pig ext install -y pg_lake -v 16  # PG 16
dnf install -y pg_lake_18       # PG 18
dnf install -y pg_lake_17       # PG 17
dnf install -y pg_lake_16       # PG 16
apt install -y postgresql-18-pg-lake   # PG 18
apt install -y postgresql-17-pg-lake   # PG 17
apt install -y postgresql-16-pg-lake   # PG 16

预加载配置

shared_preload_libraries = 'pg_extension_base';

创建扩展

CREATE EXTENSION pg_extension_updater CASCADE;  -- 依赖: pg_extension_base

用法

来源:

pg_extension_updater 会在数据库生命周期工作进程启动时,对已安装版本与可用默认版本不同的每个扩展执行 ALTER EXTENSION ... UPDATE。它用于减少部署新扩展文件后 SQL 与二进制版本不一致的问题;它不会安装缺失的扩展,也不能替代发布测试。

启用自动更新

更新器依赖 pg_extension_base,后者必须在整个集群中预加载:

shared_preload_libraries = 'pg_extension_base'

重启 PostgreSQL 后,在每个需要自动更新的数据库中创建更新器:

CREATE EXTENSION pg_extension_updater CASCADE;

template1 中创建它,会让从该模板克隆的新数据库包含更新器。工作进程不会更新模板数据库自身的扩展,但会在新克隆的数据库中启动。

运行时行为

  • 更新器控制文件中的 #!shared_preload_libraries 指令允许 pg_extension_base 加载其库。
  • 安装过程会注册内部生命周期工作进程 extension_updater.main(internal)
  • 工作进程启动时读取 pg_available_extensions,并更新其中 installed_versiondefault_version 不同的条目。
  • ALTER EXTENSION 失败会记为警告,并且在该工作进程的本轮运行中只尝试一次。
  • pg_extension_updater.enable 是 postmaster 参数,默认为 on;设为 off 会禁用工作进程更新。修改后必须重启。

注意事项

  • 自动迁移可能执行任何已安装扩展提供的升级 SQL。在生产数据库启用前,应验证软件包及升级路径。
  • 应独立审查扩展依赖变化,并按应用需求制作备份;某项警告不会回滚其他已经成功的扩展更新。
  • 3.4 版没有面向用户的强制更新函数,也没有逐扩展允许列表。
  • 3.3 相比,3.4 没有改变更新器的 SQL API。