pgsql: Avoid emitting a bogus WAL record when recycling an all-zerobtr
От | Tom Lane |
---|---|
Тема | pgsql: Avoid emitting a bogus WAL record when recycling an all-zerobtr |
Дата | |
Msg-id | E1fcfYL-000508-AN@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Avoid emitting a bogus WAL record when recycling an all-zero btree page. Commit fafa374f2 caused _bt_getbuf() to possibly emit a WAL record for a page that it was about to recycle. However, it failed to distinguish all-zero pages from dead pages, which is important because only the latter have valid btpo.xact values, or indeed any special space at all. Recycling an all-zero page with XLogStandbyInfoActive() enabled therefore led to an Assert failure, or to emission of a WAL record containing a bogus cutoff XID, which might lead to unnecessary query cancellations on hot standby servers. Per reports from Antonin Houska and 自己. Amit Kapila was first to propose this fix, and Robert Haas, myself, and Kyotaro Horiguchi reviewed it at various times. This is an old bug, so back-patch to all supported branches. Discussion: https://postgr.es/m/2628.1474272158@localhost Discussion: https://postgr.es/m/48875502.f4a0.1635f0c27b0.Coremail.zoulx1982@163.com Branch ------ REL9_6_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/568995be6703593c01cbb4346c4ede3b44e168a9 Modified Files -------------- src/backend/access/nbtree/nbtpage.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-)
В списке pgsql-committers по дате отправления: