Trang chủ Bài viết Cơ sở dữ liệu Postgres 18.7 phá vỡ tương thích ABI lần nữa
Cơ sở dữ liệu 13/11/2026 1 lượt xem

Postgres 18.7 phá vỡ tương thích ABI lần nữa

Postgres 18.7 phá vỡ tương thích ABI lần nữa

Postgres 18.7 vừa gây ra một đợt phá vỡ tương thích ABI, dù cộng đồng Postgres luôn nỗ lực tránh điều này. Lý do là bản cập nhật nhỏ lần này chứa nhiều bản vá bảo mật, trong đó có CVE-2026-6460, và một trong các thay đổi buộc phải điều chỉnh cách xử lý dữ liệu phức hợp ở tầng ABI.

Vì sao ABI quan trọng với Postgres

Tính ổn định API/ABI từ lâu là chủ đề được bàn luận nhiều trong hệ sinh thái Postgres. Cơ chế extension API của Postgres là nền tảng cho một hệ sinh thái phong phú, và cách thiết kế "lõi chậm, phần rìa nhanh" được xem là hợp lý. Tài liệu chính thức của Postgres có hướng dẫn về ổn định API/ABI, và đã có nhiều bài viết trước đây về các lần phá vỡ ABI, chẳng hạn vụ Postgres 17.1.

Thay đổi trong 18.7

Ghi chú phát hành của 18.7 nêu rõ ngay ở gạch đầu dòng đầu tiên: bản cập nhật bổ sung logic phiên bản để phát hiện các composite datum không khớp với tuple descriptor dùng để diễn giải chúng. Để được bảo vệ đầy đủ, thay đổi này yêu cầu biên dịch lại các extension viết bằng C, và một số extension sẽ cần sửa mã nguồn. Nếu cần, tham số máy chủ mới `composite_type_mismatch` có thể tắt các kiểm tra này, nhưng làm vậy sẽ kèm rủi ro bảo mật.

Hệ quả với người dùng

Điều này gây khó chịu cho người dùng Postgres: các extension được đóng gói và phân phối riêng, nên phải được nâng cấp đúng nhịp với bản vá nhỏ của Postgres. Hệ quả đáng lo là 18.7 có các bản vá CVE quan trọng, nhưng người dùng extension không thể lên 18.7 để nhận các bản vá đó cho đến khi extension của họ cũng được cập nhật và phát hành phiên bản mới.

Tác giả bài viết, người đang làm nhiều việc với extension cho CloudNativePG trên Kubernetes, cho biết nhiều pipeline build của mình đã hỏng trong ngày vì các cập nhật không diễn ra đồng bộ. Ví dụ, các extension AGE, credcheck và pg_cron đã phát hành phiên bản mới nhưng hoàn toàn không chạy trên Postgres 18.6. Việc chỉnh pipeline để mọi thứ cập nhật cùng nhịp có thể mất vài ngày để các bản cập nhật lõi và extension lan qua các kênh build khác nhau.

Lời khuyên

Người dùng Postgres nên xử lý bản cập nhật nhỏ này cẩn thận: cập nhật extension và database cùng lúc để tránh gián đoạn.

Nguồn: Planet PostgreSQL

Trích nguồn từ: Planet PostgreSQL

Chia sẻ:

Bài viết liên quan

Zalo