pgsql: Fix alignment in BRIN minmax-multi deserialization

From: Tomas Vondra <tomas(dot)vondra(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix alignment in BRIN minmax-multi deserialization
Date: 2021-03-26 15:53:38
Message-ID: E1lPomI-0000CO-Mn@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix alignment in BRIN minmax-multi deserialization

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

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/73b96bad4af8fd113a36e4633dd3312001c115dc

Modified Files
--------------
src/backend/access/brin/brin_minmax_multi.c | 87 ++++++++++++++++++++++++-----
1 file changed, 74 insertions(+), 13 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Noah Misch 2021-03-26 18:00:22 pgsql: Add "pg_database_owner" default role.
Previous Message Tomas Vondra 2021-03-26 12:54:56 pgsql: BRIN minmax-multi indexes