# pgBadger 11.x 版本记录

> pgBadger 11.x 系列的完整上游版本记录

---

LLMS 索引： [llms.txt](/zh/llms.txt)

---

## v11.8 · 2022-04-08 {#v11-8}

本版本修复了过去三个月用户报告的问题，尤其包括增量模式中检测新日志记录的两项修复：

  * 修复 `log_line_prefix` 使用毫秒时间戳（`%m`）或纪元时间戳（`%n`）时的新记录检测。
  * 修复未使用多进程时本地文件的新记录检测。

完整变更与致谢如下：

  - 全面审查并简化日志文件变化的检测。
  - 在事件报告中加入 `could not (receive|send) data (from|to) client` 消息。感谢 Adrien Nayrat 报告。
  - 修复预备查询名称包含 `:` 时的解析问题。感谢 aleszeleny 报告。
  - 修复使用毫秒（`%m`）或纪元（`%n`）时间戳时的新记录检测。感谢 aleszeleny 报告。
  - 修复未使用多进程时本地文件的新记录检测。感谢 aleszeleny 报告。
  - 修复通过 SSH 读取远程文件时的新记录检测。感谢 Luca Ferrari 报告。
  - 修复“按用户统计连接”报告中用户名混入无关内容的问题。感谢 caseyandgina 报告。
  - 修复使用 URI 时 SSH 命令缺少连接选项的问题。感谢 Luca Ferrari 报告。
  - 处理查询 ID 占位符 `%Q`。感谢 Adrien Nayrat 提供补丁。
  - 修正错误消息中的拼写错误。感谢 Luca Ferrari 提供补丁。
  - 在事件报告中加入 `server process was terminated by signal` 消息。感谢 Avi Vallarapu 报告。
  - 文档：修正每周增量命令中的文件名。感谢 Theophile Helleboid 提供补丁。
  - `t/04_advanced.t`：修复 syslog 测试。感谢 Christoph Berg 提供补丁。

## v11.7 · 2022-01-23 {#v11-7}

本版本修复了过去五个月用户报告的问题，并作出以下改进：

* 添加 `--no-progressbar` 选项，隐藏进度条，同时保留其他输出。
* 添加 `--day-report` 选项，重建指定日期的 HTML 报告。它与 `--month-report` 类似，但仅处理一天；需要增量输出目录及全部必要的二进制数据文件，日期格式为 `YYYY-MM-DD`。
* 改善 Heroku logplex 和 Cloud SQL JSON 日志的解析。

完整变更与致谢如下：

- 更新贡献指南和 `Makefile.PL`，改善一致性、说明清晰度与依赖管理。感谢 diffuse 提供补丁。
- 修复二进制模式下最后解析状态文件（`--last-parsed`）的使用。感谢 wibrt 报告。
- 为 `--last-parsed` 添加回归测试，并修复仅报告临时文件时的回归测试。
- 修正按主机统计会话图表的标题。感谢 Norbert Bede 报告。
- 修复同时启用 `--iso-week-number` 和 `--incremental` 时生成周报的周编号。感谢 hansgv 报告。
- 添加 `--no-progressbar` 选项，隐藏进度条，同时保留其他输出。感谢 seidlmic 提出需求。
- 防止调试模式对多行 jsonlog 打印过多格式未知的日志行。
- 修复单行 Cloud SQL JSON 日志的解析。感谢 Thomas Leclaire 报告。
- 修复只启用 `log_temp_files` 时的临时文件汇总。
- 即使使用 `-q` 或 `--quiet`，指定 `-v` 后仍打印调试消息。
- 修复 jsonlog 文件的自动识别。
- 修复 Cloud SQL 日志文件的解析。感谢 Luc Lamarle 报告。
- 修复 `parse_json_input` 中的 PID 提取。感谢 Francois Scala 提供补丁。
- 添加 `--day-report` 选项，接受 `YYYY-MM-DD` 日期并重建该日的 HTML 报告。感谢 Thomas Leclaire 提出需求。
- 修复进度条中的查询计数。感谢 Guillaume Lelarge 报告。
- 修复耗时最高的 bind 和 prepare 报告存储了不完整查询的问题。
- 修复对象标识符的归一化，避免某些情况下把其中数字替换成 `?`。
- 修复以注释开头的归一化查询未格式化的问题。
- 修复使用 `--dbname` 时 stderr 格式的多行处理。感谢 Guillaume Lelarge 报告。
- 修复增量模式使用 `--dbname` 时未生成报告的问题。感谢 Dudley Perkins 报告。
- 二进制文件不兼容时不再终止程序，而是继续下一个文件。感谢 Thomas Leclaire 建议。
- 修复解析器对 Heroku logplex 格式变化的处理。感谢 François Pietka 报告。

