• Tomas Vondra's avatar
    Fix alignment in BRIN minmax-multi deserialization · 73b96bad
    Tomas Vondra authored
    The deserialization failed to ensure correct alignment, as it assumed it
    can simply point into the serialized value. The serialization however
    ignores alignment and copies just the significant bytes in order to make
    the result as small as possible. This caused failures on systems that
    are sensitive to mialigned addresses, like sparc, or with address
    sanitizer enabled.
    
    Fixed by copying the serialized data to ensure proper alignment. While
    at it, fix an issue with serialization on big endian machines, using the
    same store_att_byval/fetch_att trick as extended statistics.
    
    Discussion: https://postgr.es/0c8c3304-d3dd-5e29-d5ac-b50589a23c8c%40enterprisedb.com
    73b96bad
brin_minmax_multi.c 84.7 KB