pgsql: In pageinspect/hashfuncs.c, avoid crashes on alignment-picky mac

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: In pageinspect/hashfuncs.c, avoid crashes on alignment-picky mac
Date: 2017-02-03 16:35:03
Message-ID: E1cZgpD-00072p-Ok@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

In pageinspect/hashfuncs.c, avoid crashes on alignment-picky machines.

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 84ad68d64. 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

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/14e9b18fed289e483ed28daec60fdab95da9cc48

Modified Files
--------------
contrib/pageinspect/brinfuncs.c | 2 ++
contrib/pageinspect/btreefuncs.c | 2 ++
contrib/pageinspect/fsmfuncs.c | 2 ++
contrib/pageinspect/ginfuncs.c | 22 ++--------------------
contrib/pageinspect/hashfuncs.c | 18 ++++--------------
contrib/pageinspect/heapfuncs.c | 2 ++
contrib/pageinspect/pageinspect.h | 21 +++++++++++++++++++++
contrib/pageinspect/rawpage.c | 38 ++++++++++++++++++++++++++++++++++++++
8 files changed, 73 insertions(+), 34 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Robert Haas 2017-02-03 16:35:14 Re: [COMMITTERS] pgsql: pageinspect: Try to fix some bugs in previous commit.
Previous Message Robert Haas 2017-02-03 16:18:07 Re: [COMMITTERS] pgsql: pageinspect: Try to fix some bugs in previous commit.