## v11.6 · 2021-09-04 {#v11-6}

本版本修复了过去七个月用户报告的问题，并作出以下改进：

  * 检测 PostgreSQL 14 新增的 `log_line_prefix` 查询 ID。感谢 Florent Jardin 报告。
  * 添加覆盖数据库排除和按数据库拆分报告的高级回归测试。感谢 MigOps Inc 提供补丁。
  * 使用 `--explode` 时，以多进程生成报告。感谢 MigOps Inc 提供补丁，以及 Thomas Leclaire 提出需求。
  * 添加 `--iso-week-number`：增量日历每周从周一开始，遵循 ISO 8601，周编号范围为 01 至 53，第 1 周是新年中至少含 4 天的第一周。感谢 Alex Muntada 提出需求。
  * 添加 `--keep-comments` 选项，保留归一化查询中的注释，以区分归一化结果相同的查询。感谢 Stefan Corneliu Petrea 提出需求。
  * 跳过第三方软件写入 PostgreSQL 日志的 INFO 行。感谢 David Piscitelli 报告。
  * 兼容 PostgresPro 日志，其语句耗时后附有行数与字节大小。感谢 panatamann 报告。
  * 解析包含 T 的时间表示，以支持 journalctl 时间戳。感谢 Graham Christensen 提供补丁。
  * 改善 Windows 移植版。感谢 Bertrand Bourgier 提供补丁。

重要说明：

  * 当时计划在下一个主要版本中默认启用 `--iso-week-number`，并移除 `--start-monday`，使每周始终从周一开始；为简化代码，也计划移除以周日作为每周起始日的选项。此条记录的是当时的计划，当前选项请以命令行参考为准。

完整变更与致谢如下：

  - 修复重复的警告消息 `database ... must be vacuumed within ... transactions`。感谢 Christophe Courtois 报告。
  - 修复使用未初始化变量的问题。感谢 phiresky 报告。
  - 改善查询 ID 的检测，支持负值，并从 csvlog 中读取。
  - 修复增量模式总是再次解析已经处理过的最后一个文件的问题。感谢 Thomas Leclaire 报告。
  - 更新 syslog 格式的正则表达式，支持会话行标记只含一个整数的情况，而不要求两个以连字符分隔的整数。感谢 Timothy Alexander 提供补丁。
  - 修复 JSON 日志使用 `--exclude-db` 后仍生成被排除数据库报告的问题。感谢 MigOps Inc 提供补丁，以及 Thomas Leclaire 报告。
  - 针对有缺陷的 Storable 版本添加回归测试。
  - 修复增量模式生成周报时替换迭代器使用未初始化值的问题。感谢 Thomas Leclaire、Michael Vitale、Sumeet Shukla 和 Stefan Corneliu Petrea 报告。
  - 添加 `g` 标志，以替换全部绑定参数。感谢 Nicolas Lutic 和 Sebastien Lardiere 提供补丁。
  - 改善文档。感谢 Stefan Petrea 提供补丁。
  - 修复日志时区变换的计算。感谢 Stefan Petrea 提供补丁。
  - 修复按起止时间过滤日志。
  - 修复按数据库过滤多行查询时孤立日志行关联错误的问题。感谢 Abhishek Mehta 报告。
  - 修复增量模式同时使用 `--dbname` 与拆分选项 `-E` 时数据库参数被部分忽略的问题。感谢 lrevest 报告。
  - 更新 JavaScript 资源。
  - 修复缩小屏幕后切换为折叠菜单前的菜单显示。感谢 Guillaume Lelarge 报告。
  - 修复未正确支持跨多行绑定参数值的问题。
  - 将上一补丁对应的修复同步到 pgFormatter。
  - 修复 pgFormatter 代码中替换迭代器使用未初始化值的另一处问题。感谢 Christophe Courtois 报告。
  - 修复查询归一化。感谢 Jeffrey Beale 提供补丁。
  - 使用 `--dump-all-queries` 时，确保每条语句都以分号结尾。感谢 Christian 报告。
  - 修正拼写，并修复多个日志文件的行结束符类型初始化。
  - 自动检测行结束符类型，修复 Windows 双字节行结束符导致的 LAST_PARSED 偏移问题。感谢 Bertrand Bourgier 提供补丁。
  - 修复 Windows 不支持 `strftime %u` 时的 `get_day_of_week()` 移植问题。感谢 Bertrand Bourgier 提供补丁。
  - 修复 Windows 调用 Perl 工具 `pl2bat.bat` 时，因 pgBadger 读取 `__DATA__` 的方式导致生成损坏的 `pgbadger.bat`。感谢 Bertrand Bourgier 提供补丁。
  - 修复起止时间过滤，并添加时间戳过滤的回归测试。感谢 Alexis Lahouze 和 plmayekar 报告。
  - 修复 pgFormatter 更新引入的模式匹配使用未初始化值问题。感谢 arlt 报告。

