pglinter
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pglinter | 1.1.2 | ADMIN | PostgreSQL | Rust |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 5090 | pglinter | 否 | 是 | 否 | 是 | 是 | 否 | - |
| 相关扩展 | amcheck supautils |
|---|
manually upgraded PGRX from 0.16.1 to 0.17.0 by Vonng
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.1.2 | 1817161514 | pglinter | - |
| RPM | PIGSTY | 1.1.2 | 1817161514 | pglinter_$v | - |
| DEB | PIGSTY | 1.1.2 | 1817161514 | postgresql-$v-pglinter | - |
构建
您可以使用 pig build 命令构建 pglinter 扩展的 RPM / DEB 包:
pig build pkg pglinter # 构建 RPM / DEB 包
安装
您可以直接安装 pglinter 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install pglinter; # 当前活跃 PG 版本安装
pig ext install -y pglinter -v 18 # PG 18
pig ext install -y pglinter -v 17 # PG 17
pig ext install -y pglinter -v 16 # PG 16
pig ext install -y pglinter -v 15 # PG 15
pig ext install -y pglinter -v 14 # PG 14
dnf install -y pglinter_18 # PG 18
dnf install -y pglinter_17 # PG 17
dnf install -y pglinter_16 # PG 16
dnf install -y pglinter_15 # PG 15
dnf install -y pglinter_14 # PG 14
apt install -y postgresql-18-pglinter # PG 18
apt install -y postgresql-17-pglinter # PG 17
apt install -y postgresql-16-pglinter # PG 16
apt install -y postgresql-15-pglinter # PG 15
apt install -y postgresql-14-pglinter # PG 14
创建扩展:
CREATE EXTENSION pglinter;
用法
- 来源:README, how-to, examples, rules, 1.1.2 release
pglinter 会分析 PostgreSQL 数据库中的潜在问题、性能问题和最佳实践违规。当前用户文档通过 pglinter.get_violations() 暴露检查结果,该函数返回已启用规则的违规行,可过滤,也可连接到 pg_identify_object()。
运行检查
SELECT * FROM pglinter.get_violations();
SELECT * FROM pglinter.get_violations() WHERE rule_code = 'B001';
SELECT
rule_code,
(pg_identify_object(classid, objid, objsubid)).type AS object_type,
(pg_identify_object(classid, objid, objsubid)).schema AS object_schema,
(pg_identify_object(classid, objid, objsubid)).name AS object_name,
(pg_identify_object(classid, objid, objsubid)).identity AS object_identity
FROM pglinter.get_violations();
规则管理
SELECT pglinter.show_rules(); -- Show all rules and their status
SELECT pglinter.explain_rule('B001'); -- Get rule details and suggested fixes
SELECT pglinter.enable_rule('B001'); -- Enable a specific rule
SELECT pglinter.disable_rule('B001'); -- Disable a specific rule
SELECT pglinter.is_rule_enabled('B001'); -- Check if a rule is enabled
SELECT pglinter.enable_all_rules();
SELECT pglinter.disable_all_rules();
SELECT pglinter.show_rule_queries('B001'); -- Inspect the rule query
SELECT pglinter.list_rules(); -- Return a formatted rule list
规则导入与导出
SELECT pglinter.export_rules_to_yaml(); -- Export rules to YAML
SELECT pglinter.import_rules_from_yaml('yaml...'); -- Import rules from YAML
SELECT pglinter.export_rules_to_file('/path/to/rules.yaml');
SELECT pglinter.import_rules_from_file('/path/to/rules.yaml');
SELECT pglinter.export_rulemessages_to_yaml();
SELECT pglinter.import_rule_messages_from_yaml('yaml...');
规则家族
Base (B-series): B001 tables without PK、B002 redundant indexes、B003 missing FK indexes、B004 unused indexes、B005 uppercase names、B006 unused tables、B007 cross-schema FKs、B008 FK type mismatches、B009 shared trigger functions、B010 reserved keywords、B011 multiple owners per schema、B012 composite primary keys with more than four columns、B013 row-by-row trigger processing without a WHERE clause。
Cluster (C-series): C002 insecure pg_hba.conf entries、C003 MD5 password encryption。
Schema (S-series): S001 no default role grants、S002 env prefixes/suffixes、S003 unsecured public schema、S004 system role ownership、S005 multiple owners per schema。
注意事项
Pigsty package metadata 记录版本 1.1.2,覆盖 PostgreSQL 14-18,并记录了从 0.16.1 到 0.17.0 的本地 PGRX 升级。上游 README 兼容性文字仍写 PostgreSQL 13-18 和 PGRX 0.16.1。
上游 1.1.2 release 增加了 B013。主 README 相比 docs 和导出函数仍有部分滞后,因此此 stub 使用 get_violations(),并省略较旧且未确认的 check() / check_rule() 示例。