plpgsql_check
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
plpgsql_check | 2.10.4 | LANG | MIT | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 3060 | plpgsql_check | 否 | 是 | 否 | 是 | 否 | 否 | - |
| 相关扩展 | plpgsql pldbgapi plprofiler pglinter pg_stat_plans auto_explain pg_stat_statements pg_show_plans pg_store_plans hypopg index_advisor |
|---|
Core checks work after CREATE EXTENSION; LOAD or shared_preload_libraries is optional for passive mode and shared profiler features; META says BSD but the shipped LICENSE text is MIT.
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 2.10.4 | 1817161514 | plpgsql_check | plpgsql |
| RPM | PIGSTY | 2.10.4 | 1817161514 | plpgsql_check_$v | - |
| DEB | PIGSTY | 2.10.4 | 1817161514 | postgresql-$v-plpgsql-check | - |
构建
您可以使用 pig build 命令构建 plpgsql_check 扩展的 RPM / DEB 包:
安装
您可以直接安装 plpgsql_check 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
使用 pig 或者是 apt/yum/dnf 安装扩展:
创建扩展:
用法
来源:
- plpgsql_check 2.10.4 README
- plpgsql_check 2.10.4 发行版
- plpgsql_check 2.10.4 控制文件
- plpgsql_check 2.10.3 到 2.10.4 的变更
plpgsql_check 是面向 PL/pgSQL 的检查器、代码规范检查器、性能分析器、跟踪器和覆盖率工具。它利用 PostgreSQL 自身的解析器和执行器基础设施分析 PL/pgSQL 函数体,因此许多原本只会在运行时出现的问题,可以在开发或 CI 阶段被发现。
软件包发行版 2.10.4 安装的 SQL 扩展版本为 2.10。该发行版还会在依赖项输出中报告被用作声明类型的关系。
检查函数
返回表的变体更容易筛选、存储或用于 CI 输出:
输出格式包括文本、JSON 和 XML:
触发器函数
检查触发器函数时,需要指定其操作的关系:
警告级别
extra_warnings覆盖缺少返回值、死代码、变量遮蔽和未使用参数。performance_warnings覆盖隐式类型转换、类型修饰符以及可能妨碍索引使用的模式。security_warnings包括动态 SQL 和 SQL 注入风险检查。compatibility_warnings报告过时或对版本敏感的 PL/pgSQL 模式。
批量检查
可以在迁移流水线中使用这一模式,在发布前发现依赖项变化、列被删除、不安全的类型转换以及 PL/pgSQL 错误。
被动检查
被动模式会在函数启动时执行检查。它适用于开发和预生产环境,但会增加开销。
常用设置:
性能分析器
要共享性能分析器统计信息并确保可靠的早期初始化,请在 plpgsql_check 之前预加载 plpgsql:
如果未共享预加载,性能分析器数据仅限当前活动会话。
跟踪器与覆盖率
跟踪功能会在进入和退出函数及语句时发出通知,并可能暴露变量值。它默认禁用,必须通过由超级用户控制的设置启用。
编译指示
在函数内使用编译指示调用来描述动态 SQL、临时表、推断出的记录类型或局部检查设置:
版本 2.10 新增了 plpgsql_make_pragma(regprocedure),它会规划临时表创建但不实际执行,并返回可提供给检查器的表编译指示。发行版 2.10.2 将其扩展至更多 CREATE TABLE 语句形式:
注意事项
plpgsql_check依赖plpgsql。- 主动检查不强制要求预加载,但共享性能分析器存储以及可靠的跟踪器/性能分析器初始化需要预加载。
- 跟踪器输出可能包含函数参数和局部变量值;不要在敏感的生产工作负载中广泛启用。
- 检查器无法完美理解所有动态 SQL 字符串。请使用编译指示记录预期的动态对象,以减少误报。
- 发行版 2.10.2 和 2.10.3 修复了分析复合参数时可能发生的崩溃,以及为带多态参数的函数生成覆盖率或性能分析报告时可能发生的崩溃。版本 2.10.4 保留这些修复并改进了依赖项报告。