## v11.5 · 2021-02-18 {#v11-5}

本版本修复了过去三个月用户报告的问题，并作出以下改进：

  * 添加会话闲置时间报告，计算方式为：
        "(total sessions time - total queries time) / number of sessions"
    要得到可靠结果，需启用 `log_connections` 与 `log_disconnections`，并设置 `log_min_duration_statement = 0` 以记录全部查询。该报告可帮助了解闲置时间，并评估事务模式连接池的价值。报告位于“全局统计”的“会话”标签页，以及“总体活动”的“会话”标签页（按小时统计）。
  * 添加数值匿名化，将数字替换为四位随机数。
  * 将 SQL 格式化器更新为基于 pgFormatter 5.0 的版本。

完整变更与致谢如下：

  - 修复 Cloud SQL 多行语句的解析。感谢 Jon Young 报告。
  - 为匿名化添加回归测试。
  - 修复 maxlength 截断导致匿名化失效的问题。感谢 artl 报告。
  - 在耗时最高的 prepare 和 bind 报告中匿名化参数。感谢 arlt 报告。
  - 支持 logplex 日志前缀中的微秒。感谢 Ross Gardiner 报告。
  - 添加会话闲置时间报告。感谢 Guillaume Lelarge 提出需求。
  - 完成支持 jsonlog 多行内容的补丁。

## v11.4 · 2020-11-24 {#v11-4}

本版本修复了过去四个月用户报告的问题，改善 PostgreSQL 13 日志信息的支持，并增加以下功能：

  * 在“按表统计 vacuum”报告中添加完整的 autovacuum 信息：缓冲区使用（命中、未命中、弄脏）、因页被固定而跳过、跳过的冻结页，以及 WAL 使用（记录数、全页镜像、字节数）。“各表移除的元组”报告加入剩余元组、尚不能移除的元组和剩余页数。这些信息只在“表”标签页提供。
  * 添加检查点启动原因的分布报告。
  * 从连接授权日志中检测应用名称。

完整变更与致谢如下：

  - 修正错误消息中的拼写错误。感谢 Vidar Tyldum 提供补丁。
  - 修复 Windows 上的 `can not load incompatible binary data` 错误。感谢 Eric Brawner 报告。
  - 修正用法说明和文档中 `--html-outdir` 的拼写错误。感谢 Vidar Tyldum 提供补丁。
  - 修复 jsonlog/Cloud SQL 格式的自动识别。感谢 Jon Young 报告。
  - 修复 PostgreSQL v13 的 CSV 日志解析。感谢 Kanwei Li 报告，以及 Kaarel Moppel 提供补丁。
  - 修复产生最多临时文件的查询报告的排序。感谢 Sebastien Lardiere 报告。
  - 在调试模式中显示 pgBadger 版本。

## v11.3 · 2020-07-26 {#v11-3}

