跳转到主要内容

pg_incremental

增量处理流式事件

概览

扩展包名版本分类许可证语言
pg_incremental1.6FEATPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
2850pg_incremental否是否是否否pg_catalog

Package 1.6.1; SQL/control 1.6. Fixes _drop_trigger search_path injection. Sequence pipelines require SELECT or USAGE at creation and execution; file-list functions run as the pipeline executor. pg_cron is optional except for scheduled pipelines.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY1.61817161514pg_incremental-
RPMPIGSTY1.6.11817161514pg_incremental_$v-
DEBPIGSTY1.6.11817161514postgresql-$v-pg-incremental-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64N/AN/A
el8.aarch64N/AN/A
el9.x86_64N/AN/A
el9.aarch64N/AN/A
el10.x86_64N/AN/A
el10.aarch64N/AN/A
d12.x86_64
PIGSTY 1.6.1
PIGSTY 1.6.1
PIGSTY 1.6.1
N/AN/A
d12.aarch64
PIGSTY 1.6.1
PIGSTY 1.6.1
PIGSTY 1.6.1
N/AN/A
d13.x86_64
PIGSTY 1.6.1
PIGSTY 1.6.1
PIGSTY 1.6.1
N/AN/A
d13.aarch64
PIGSTY 1.6.1
PIGSTY 1.6.1
PIGSTY 1.6.1
N/AN/A
u22.x86_64
PIGSTY 1.6.1
PIGSTY 1.6.1
PIGSTY 1.6.1
N/AN/A
u22.aarch64
PIGSTY 1.6.1
PIGSTY 1.6.1
PIGSTY 1.6.1
N/AN/A
u24.x86_64
PIGSTY 1.6.1
PIGSTY 1.6.1
PIGSTY 1.6.1
N/AN/A
u24.aarch64
PIGSTY 1.6.1
PIGSTY 1.6.1
PIGSTY 1.6.1
N/AN/A
u26.x86_64
PIGSTY 1.6.1
PIGSTY 1.6.1
PIGSTY 1.6.1
N/AN/A
u26.aarch64
PIGSTY 1.6.1
PIGSTY 1.6.1
PIGSTY 1.6.1
N/AN/A

构建

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

pig build pkg pg_incremental         # 构建 RPM / DEB 包

安装

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

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

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

安装
pig install pg_incremental;          # 当前活跃 PG 版本安装
pig
pig ext install -y pg_incremental -v 18  # PG 18
pig ext install -y pg_incremental -v 17  # PG 17
pig ext install -y pg_incremental -v 16  # PG 16
dnf
dnf install -y pg_incremental_18       # PG 18
dnf install -y pg_incremental_17       # PG 17
dnf install -y pg_incremental_16       # PG 16
apt
apt install -y postgresql-18-pg-incremental   # PG 18
apt install -y postgresql-17-pg-incremental   # PG 17
apt install -y postgresql-16-pg-incremental   # PG 16

创建扩展:

CREATE EXTENSION pg_incremental;

用法

来源:

pg_incremental 为只追加表和文件数据源定义恰好一次语义的增量流水线。它依赖 pg_cron,上游核验矩阵覆盖 PostgreSQL 17–18,支持序列、时间区间和文件列表三类流水线。

安装与调度

CREATE EXTENSION pg_incremental CASCADE;
GRANT USAGE ON SCHEMA cron TO app_user;

流水线默认创建时立即执行,随后由 pg_cron 调度;需要推迟首次运行时设置 execute_immediately := false。进度更新与流水线命令在同一事务中提交,命令失败不会推进已处理范围。

流水线类型

SELECT incremental.create_sequence_pipeline('event-aggregation', 'events', $$
  INSERT INTO events_agg
  SELECT date_trunc('day', event_time), count(*)
  FROM events
  WHERE event_id BETWEEN $1 AND $2
  GROUP BY 1
  ON CONFLICT (day) DO UPDATE
  SET event_count = events_agg.event_count + excluded.event_count
$$);

SELECT incremental.create_time_interval_pipeline('hourly-export', '1 hour', $$
  SELECT export_events($1, $2)
$$);

SELECT incremental.create_file_list_pipeline('event-import', 's3://bucket/events/*.csv', $$
  SELECT import_events($1)
$$);

序列流水线传入安全的 $1/$2 范围,时间流水线传入区间边界,文件列表流水线传入新发现的文件。max_batch_size、max_batches_per_run 和 batched := false 可调整批次行为。incremental.execute_pipeline、reset_pipeline、drop_pipeline 以及状态视图用于运维控制。

1.6.1 安全修复

1.6.1 修复 _drop_trigger 的 search_path 注入问题,要求创建和执行序列流水线的角色拥有序列 SELECT 或 USAGE 权限,并让文件列表函数以调用者身份执行。升级前应复核对象所有权和授权;本地包事实与该上游发行版分开维护。

这个页面对您有帮助吗?