kèo bóng đá cúp c2 đượ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 đá cúp c2 kèo bóng đá cúp c2; 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;
Scan
phải được khởi tạo như đối với bất kỳ lần kèo bóng đá cúp c2 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_plans
có thể được sử dụng để lưu trữ conkế hoạch
nút.Custom_exprs
nê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ởisetrefs.c
vàSUMSELECT.C
, trong khicustom_private
nê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 đá cúp c2.Custom_scan_tlist
có thể là không khi quét mối quan hệ cơ sở, cho biết rằng kèo bóng đá cúp c2 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_tlist
Phả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 đá cúp c2 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 đá cúp c2 này; Ngoại trừ khi lần kèo bóng đá cúp c2 này thay thế tham gia, nó sẽ chỉ có một thành viên.Phương pháp
Phải trỏ đến đối tượng (thường được phân bổ tĩnh) Thực hiện các phương thức kèo bóng đá cúp c2 cần thiết, được chi tiết hơn dưới đây.
Khi ACustomScan
kèo bóng đá cúp c2 một quan hệ duy nhất,Scan.scanrelid
Phải là chỉ mục bảng phạm vi của bảng được kèo bóng đá cúp c2. Khi nó thay thế một lần tham gia,Scan.scanrelid
nê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ữ trongkèo bóng đá cúp c211381_11530CustomScan
Đối với chính cấu trúc, theo khả năng củaCustomPath
hoặc11695_11712
.
Node *( *createCustomScanState) (CustomScan *CSCAN);
Phân bổ ACustomScanstate
cho đ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ườngCustomScanstate
, bởi vì nhiều nhà cung cấp sẽ muốn nhúng đó là trường đầu tiên của một cấu trúc lớn hơn. Giá trị được trả về phải có thẻ nút vàPhươ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 đóExecItCustomScan
12582_12620BeginCustomScan
Callback sẽ được gọi để cung cấp cho nhà cung cấp kèo bóng đá cúp c2 cơ hội để làm bất cứ điều gì khác cần thiết.