本版本修复了过去四个月用户报告的问题，并增加了以下功能和命令行选项：

  * 自动检测 UTC 时间戳，避免向图表再次应用时区偏移。
  * 支持 GCP Cloud SQL JSON 日志格式。
  * 添加 `--dump-all-queries`，将全部查询导出到文本文件，不生成报告，只列出 PostgreSQL 日志中的完整语句列表。绑定参数会填入查询中相应位置。
  * 添加 `-Q | --query-numbering`，在使用 `--dump-all-queries` 或 `--normalized-only` 时为输出查询编号。
  * 添加 `--tempdir`，指定临时文件目录，适合不允许写入 `/tmp` 的系统。
  * 添加 `--ssh-port`，指定非默认 22 的 SSH 端口。URI 写法也支持指定端口，例如：
        ssh://192.168.1.100:2222//var/log/postgresql-11.log

完整变更与致谢如下：

  - 修复 jsonlog/Cloud SQL 格式的增量报告。感谢 Ryan DeShone 报告。
  - 自动检测 UTC 时间戳，避免应用自动检测的时区偏移；UTC 时间由 JavaScript 转换为本地时区。感谢 Brett Stauner 报告。
  - 修复 journalctl 日志从第二次运行起增量解析失效的问题。感谢 Paweł Koziol 提供补丁。
  - 修复同时使用 `-X` 与 `-E` 时的资源文件路径。感谢 Ryan DeShone 报告。
  - 修复“总体活动”报告的读写查询。感谢 alexandre-sk5 报告。
  - 未使用并行模式时添加调试消息。
  - 修复文件大小检测中的 elsif 逻辑，以及添加 `--since` 后 journalctl 命令多余的空格。感谢 Pawel Koziol 提供补丁。
  - 修复 `not a valid file descriptor` 错误。感谢 Pawel Koziol 报告。
  - 修复 RDS 文件的增量模式。感谢 Ildefonso Camargo、nodje 和 John Walsh 报告。
  - 添加 `-Q | --query-numbering`，在使用 `--dump-all-queries` 或 `--normalized-only` 时为查询编号，便于外部脚本从输出文件提取多行查询。感谢 Shantanu Oak 提出需求。
  - 修复启用 `log_min_duration_statement` 时 Cloud SQL JSON 日志的解析。感谢 alexandre-sk5 报告。
  - 修复 RDS 日志中用户的错误哈希键。感谢 vosmax 报告。
  - 修复修改不可创建数组值导致的错误。感谢 John Walsh 和 Mark Fletcher 报告。
  - 支持 GCP Cloud SQL JSON 日志，日志格式（`-f`）为 `jsonlog`。感谢 Thomas Poindessous 提出需求。
  - 添加 `--dump-all-queries`，将全部查询导出到文本文件，不生成报告；绑定参数填入相应位置，不对查询去重或排序，记录全部查询。感谢 Shantanu Oak 提出需求。
  - 添加 `--dump-all-queries` 文档。
  - 修复新版 PostgreSQL 的 vacuum 报告。感谢 Alexey Timanovsky 报告。
  - 添加 `--no-process-info`，不再修改进程标题以标识 pgBadger 进程，适用于不支持该操作的系统。感谢 Akshay2378 报告。
  - 添加 `--tempdir`，指定临时文件目录，默认：
        File::Spec->tmpdir() || '/tmp'
    适合不允许写入 `/tmp` 的系统。感谢 Akshay2378 报告。
  - 修复压缩文件名含空格或方括号时不受支持的问题。感谢 Alexey Timanovsky 报告。
  - 添加 `--ssh-port`，指定非默认 22 的 SSH 端口。URI 写法也支持指定端口，例如：
        ssh://192.168.1.100:2222//var/log/postgresql-11.log
    感谢 Augusto Murri 提出需求。

## v11.2 · 2020-03-11 {#v11-2}

