• Tom Lane's avatar
    In pageinspect/hashfuncs.c, avoid crashes on alignment-picky machines. · 14e9b18f
    Tom Lane authored
    On machines with MAXALIGN = 8, the payload of a bytea is not maxaligned,
    since it will start 4 bytes into a palloc'd value.  On alignment-picky
    hardware, this will cause failures in accesses to 8-byte-wide values
    within the page.  We already encountered this problem when we introduced
    GIN index inspection functions, and fixed it in commit 84ad68d6.  Make
    use of the same function for hash indexes.
    
    A small difficulty is that up to now contrib/pageinspect has not shared
    any functions at all across files.  To support that, introduce a common
    header file "pageinspect.h" for the module.
    
    Also, move get_page_from_raw() out of ginfuncs.c, where it didn't
    especially belong, and put it in rawpage.c which seems a more natural home.
    
    Per buildfarm.
    
    Discussion: https://postgr.es/m/17311.1486134714@sss.pgh.pa.us
    14e9b18f
heapfuncs.c 12.2 KB