Re: Potential ABI breakage in upcoming minor releases
Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
From: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
To: Peter Geoghegan <pg@bowt.ie>
Cc: Alvaro Herrera <alvherre@alvh.no-ip.org>, Pavan Deolasee <pavan.deolasee@gmail.com>, pgsql-hackers <pgsql-hackers@postgresql.org>, Noah Misch <noah@leadboat.com>, Tom Lane <tgl@sss.pgh.pa.us>
Date: 2024-11-15T09:18:50Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Undo unintentional ABI break in struct ResultRelInfo.
- ee33d58471de 16.6 landed
- 6bfacd368bb4 17.2 landed
- 17db248f318f 15.10 landed
- 099e711b77b8 14.15 landed
-
For inplace update durability, make heap_update() callers wait.
- 51ff46de29f6 16.5 cited
-
Fix btmarkpos/btrestrpos array key wraparound bug.
- 3fa81b62e09b 16.1 cited
-
Fix calculation of which GENERATED columns need to be updated.
- 8cd190e13a22 14.7 cited
Hi, On Thu, Nov 14, 2024 at 11:35:25AM -0500, Peter Geoghegan wrote: > On Thu, Nov 14, 2024 at 11:29 AM Alvaro Herrera <alvherre@alvh.no-ip.org> wrote: > > ISTM that we have spare bytes where we could place that boolean without > > breaking ABI. In x86_64 there's a couple of 4-byte holes, but those > > won't be there on x86, so not great candidates. Fortunately there are > > 3-byte and 7-byte holes also, which we can use safely. We can move the > > new boolean to those location. > > Wasn't this part of the official guidelines? Do you mean in [1] (Maintaining ABI compatibility while backpatching section)? If so, it looks like it's not currently mentioned. What about? " You cannot modify any struct definition in src/include/*. If any new members must be added to a struct, put them in the padding holes (if any) in backbranches (or at the end of the struct if there is no padding holes available). " Also we may need a decision table to ensure 32-bit portability based on the hole size on 64-bit, something like? 64-bit hole size | use on 32-bit? -----------------|--------------- <=3 bytes | safe to use 4 bytes | don't use 5-7 bytes | use first (hole_size - 4) bytes only Does that make sense? Regards, [1]: https://wiki.postgresql.org/wiki/Committing_checklist -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com