Re: Non-replayable WAL records through overflows and >MaxAllocSize lengths
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Matthias van de Meent <boekewurm+postgres@gmail.com>
Cc: Heikki Linnakangas <hlinnaka@iki.fi>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2022-07-15T17:37:31Z
Lists: pgsql-hackers
Hi, On 2022-07-15 11:25:54 +0200, Matthias van de Meent wrote: > On Mon, 14 Mar 2022 at 18:14, Andres Freund <andres@anarazel.de> wrote: > > > > A random thought I had while thinking about the size limits: We could use the > > low bits of the length and xl_prev to store XLR_SPECIAL_REL_UPDATE | > > XLR_CHECK_CONSISTENCY and give rmgrs the full 8 bit of xl_info. Which would > > allow us to e.g. get away from needing Heap2. Which would aestethically be > > pleasing. > > I just remembered your comment while going through the xlog code and > thought this about the same issue: We still have 2 bytes of padding in > XLogRecord, between xl_rmid and xl_crc. Can't we instead use that > space for rmgr-specific flags, as opposed to stealing bits from > xl_info? Sounds like a good idea to me. I'm not sure who is stealing bits from what right now, but it clearly seems worthwhile to separate "flags" from "record type within rmgr". I think we should split it at least into three things: 1) generic per-record flags for xlog machinery (ie. XLR_SPECIAL_REL_UPDATE, XLR_CHECK_CONSISTENCY) 2) rmgr record type identifier (e.g. XLOG_HEAP_*) 2) rmgr specific flags (e.g. XLOG_HEAP_INIT_PAGE) Greetings, Andres Freund
Commits
-
Add more protections in WAL record APIs against overflows
- 8fcb32db98ed 16.0 landed
-
Add overflow protection for block-related data in WAL records
- ffd1b6bb6f8a 16.0 landed
-
Change internal RelFileNode references to RelFileNumber or RelFileLocator.
- b0a55e43299c 16.0 cited
-
Revamp the WAL record format.
- 2c03216d8311 9.5.0 cited