I discovered this on my buffer pool dev branch because the planner miscomputed the amount of reservation required for the sorter on this query:
The frontend thinks that it doesn't need var-len data blocks to store t1.cl, which is a large CHAR() column.
I think the problem is that two different concepts are being confused in the code:
- Is the amount of storage required for the slot always a fixed amount?
- Does the slot store data out-of-line from the main tuple?