Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

58.2. Tạo gói kèo bóng đá hom nay

kèo bóng đá hom nay được biểu diễn trong cây kế hoạch hoàn thành bằng cấu trúc sau:

Typedef Struct CustomScan

    kèo bóng đá hom nay kèo bóng đá hom nay;
    Cờ Uint32;
    Danh sách *Custom_plans;
    Danh sách *Custom_exprs;
    Danh sách *Custom_Private;
    Danh sách *Custom_scan_tlist;
    Bitmapset *Custom_Relids;
    Phương thức CustomScanMethods *;
 CustomScan;

SCANphải được khởi tạo như đối với bất kỳ lần kèo bóng đá hom nay nào khác, bao gồm chi phí ước tính, danh sách mục tiêu, trình độ, v.v.cờlà một chút mặt nạ có cùng ý nghĩa như trongCustomPath. custom_planscó thể được sử dụng để lưu trữ conkế hoạchnút.Custom_exprsnên được sử dụng để lưu trữ các cây biểu thức sẽ cần được sửa lên bởi9753_9764SUMSELECT.C, trong khicustom_privatenên được sử dụng để lưu trữ dữ liệu riêng tư khác chỉ được sử dụng bởi chính nhà cung cấp kèo bóng đá hom nay.custom_scan_tlistcó thể là nil khi quét quan hệ cơ sở, cho biết rằng kèo bóng đá hom nay trả về các bộ dữ liệu khớp phù hợp với loại hàng của quan hệ cơ sở. Nếu không thì đó là danh sách đích mô tả các bộ dữ liệu quét thực tế.custom_scan_tlistphải được cung cấp cho các lần nối và có thể được cung cấp cho quét nếu nhà cung cấp kèo bóng đá hom nay có thể tính toán một số biểu thức không var.custom_relidsđược đặt bởi mã lõi thành tập hợp các mối quan hệ (chỉ mục bảng phạm vi) mà xử lý nút kèo bóng đá hom nay này; Ngoại trừ khi lần kèo bóng đá hom nay này thay thế tham gia, nó sẽ chỉ có một thành viên.Phương pháp10655_10792

Khi ACustomScankèo bóng đá hom nay một quan hệ duy nhất,Scan.scanrelidphải là chỉ số bảng phạm vi của bảng được kèo bóng đá hom nay. Khi nó thay thế một lần tham gia,Scan.scanrelidnên bằng không.

Cây kế hoạch phải có thể được nhân đôi bằng cách sử dụngCopyObject, vì vậy tất cả các dữ liệu được lưu trữ trongMạnhkèo bóng đá hom nayCác trường phải bao gồm các nút mà hàm đó có thể xử lý. Hơn nữa, các nhà cung cấp kèo bóng đá hom nay không thể thay thế một cấu trúc lớn hơn nhúngCustomScanĐối với chính cấu trúc, theo khả năng của mộtCustomPathhoặcCustomScanstate.

58.2.1. Cuộc gọi lại kế hoạch kèo bóng đá hom nay

Node *( *CreatEcustomScanState) (CustomScan *CSCAN);

Phân bổ ACustomScanstatecho điều nàyCustomScan. Phân bổ thực tế thường sẽ lớn hơn yêu cầu đối với thông thườngCustomScanState12095_12234Phương phápĐặt một cách thích hợp, nhưng các trường khác nên được để lại dưới dạng 0 ở giai đoạn này; sau đóExecItCustomScanThực hiện khởi tạo cơ bản,BeginCustomScan12484_12584