Chương này giải thích giao diện giữa lõiPostgreSQLSystem vàPhương pháp kèo bóng đá euro bảng, quản lý lưu trữ cho các bảng. Hệ thống cốt lõi biết rất ít về các phương thức kèo bóng đá euro này ngoài những gì được chỉ định ở đây, vì vậy có thể phát triển các loại phương thức kèo bóng đá euro hoàn toàn mới bằng cách viết mã bổ trợ.
mỗi phương thức kèo bóng đá euro bảng được mô tả bởi một hàng trongpg_am
Danh mục hệ thống. Thepg_am
Mục nhập Chỉ định tên và AChức năng xử lýĐối với phương thức kèo bóng đá euro bảng. Các mục này có thể được tạo và xóa bằng cách sử dụngPostgreSQL: Tài liệu: 18: Tạo kèovàPhương thức kèo bóng đá euro thảCác lệnh SQL.
Hàm xử lý phương thức kèo bóng đá euro bảng phải được khai báo để chấp nhận một đối số duy nhất loạiNội bộ
và để trả về loại giả. Đối số là một giá trị giả chỉ cần phục vụ để ngăn các hàm xử lý được gọi trực tiếp từ các lệnh SQL.
Đây là cách một tệp tập lệnh SQL mở rộng có thể tạo một bộ xử lý phương thức kèo bóng đá euro bảng:
Tạo hoặc thay thế hàm my_tableam_handler (nội bộ)
Kết quả của hàm phải là con trỏ tới một cấu trúc loạiTableamRoutine
, chứa mọi thứ mà mã cốt lõi cần biết để sử dụng phương thức kèo bóng đá euro bảng. Giá trị trả về cần phải có tuổi thọ của máy chủ, thường đạt được bằng cách xác định nó làconst static
Biến trong phạm vi toàn cầu.
Đây là cách một tệp nguồn với trình xử lý phương thức kèo bóng đá euro bảng có thể trông giống như:
#include "Postgres.h"
TheTableamRoutine
struct, còn được gọi là phương thức kèo bóng đá euroAPI Struct, Xác định hành vi của phương thức kèo bóng đá euro bằng cách sử dụng các cuộc gọi lại. Các cuộc gọi lại này là gợi ý cho các hàm C đơn giản và không thể nhìn thấy hoặc được gọi ở cấp SQL.TableamRoutine
Cấu trúc (với các nhận xét bên trong cấu trúc xác định các yêu cầu cho các cuộc gọi lại). Hầu hết các cuộc gọi lại đều có chức năng trình bao bọc, được ghi lại từ quan điểm của người dùng (chứ không phải là người triển khai) của phương thức kèo bóng đá euro bảng.src/bao gồm/kèo bóng đá euro/tableam.h
Tệp.
Để thực hiện phương thức kèo bóng đá euro, người triển khai thường sẽ cần thực hiệnAMSRC/bao gồm/Executor/Tuptable.h
), cho phép mã bên ngoài phương thức kèo bóng đá euro để giữ các tham chiếu đến các bộ dữ liệu của AM và để kèo bóng đá euro các cột của tuple.
Hiện tại, cách một AM thực sự lưu trữ dữ liệu khá không bị ràng buộc. Ví dụ, có thể, nhưng không bắt buộc, để sử dụng bộ đệm bộ đệm chung của Postgres.PostgreSQLBố cục trang tiêu chuẩn như được mô tả trongPhần 66.6.
Một ràng buộc khá lớn của API phương thức kèo bóng đá euro bảng là, hiện tại, nếu AM muốn hỗ trợ sửa đổi và/hoặc chỉ mục, thì cần phải có một mã định danh tuple (TID) bao gồm số khối và số mục (xem thêmPhần 66.6). Không hoàn toàn cần thiết mà các phần phụ củaTIDSCó cùng ý nghĩa họ, ví dụ, có choHeap
, nhưng nếu hỗ trợ quét bitmap (đó là tùy chọn), số khối cần cung cấp địa kèo bóng đá euro.
Đối với an toàn sự cố, AM có thể sử dụng Postgres 'Walhoặc triển khai tùy chỉnh. Nếu nhưWalđược chọn,Generic Wal Recordscó thể được sử dụng hoặc APostgresql: Tài liệu: 18: 64.2. Người quảncó thể được triển khai.
Để thực hiện hỗ trợ giao dịch theo cách cho phép kèo bóng đá euro các phương thức kèo bóng đá euro bảng khác nhau trong một giao dịch, có khả năng cần phải tích hợp chặt chẽ với máy móc trongsrc/phụ trợ/kèo bóng đá euro/transam/xlog.c
.
Bất kỳ nhà phát triển nào của một người mớiPhương thức kèo bóng đá euro bảng
có thể tham khảo hiện tạiHeap
Triển khai hiện tại trongSRC/phụ trợ/kèo bóng đá euro/heap/heapam_handler.c
Để biết chi tiết về việc triển khai của nó.