跳转到主要内容

pg_extension_updater

Automatic extension updater

pg_lake : Automatic extension updater

Overview

ID Extension Package Version Category License Language
2562 pg_extension_updater pg_lake 3.4 OLAP Apache-2.0 C
Attribute Has Binary Has Library Need Load Has DDL Relocatable Trusted
--sLd-- No Yes Yes Yes no no
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.

Packages

Type Repo Version PG Major Compatibility Package Pattern Dependencies
EXT PIGSTY 3.4 18 17 16 15 14 pg_lake pg_extension_base
RPM PIGSTY 3.4.0 18 17 16 15 14 pg_lake_$v -
DEB PIGSTY 3.4.0 18 17 16 15 14 postgresql-$v-pg-lake -
Linux / 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

Source

github.com/Snowflake-Labs/pg_lake/tree/main/pg_extension_updater

pig build pkg pg_lake;		# build rpm/deb

Install

Make sure PGDG and PIGSTY repo available:

pig repo add pgsql -u   # add both repo and update cache

Install this extension with pig:

pig install pg_lake;		# install via package name, for the active PG version
pig install pg_extension_updater;		# install by extension name, for the current active PG version

pig install pg_extension_updater -v 18;   # install for PG 18
pig install pg_extension_updater -v 17;   # install for PG 17
pig install pg_extension_updater -v 16;   # install for PG 16

Config this extension to shared_preload_libraries:

shared_preload_libraries = 'pg_extension_base';

Create this extension with:

CREATE EXTENSION pg_extension_updater CASCADE; -- requires pg_extension_base

Usage

Sources:

pg_extension_updater runs ALTER EXTENSION ... UPDATE for each extension whose installed version differs from its available default version when the database lifecycle worker starts. It is intended to reduce SQL/binary version mismatches after new extension files are deployed; it does not install missing extensions or replace release testing.

Enable Automatic Updates

The updater depends on pg_extension_base, which must be preloaded cluster-wide:

shared_preload_libraries = 'pg_extension_base'

After restarting PostgreSQL, create the updater in every database where automatic updates are desired:

CREATE EXTENSION pg_extension_updater CASCADE;

Creating it in template1 causes new databases cloned from that template to contain the updater. The worker does not update extensions inside the template database itself, but starts in a newly cloned database.

Runtime Behavior

  • The #!shared_preload_libraries directive in the updater’s control file lets pg_extension_base load its library.
  • Installation registers the internal extension_updater.main(internal) lifecycle worker.
  • At worker startup, it reads pg_available_extensions and updates entries whose installed_version differs from default_version.
  • A failed ALTER EXTENSION is logged as a warning and is attempted only once during that worker run.
  • pg_extension_updater.enable is a postmaster setting, defaults to on, and disables the worker’s updates when set to off; changing it requires a restart.

Caveats

  • Automatic migration can execute arbitrary upgrade SQL supplied by every installed extension. Validate packages and upgrade paths before enabling it on production databases.
  • Review extension dependency changes and take application-specific backups independently; a warning does not roll back unrelated successful extension updates.
  • There is no user-facing force-update function or per-extension allowlist in version 3.4.
  • Version 3.4 changes no updater SQL API relative to 3.3.