Re: Potential ABI breakage in upcoming minor releases
Noah Misch <noah@leadboat.com>
From: Noah Misch <noah@leadboat.com>
To: Pavan Deolasee <pavan.deolasee@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Aleksander Alekseev <aleksander@timescale.com>, pgsql-hackers <pgsql-hackers@postgresql.org>, Marco Slot <marco.slot@gmail.com>, Alvaro Herrera <alvherre@alvh.no-ip.org>, Christoph Berg <myon@debian.org>
Date: 2024-11-15T19:03:41Z
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
On Sat, Nov 16, 2024 at 12:10:06AM +0530, Pavan Deolasee wrote: > On Fri, Nov 15, 2024 at 11:39 PM Pavan Deolasee <pavan.deolasee@gmail.com> wrote: > > Looking more carefully at the usage of `ResultRelInfo` in the PGD code, I > > think we might also be impacted by it. At one place, we loop through the > > `es_result_relations` array and a size mismatch there will cause problems. > > Interestingly, in v14 and above, we read from `es_opened_result_relations`, > > which is a List, so it should be safe. I will try some tests on v13 to see > > if they result in crashes. But it seems quite likely by reading the code. > > > Ah, the addition of a member to `ResultRelInfo` did not happen in v12 and > v13, even though the commit was backpatched all the way to v12. Maybe we True. > (PGD) got twice lucky :-) There could be other extensions which might be > looping through `es_result_relations` though and get impacted. Like you say, trouble with es_result_relations would be a v12/v13 phenomenon, and v12/v13 ABI didn't change. If the v12/v13 ABI had changed here, that would have moved pg_pathman from the "rebuild if using asserts" category to the "rebuild unconditionally" category, due to this code: pg_pathman:: estate->es_num_result_relations * sizeof(ResultRelInfo)); pg_pathman:: estate->es_result_relations[estate->es_num_result_relations] = *rri; pg_pathman:: if (result_rels_allocated <= estate->es_num_result_relations) pg_pathman:: return estate->es_num_result_relations++; Since the v12/v13 ABI didn't change, pg_pathman remains in the "rebuild if using asserts" category.