Почему расширения PostgreSQL нужно собирать под конкретные major-версии?
Мажорные релизы PostgreSQL намеренно изменяют внутренние структуры, сигнатуры функций и layout памяти в заголовочных файлах. Это приводит к изменениям существующего ABI (application binary interface).
Расширения PostgreSQL зависят от стабильного ABI для бинарной совместимости с самим Postgres.
Обычно PostgreSQL старается сохранять совместимость расширений между минорными версиями. Это означает, что расширение, собранное под PostgreSQL 18.1, должно работать на 18.2. Однако это не всегда гарантируется.
Нюансы гарантий ABI в PostgreSQL оказались достаточно обсуждаемой темой, из-за чего в июле 2024 года появилась новая документация по этому вопросу: https://postgresql.org/docs/current/xfunc-c.html#XFUNC-API-ABI-STABILITY-GUIDANCE
Существенное изменение структуры произошло даже в минорном релизе 17.1, что даёт представление о том, как опытные разработчики расширений справляются с интеграцией PostgreSQL: https://x.com/marcoslot/status/1857403646134153438
👉 @SQLPortal
Post #1767
1.25K