Re: WIP: BRIN multi-range indexes
Tomas Vondra <tomas.vondra@enterprisedb.com>
From: Tomas Vondra <tomas.vondra@enterprisedb.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: John Naylor <john.naylor@enterprisedb.com>,
Alvaro Herrera <alvherre@alvh.no-ip.org>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2021-03-26T15:54:49Z
Lists: pgsql-hackers
On 3/26/21 3:45 PM, Tomas Vondra wrote: > On 3/26/21 3:04 PM, Tomas Vondra wrote: >> On 3/26/21 2:55 PM, Tom Lane wrote: >>> Tomas Vondra <tomas.vondra@enterprisedb.com> writes: >>>> I recall seeing "bus error" on sparc with other patches because of >>>> alignment issues, so I wonder if this is what's happening here. >>> >>> Try compiling with the address sanitizer enabled. Per c.h, >>> >>> * Testing can be done with "-fsanitize=alignment -fsanitize-trap=alignment" >>> * on clang, or "-fsanitize=alignment -fno-sanitize-recover=alignment" on gcc. >>> >> >> Bingo! I see the one failing x86_64 machine has -fsanitize=alignment. >> > > Yeah, the deserialization is borked. It assumes it can just point into > the serialized representation of the summary, but that is "compacted" by > ignoring alignment. Hence the failures. For me it fails only for timetz > and interval types, but perhaps sparc is more sensitive, or maybe it's > about 32/64 bits too (the only backtrace I'm aware of is from snapper, > so assuming it's 32bits it'd make sense it fails on int8). > > I have a feeling I made the same mistake in serialization of MCV stats > some time ago, shame on me. I'll get this fixed. > I've pushed a fix, ensuring proper alignment. There was a second issue that'd affect big endian systems, so I fixed that too. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Commits
-
BRIN minmax-multi indexes
- ab596105b55f 14.0 landed
-
BRIN bloom indexes
- 77b88cd1bb90 14.0 landed
-
Support the old signature of BRIN consistent function
- a681e3c107aa 14.0 landed
-
Remove unnecessary pg_amproc BRIN minmax entries
- a68dfa27d42f 14.0 landed
-
Optimize allocations in bringetbitmap
- 8e4b332e88b8 14.0 landed
-
Move IS [NOT] NULL handling from BRIN support functions
- 72ccf55cb99c 14.0 landed
-
Pass all scan keys to BRIN consistent function at once
- a1c649d889bd 14.0 landed
-
Properly detoast data in brin_form_tuple
- d2d3a4bd33d2 9.5.24 landed
- bae31e75f777 9.6.20 landed
- 0b96fc977c5b 10.15 landed
- 895d0f0e8218 11.10 landed
- 8149e9f9a0d6 12.5 landed
- 6a7b55f3716f 13.1 landed
- 7577dd84807a 14.0 landed