本版本修复了过去六个月用户报告的问题，并增加以下功能：

  * 支持并自动识别 AWS Redshift 日志格式。
  * 支持 PgBouncer 1.11 的新日志格式。
  * 支持 zstd 与 lz4 压缩格式。
  * 增量模式下可完全分离统计数据生成与 HTML 报告生成，生成报告时无需重新读取日志。例如，可以每小时运行：

        pgbadger -I -O "/out-dir/data" --noreport /var/log/postgresql*.log

    这只在 `/out-dir/data` 创建二进制数据文件。随后可每晚在独立目录 `/out-dir/reports` 生成当天的报告，供次日查看：

        pgbadger -I -l "/out-dir/data/LAST_PARSED" -H "/out-dir/reports" /out-dir/data/2020/02/19/*.bin

    需要指定最后解析状态的路径、HTML 输出目录，以及当天的二进制数据文件。

新增命令行选项：

  * 添加 `--explain-url`，覆盖图形化执行计划工具的 URL。当时的默认 URL 为：

        http://explain.depesz.com/?is_public=0&is_anon=0&plan=

    可用于本地安装的 PgExplain 或其他工具。pgBadger 将转义后的文本格式执行计划追加到 URL 末尾。

  * 添加 `--no-week`，增量模式下不生成周报，适合周报消耗过多时间和资源的情况。

  * 添加 `--command`，指定获取日志记录的命令。pgBadger 打开通向该命令的管道，并解析其输出的日志，例如：

      pgbadger -f stderr --command 'cat /var/log/postgresql.log'

    这与直接将日志文件作为参数传入等效。需要实时改写日志、从程序提取日志或从数据库生成日志时，此选项尤为有用。例如：

      pgbadger -f csv --command 'psql dbname -c "COPY jrn_log TO STDOUT (FORMAT CSV)"'

  * 添加 `--noexplain`，不解析或报告 auto_explain 扩展写入日志的执行计划。在 PostgreSQL < 9.0 中，日志包含执行计划时 pgBadger 会生成损坏的报告，此选项可避免该问题。

向后兼容性：

  - 默认将查询截断至 100000 字符；可通过 `--maxlength` 调整这个人为设定的值。此前默认不截断，可能造成过量资源消耗。限定默认长度更安全，且多数查询不会触及此限制。不过，超过 25000 字符的查询不会进行格式化。

完整变更与致谢如下：

  - 修复 `--exclude-client` 不生效的问题。感谢 John Walsh 报告。
  - 添加 RDS 日志解析与 `--exclude-client` 的回归测试。
  - 修复 PgBouncer 日志的进度条，将“查询”标签改为“统计”。
  - 添加 `--explain-url`，覆盖图形化执行计划工具的 URL。感谢 Christophe Courtois 提出需求。
  - 支持 PgBouncer 1.11 新日志格式。感谢 Dan Aksenov 报告。
  - 支持 zstd 和 lz4 压缩格式。感谢 Adrien Nayrat 提供补丁。
  - 支持并自动识别 AWS Redshift 日志格式。感谢 Bhuvanesh 提出需求。
  - 更新 Redshift 日志格式文档。
  - 添加 `--no-week`，增量模式下不生成周报。感谢 cleverKermit17 提出需求。
  - 修复 Windows 上文件路径模式匹配导致 pgBadger 失败的问题。
  - 修复 #554：即使指定字符集，西里尔字符及其他编码的语句参数也未在 HTML 中正确显示。该回归由修复 Perl 的 `Wide character in print` 消息引入；现已撤销原补丁，添加 `--wide-char` 以恢复所需行为。遇到此消息时请加入该选项。添加西里尔字符和法语编码的回归测试。感谢 4815162342lost 和 yethee 报告。
  - 更新文档，说明 `lc_messages = 'en_US.UTF-8'` 同样有效。感谢 nodje 报告。
  - 更新 `--maxlength` 文档，默认截断长度改为 100000，不再默认不截断。感谢 nodje 报告。
  - 修复跨年时的保留期计算。感谢 Fabio Pereira 提供补丁。
  - 修复 RDS 日志格式的解析。感谢 Kadaffy Talavera 报告。
  - 增量模式下没有新日志记录时，不再生成空索引文件。感谢 Kadaffy Talavera 报告。
  - 修复未及时更新的文档。感谢 Eric Hanson 提供补丁。
  - 将文档中的命令行参数从 `-no-explain` 改为 `-noexplain`。感谢 Indrek Toom 提供补丁。
  - 无法取得 totalsize 时，回退到默认文件大小。感谢 Adrien Nayrat 提供补丁。
  - 修正示例中的日期。感谢 Greg Clough 提供补丁。
  - 在其余测试中使用压缩文件扩展名的正则表达式，并将 `.bin` 扩展名的判断独立处理。
  - 支持 zstd 和 lz4 压缩格式。感谢 Adrien Nayrat 提供补丁。
  - 修复 Windows 上剩余的 SIGUSR2 调用。感谢 inrap 报告。
  - 修复大小不确定的日志文件的进度条。
  - 添加 `--command`，执行命令并从其标准输出获取日志记录。感谢 Justin Pryzby 提出需求。
  - 添加 `--noexplain`，不解析或报告 auto_explain 写入日志的执行计划，以避免 PostgreSQL < 9.0 中日志包含执行计划时报告损坏。感谢 Massimo Sala 提出需求。
  - 修复命令行指定前缀时的 RDS 日志解析。感谢 Bing Zhao 报告。
  - 修复 RDS 日志格式的增量模式。感谢 Bing Zhao 报告。
  - 修复 RDS 日志解析中的潜在问题。感谢 James van Lommel 和 Simon Dobner 报告。
  - 修复语句分类，并添加回归测试。感谢 alexanderlaw 报告。
  - 修复 IN 子句中单个字符的匿名化。感谢 Massimo Sala 报告。
  - 修复缺少客户端/用户/数据库信息的 RDS 日志行解析。感谢 Konrad 报告。

## v11.1 · 2019-09-16 {#v11-1}

本版本修复了过去三个月用户报告的问题，并增加以下功能和报告：

  - 添加 prepare 或 parse 阶段耗时最高的前 N 条查询报告。
  - 添加 bind 阶段耗时最高的前 N 条查询报告。
  - 添加 prepare/bind/execute 各阶段耗时报告，位于“全局统计”新增的“耗时”标签页。例如：
        Total query duration: 6m16s
        Prepare/parse total duration: 45s564ms
        Bind total duration: 4m46s
        Execute total duration: 44s71m
    这也修复了原“查询总耗时”只报告 execute 总耗时的问题。
  - 支持并自动识别 RDS 与 CloudWatch 日志格式；无法自动识别时可使用 `-f rds`。
  - 添加 `--month-report`，生成月度增量报告。
  - 恢复 Windows 操作系统支持。

其他缺陷修复与功能改进：

  - 使用 pod2markdown 自动生成 `README.md`；命令不存在时不生成该文件。感谢 Derek Yang 提供补丁。
  - 将 WITH 语句归类为 CTE，修复上一版本引入的回归。
  - 修复 Windows 操作系统支持。
  - 支持 RDS 和 CloudWatch 日志；无法自动识别时使用 `-f rds`。感谢 peruuparkar 提出需求。
  - 修复 `-f | --format` 未应用于全部参数文件的问题：当自动识别失败时，曾错误沿用第一个文件的格式。感谢 Levente Birta 报告。
  - 更新源码文档，将 pgBadger v7.x 引用改为 v11。感谢 Will Buckner 提供补丁。
  - 限制高频/耗时查询的显示高度，避免巨大查询占满页面。感谢 ilias ilisepe1 提供补丁。
  - 修复“最慢的单次查询”中查询与详细信息溢出的问题。
  - 修复文件、目录与通配符的 SSH URI。感谢 tbussmann 提供补丁。
  - 修正文档中的 URI 示例。感谢 tbussmann 提供补丁。
  - 使用 `--rebuild` 时隐藏默认输出文件的提示。
  - 在 `usage()` 输出中添加额外换行，避免构建时破坏 POD 文档。
  - 在文档中恢复 `--exclude-client` 的说明。感谢 Christoph Berg 报告。

## v11.0 · 2019-06-25 {#v11-0}

本版本加入重要新功能，并修复了过去四个月用户报告的问题。新增功能：

  - 将游标相关查询（DECLARE、CLOSE、FETCH、MOVE）归入新查询类型 CURSOR。
  - 添加生成最多临时文件的 bind 查询报告；需要启用连接与断开连接日志。
  - 添加 `--exclude-client`，排除指定客户端 IP 的日志记录，可多次指定。
  - 允许 `--begin` 与 `--end` 只使用时间。
  - 添加 `-H, --html-dir`，在增量模式下指定独立的 HTML 输出路径；二进制文件仍保存在 `-O, --outdir` 指定的目录。
  - 添加 `-E | --explode`，将主报告拆分为每个数据库一份；与数据库无关的全局信息放入 postgres 数据库报告。
  - 增量模式支持按数据库报告，每个数据库有独立子目录与增量报告。
  - 支持 Heroku PostgreSQL 的 logplex 格式，可这样解析：

      heroku logs -p postgres | pgbadger -f logplex -o heroku.html -

  - 查询超过 10Kb 时，先将所有常量字符串参数限制为 30 字符，再将查询截断为 10Kb，避免插入 bytea 等超长查询造成耗时过多或挂起。10Kb 限制可通过 `--maxlength` 控制；先尝试缩短参数，再归一化查询或按 maxlength 截断。

此版本与旧二进制或 JSON 文件不兼容，增量模式也无法读取旧二进制文件。若升级后仍需保留历史报告，请在新的一周开始时升级，否则周报会损坏。pgBadger 将打印警告并跳过旧二进制文件。

其他缺陷修复与功能改进：

  - 加入版本警告，并跳过不兼容的二进制文件。
  - 将代码格式化器更新至 pgFormatter 4.0。
  - 修复 pgBadger 在 Windows 上挂起的问题。感谢 JMLessard 报告。
  - 更新 `tools/pgbadger_tools`，兼容 v11 的新二进制文件格式。
  - 添加生成最多临时文件的 bind 查询报告；只有在 postgresql.conf 中启用连接与断开连接日志时才能收集。感谢 Ildefonso Camargo 提出需求。
  - 修复时区自动检测。感谢 massimosala 修复。
  - 使用 `--nograph` 时移除剩余图表。
  - 使用 `--normalized-only` 时强制使用 `.txt` 扩展名。
  - 修复 logplex 格式的 autovacuum/autoanalyze 报告。感谢 Konrad zichul 报告。
  - 修复 Windows 的进度条。感谢 JMLessard 报告。
  - 使用 `$prefix_vars{'t_time'}` 存储日志时间。感谢 Luca Ferrari 提供补丁。
  - 更新用法与文档，移除 pgBadger 调用前的 perl 命令。感谢 Luca Ferrari 提供补丁。
  - 允许起止条件使用不含日期的时间。感谢 Luca Ferrari 提供补丁。
  - 修正 README 的少量拼写与语法错误。感谢 ofni yratilim 提供补丁。
  - 修复通过 SSH 使用的远程路径。感谢 Luca Ferrari 提供补丁。
  - 更新回归测试，适应按数据库报告功能引入的新结构。
  - 修复全部起止参数中的小数秒。感谢 Luca Ferrari 提供补丁。
  - 修正文档 URL。感谢 Kara Mansel 报告。
  - 修复 auto_explain 解析，并补充 `-U` 可多次指定的说明。感谢 Douglas J Hunley 报告。
  - 改进多处 HTML/CSS 报告界面。感谢 Pierre Giraud 提供补丁。
  - 更新资源文件。
  - 添加 logplex 格式的回归测试。
  - 支持 Heroku PostgreSQL 的 logplex 格式，可解析日志流：
        heroku logs -p postgres | pgbadger -f logplex -o heroku.html -
    或已保存的日志文件：
        pgbadger heroku.log
    logplex 与其他支持的格式一样可自动识别。pgBadger 支持以下默认 `log_line_prefix`：
        database = %d connection_source = %r sql_error_code = %e
    或简化形式：
        sql_error_code = %e
    如有其他默认前缀，可向上游反馈。也可以始终用 `-p | --prefix` 指定，例如：
        pgbadger --p 'base = %d source = %r sql_state = %e' heroku.log
    感谢 Anthony Sosso 提出需求。
  - 修复关于 URI 使用的帮助信息。
  - 修复上一补丁导致 SSH URI 通配符失效的问题。感谢 Tobias Bussmann 报告。
  - 允许日志路径含空格的 URI。感谢 Tobias Bussmann 报告。
  - 修正文档中的 URI 示例。感谢 Tobias Bussmann 提供补丁。
  - 修复 `t/02_basics.t`，避免 syslog 测试耗时超过 10s 时失败。感谢 Christoph Berg 提供补丁。

---

反链：

- [版本历史](/zh/docs/pgbadger/releases/)
