pg_regresql
用 pg_class 统计信息替代物理文件大小参与查询规划
仓库
boringsql/regresql
https://github.com/boringsql/regresql
源码
pg_regresql-2.0.0.zip
pg_regresql-2.0.0.zip
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_regresql | 2.0.0 | LANG | BSD-2-Clause | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 3230 | pg_regresql | 否 | 是 | 是 | 是 | 否 | 是 | - |
| 相关扩展 | pg_hint_plan hypopg plan_filter auto_explain |
|---|
Activate it with LOAD pg_regresql or session_preload_libraries.
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 2.0.0 | 1817161514 | pg_regresql | - |
| RPM | PIGSTY | 2.0.0 | 1817161514 | pg_regresql_$v | - |
| DEB | PIGSTY | 2.0.0 | 1817161514 | postgresql-$v-pg-regresql | - |
构建
您可以使用 pig build 命令构建 pg_regresql 扩展的 RPM / DEB 包:
pig build pkg pg_regresql # 构建 RPM / DEB 包
安装
您可以直接安装 pg_regresql 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install pg_regresql; # 当前活跃 PG 版本安装
pig ext install -y pg_regresql -v 18 # PG 18
pig ext install -y pg_regresql -v 17 # PG 17
pig ext install -y pg_regresql -v 16 # PG 16
pig ext install -y pg_regresql -v 15 # PG 15
pig ext install -y pg_regresql -v 14 # PG 14
dnf install -y pg_regresql_18 # PG 18
dnf install -y pg_regresql_17 # PG 17
dnf install -y pg_regresql_16 # PG 16
dnf install -y pg_regresql_15 # PG 15
dnf install -y pg_regresql_14 # PG 14
apt install -y postgresql-18-pg-regresql # PG 18
apt install -y postgresql-17-pg-regresql # PG 17
apt install -y postgresql-16-pg-regresql # PG 16
apt install -y postgresql-15-pg-regresql # PG 15
apt install -y postgresql-14-pg-regresql # PG 14
预加载配置:
shared_preload_libraries = 'pg_regresql';
创建扩展:
CREATE EXTENSION pg_regresql;
用法
语法:
regresql init postgres://localhost/mydb regresql add src/sql/ regresql update regresql test
RegreSQL 在上游被定位为一个与语言无关的 PostgreSQL SQL 回归测试工具,而不是数据库内的 CREATE EXTENSION 式模块。它会发现 .sql 文件、在 PostgreSQL 上执行这些文件、保存期望输出,并跟踪查询计划变化。
快速上手
README 给出的基本流程是:
regresql init postgres://localhost/mydb
regresql discover
regresql add src/sql/
regresql update
regresql test
这会初始化测试套件、发现查询文件、生成计划定义、捕获期望输出,并执行回归检查。
跟踪内容
上游文档重点关注:
- 期望的查询输出快照
EXPLAIN计划基线- 顺序扫描告警
- 与迁移相关的查询回归
- 面向 CI 的输出格式,例如
junit、json、pgtap和github-actions
查询文件与计划
RegreSQL 使用普通 SQL 文件,并支持通过 -- name: 注释在单个文件中编排多个查询:
-- name: get-user-by-id
SELECT * FROM users WHERE id = :id;
计划文件用于提供测试参数:
"1":
id: 42
"2":
id: 100
快照与迁移
该工具可以构建和恢复数据库快照,并比较迁移前后的查询行为:
regresql snapshot build
regresql snapshot restore
regresql migrate --script db/migrations/001_add_column.sql
安装
README 说明可通过 Homebrew 或 Go 安装:
brew tap boringsql/boringsql
brew install regresql
或:
go install github.com/boringsql/regresql@latest
快照相关命令需要 pg_dump、pg_restore 和 psql 等 PostgreSQL 客户端工具。