XLOG_PAGE_MAGIC 是一个 嵌入在 WAL 文件头部的预处理器常量,用于定义其版本。
XLOG_PAGE_MAGIC 自 PostgreSQL 7.0 起就存在(尽管它在 WAL 于 PostgreSQL 7.1 完全引入后才变得实用)。
源代码
XLOG_PAGE_MAGIC 定义在 src/include/access/xlog_internal.h 中(在 PostgreSQL 8.0 之前定义在 src/include/access/xlog.h 中)。
用法和值
XLOG_PAGE_MAGIC 是一个两字节的常量,每次对 WAL 文件格式进行更改时都会递增。它与 PostgreSQL 版本号没有直接的对应关系,但自 PostgreSQL 8.0 以来的每个稳定 PostgreSQL 版本发布时的值都高于前一个稳定版本的对应值,因此理论上可以根据 XLOG_PAGE_MAGIC 的值来确定 WAL 文件与哪个 PostgreSQL 版本相关联。请注意,在 PostgreSQL 7.3 和 PostgreSQL 7.4 之间没有发生递增(参见下表)。
| PostgreSQL 版本 | XLOG_PAGE_MAGIC | 提交 | 备注 |
|---|---|---|---|
| PostgreSQL 18 | 0xD118 | 243e9b40 | 尚未完成 |
| PostgreSQL 17 | 0xD116 | 2b5819e2 | |
| PostgreSQL 16 | 0xD113 | 6af17939 | |
| PostgreSQL 15 | 0xD110 | 8b1dccd3 | |
| PostgreSQL 14 | 0xD10D | 08aa89b3 | |
| PostgreSQL 13 | 0xD106 | c6b92041 | |
| PostgreSQL 12 | 0xD101 | b5f58cf2 | |
| PostgreSQL 11 | 0xD098 | cf5a1890 | |
| PostgreSQL 10 | 0xD097 | ea42cc18 | |
| PostgreSQL 9.6 | 0xD093 | 65578341 | |
| PostgreSQL 9.5 | 0xD087 | 6e8af376 | |
| PostgreSQL 9.4 | 0xD07E | 8776faa8 | |
| PostgreSQL 9.3 | 0xD075 | 0ab9d1c4 | |
| PostgreSQL 9.2 | 0xD071 | 3424bff9 | |
| PostgreSQL 9.1 | 0xD066 | d2bc1c99 | |
| PostgreSQL 9.0 | 0xD064 | 9b8a7332 | |
| PostgreSQL 8.4 | 0xD063 | cd004067 | |
| PostgreSQL 8.3 | 0xD062 | a8d539f1 | |
| PostgreSQL 8.2 | 0xD05E | 09b5271e | |
| PostgreSQL 8.1 | 0xD05D | 21fda22e | |
| PostgreSQL 8.0 | 0xD05C | 2042b342 | 已移至 src/include/access/xlog_internal.h (提交 2042b342) |
| PostgreSQL 7.4 | 0xD05A | 不适用 | 与 PostgreSQL 7.3 相同 |
| PostgreSQL 7.3 | 0xD05A | c87469e6 | |
| PostgreSQL 7.2 | 0xD059 | 7d4d5c00 | |
| PostgreSQL 7.1 | 0xD058 | 1b87e24c | |
| PostgreSQL 7.0 | 0x17345168 | 30659d43 | 实验性质 |
