pg_extension_updater
在数据库启动时自动执行 ALTER EXTENSION UPDATE 的扩展更新器
仓库
main/pg_extension_updater
https://github.com/Snowflake-Labs/pg_lake/tree/main/pg_extension_updater
源码
pg_lake-3.4.0.tar.gz
pg_lake-3.4.0.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_lake | 3.4 | OLAP | Apache-2.0 | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 2560 | pg_lake | 是 | 是 | 是 | 是 | 否 | 否 | lake |
| 2561 | pg_extension_base | 否 | 是 | 是 | 是 | 否 | 否 | extension_base |
| 2562 | pg_extension_updater | 否 | 是 | 是 | 是 | 否 | 否 | extension_updater |
| 2563 | pg_map | 否 | 是 | 否 | 是 | 否 | 否 | map_type |
| 2564 | pg_lake_engine | 否 | 是 | 是 | 是 | 否 | 否 | __lake__internal__nsp__ |
| 2565 | pg_lake_iceberg | 否 | 是 | 否 | 是 | 否 | 否 | lake_iceberg |
| 2566 | pg_lake_table | 否 | 是 | 是 | 是 | 否 | 否 | __pg_lake_table_writes |
| 2567 | pg_lake_copy | 否 | 是 | 是 | 是 | 否 | 否 | pg_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 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 3.4 | 1817161514 | pg_lake | pg_extension_base |
| RPM | PIGSTY | 3.4.0 | 1817161514 | pg_lake_$v | - |
| DEB | PIGSTY | 3.4.0 | 1817161514 | postgresql-$v-pg-lake | - |
| OS / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | N/A | N/A | N/A | N/A | N/A |
| el8.aarch64 | N/A | N/A | N/A | N/A | N/A |
| el9.x86_64 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | N/A | N/A |
| el9.aarch64 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | N/A | N/A |
| el10.x86_64 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | N/A | N/A |
| el10.aarch64 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | N/A | N/A |
| d12.x86_64 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | N/A | N/A |
| d12.aarch64 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | N/A | N/A |
| d13.x86_64 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | N/A | N/A |
| d13.aarch64 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | N/A | N/A |
| u22.x86_64 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | N/A | N/A |
| u22.aarch64 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | N/A | N/A |
| u24.x86_64 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | N/A | N/A |
| u24.aarch64 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | N/A | N/A |
| u26.x86_64 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | N/A | N/A |
| u26.aarch64 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | PIGSTY 3.4.0 | N/A | N/A |
构建
您可以使用 pig build 命令构建 pg_lake 扩展的 RPM / DEB 包:
pig build pkg pg_lake # 构建 RPM / DEB 包
安装
您可以直接安装 pg_lake 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
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_version与default_version不同的条目。 ALTER EXTENSION失败会记为警告,并且在该工作进程的本轮运行中只尝试一次。pg_extension_updater.enable是 postmaster 参数,默认为on;设为off会禁用工作进程更新。修改后必须重启。
注意事项
- 自动迁移可能执行任何已安装扩展提供的升级 SQL。在生产数据库启用前,应验证软件包及升级路径。
- 应独立审查扩展依赖变化,并按应用需求制作备份;某项警告不会回滚其他已经成功的扩展更新。
3.4版没有面向用户的强制更新函数,也没有逐扩展允许列表。- 与
3.3相比,3.4没有改变更新器的 SQL API。