plpgsql_check
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
plpgsql_check | 2.10.14 | 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 |
|---|
Distribution/package 2.10.14 installs SQL extension 2.10; maintained RPM/DEB recipes and source are 2.10.14. 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 | PGDG | 2.10.14 | 1817161514 | plpgsql_check | plpgsql |
| RPM | PGDG | 2.10.14 | 1817161514 | plpgsql_check_$v | - |
| DEB | PGDG | 2.10.14 | 1817161514 | postgresql-$v-plpgsql-check | - |
构建
您可以使用 pig build 命令构建 plpgsql_check 扩展的 RPM / DEB 包:
安装
您可以直接安装 plpgsql_check 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:
使用 pig 或者是 apt/yum/dnf 安装扩展:
创建扩展:
用法
来源:
plpgsql_check 是面向 PL/pgSQL 的检查器、代码规范检查器、性能分析器、跟踪器和覆盖率工具。它利用 PostgreSQL 自身的解析器和执行器基础设施分析 PL/pgSQL 函数体,因此许多原本只会在运行时出现的问题,可以在开发或 CI 阶段被发现。
上游发行版 2.10.14 安装的 SQL 扩展版本仍为 2.10。README 覆盖 PostgreSQL 14–20,其中包含开发版本;这不代表对应二进制软件包已经可用。
检查函数
返回表的变体更容易筛选、存储或用于 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.14 保留这些先前的修复,并修正了更多误报。
发行包 META 将许可证标为 BSD,但随包 LICENSE 文件使用 MIT 正文;目录以随包许可证文件为准。
2.10.14 的变化
性能分析报告中的动态 SQL 查询标识默认关闭,仅在需要时启用 plpgsql_check.profiler_show_dynquery_query_id。本版还改善格式字符串与多态类型检查,并修复执行计划保留及重试过程中的泄漏。分支覆盖率会区分 IF/ELSIF 条件求值失败与真正进入隐式 ELSE 分支。
SQL 版本仍为 2.10,替换兼容的库文件本身不要求执行扩展迁移。应重新连接使用旧库的会话;共享预加载的实例需要重启。修改运行中的服务器前应先演练升级。
这个页面对您有帮助吗?
感谢反馈,我们会据此改进这篇文档。
哪里没有解决?(可选)