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
Tags:
Bài viết liên quan
PostgreSQL ra mắt loạt bản vá tháng 11/2026: cập nhật máy chủ và tiện ích mở rộng cùng lúc
PostgreSQL 18.7, 17.12, 16.16, 15.20 và 14.25 được phát hành với bản vá CVE-2026-6460, buộc phải cập nhật máy chủ và toàn bộ tiện ích mở rộng trong cùng một giao dịch trên các kho RPM của PGDG.
Đọc thêm
Tìm kiếm vector PostgreSQL với pgvector và hybrid search trong Next.js
Hướng dẫn xây dựng tìm kiếm kết hợp từ khóa và vector trong PostgreSQL bằng pgvector, kết nối với Next.js Route Handler, áp dụng RLS theo tenant và đo độ chính xác của chỉ mục HNSW khi có bộ lọc.
Đọc thêm
B-tree trong PostgreSQL: trang chỉ mục có thứ tự và thưa dần sau VACUUM
Bài viết của Radim Marek mổ xẻ cấu trúc trang B-tree trong PostgreSQL: khác với heap page, trang chỉ mục được sắp xếp, liên kết với trang anh em và VACUUM không thể thu hồi không gian bên trong trang lá.
Đọc thêmCùng truy vấn, cùng index nhưng hiệu năng khác nhau khi chuyển PostgreSQL lên Azure
Câu chuyện khách hàng chuyển PostgreSQL lên Azure gặp truy vấn chậm gấp hàng chục lần dù vẫn dùng index scan, nguyên nhân nằm ở cách dữ liệu được sắp xếp trên đĩa chứ không phải index hay storage.
Đọc thêm
json và jsonb trong PostgreSQL: đo kích thước và tốc độ thực tế
So sánh json và jsonb trên PostgreSQL 17 và 18 với sáu dạng tài liệu, cho thấy jsonb có thể nhỏ hơn 23% hoặc lớn hơn 41%, kèm tốc độ đọc và chỉ mục GIN.
Đọc thêmPostgreSQL có thực sự đang thắng? Bằng chứng vượt xa các bảng xếp hạng
Bài viết của Dave Stokes tổng hợp khảo sát người dùng, các thương vụ mua bán công ty PostgreSQL, sản phẩm của đối thủ và lựa chọn của AI agent để lập luận PostgreSQL đang dẫn đầu mảng cơ sở dữ liệu vận hành.
Đọc thêmPostgreSQL, NUMA và điện toán đám mây: những lưu ý khi chạy trong VM và container
Bài cuối trong loạt 4 phần về PostgreSQL và NUMA, tập trung vào thách thức khi chạy PostgreSQL trên máy ảo và container trong môi trường đám mây, kèm các khuyến nghị thực hành.
Đọc thêm
Nâng cấp PostgreSQL tại chỗ không downtime trên cụm phân tán
Ahsan Hadi hướng dẫn nâng cấp tại chỗ từng node PostgreSQL từ 17.10 lên 18.6 trên cụm Spock đa master, giữ ứng dụng luôn có endpoint ghi trong khi mỗi node tạm ngừng vài phút.
Đọc thêm
UUIDv4 và UUIDv7 trên Postgres: cái giá của khóa chính ngẫu nhiên
So sánh ba loại khóa chính trên Postgres 18 cho thấy UUIDv4 chèn chậm hơn khóa có thứ tự và ghi WAL nhiều hơn đáng kể ở mức 100 triệu dòng.
Đọc thêm
Ilya Kosmodemiansky bàn về file cấu hình postgresql.conf "mặc định"
Bài đầu tiên trong loạt bốn phần của Ilya Kosmodemiansky (Data Egret) về cách PostgreSQL đọc cấu hình và nhóm thiết lập kết nối, dựa trên bản PostgreSQL 18.
Đọc thêm