• Heikki Linnakangas's avatar
    Adjust SP-GiST WAL record formats to reduce alignment padding. · 8776faa8
    Heikki Linnakangas authored
    The way the code was written, the padding was copied from uninitialized
    memory areas.. Because the structs are local variables in the code where
    the WAL records are constructed, making them larger and zeroing the padding
    bytes would not make the code very pretty, so rather than fixing this
    directly by zeroing out the padding bytes, it seems more clear to not try to
    align the tuples in the WAL records. The redo functions are taught to copy
    the tuple header to a local variable to avoid unaligned access.
    
    Stable-branches have the same problem, but we can't change the WAL format
    there, so fix in master only. Reading a few random extra bytes at the stack
    is harmless in practice, so it's not worth crafting a different
    back-patchable fix.
    
    Per reports from Kevin Grittner and Andres Freund, using clang static
    analyzer and Valgrind, respectively.
    8776faa8
spgvacuum.c 26.9 KB