| From: | Peter Eisentraut <peter(at)eisentraut(dot)org> |
|---|---|
| To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
| Cc: | Ewan Young <kdbase(dot)hack(at)gmail(dot)com>, Heikki Linnakangas <hlinnaka(at)iki(dot)fi>, 1217816127(at)qq(dot)com, pgsql-bugs(at)lists(dot)postgresql(dot)org |
| Subject: | Re: BUG #19545: Integer truncation of `GinTuple.keylen` causes out-of-bounds read in parallel GIN index build |
| Date: | 2026-09-18 14:37:21 |
| Message-ID: | 865b7bb1-d75b-4c6b-accb-010f93241ace@eisentraut.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-bugs |
On 18.09.26 04:07, Tom Lane wrote:
> Peter Eisentraut <peter(at)eisentraut(dot)org> writes:
>> I have committed these, thanks.
>
> The ABI-compliance-checking buildfarm animals have all been unhappy
> since this went in:
>
> 'struct GinTuple' changed:
> type size changed from 16 to 24 (in bytes)
> 1 data member deletion:
> 'uint16 keylen', at offset 6 (in bytes)
> 1 data member insertion:
> 'union {Size keylen; double force_align_d; int64 force_align_i64;} u', at offset 8 (in bytes)
> there are data member changes:
> 'int16 typlen' offset changed from 8 to 16 (in bytes) (by +8 bytes)
> 'bool typbyval' offset changed from 10 to 18 (in bytes) (by +8 bytes)
> 'signed char category' offset changed from 11 to 19 (in bytes) (by +8 bytes)
> 'int nitems' offset changed from 12 to 20 (in bytes) (by +8 bytes)
> 'char data[]' offset changed from 16 to 24 (in bytes) (by +8 bytes)
>
> Is it really okay to change this struct in v18?
> If so, the .abi-compliance-history files need to be updated.
Yes, I think this is okay. The type is effectively for internal use
only and is only used transiently. I will add the
.abi-compliance-history entry.
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2026-09-18 14:43:42 | Re: BUG #19694: MIN()/MAX() fails with "more than one row returned by a subquery" under FETCH FIRST ... WITH TIES |
| Previous Message | Dean Rasheed | 2026-09-18 13:08:37 | Re: wrong results: merge when not matched by source |