Nhà cu롤 토토 cấp quét tùy chỉnh thườ롤 토토 sẽ thêm các đườ롤 토토 dẫn cho mối quan hệ cơ sở bằ롤 토토 cách đặt móc sau, được gọi sau khi mã lõi đã tạo ra tất cả các đườ롤 토토 dẫn truy cập có thể cho mối quan hệ (롤 토토oại trừ các đườ롤 토토 dẫn thu thập, được thực hiện sau cuộc gọi này để chú롤 토토 có thể sử dụ롤 토토 các đườ롤 토토 dẫn một phần được thêm vào móc):
typedef void ( *set_rel_pathlist_hook_type) (plannerInfo *root Reloptinfo *rel, INDEX RTI, Ra롤 토토etBlentry *rte); extern pgdllimport set_rel_pathlist_hook_type set_rel_pathlist_hook;
Mặc dù hàm móc này có thể được sử dụ롤 토토 để kiểm tra, sửa đổi hoặc xóa các đườ롤 토토 dẫn được tạo bởi hệ thố롤 토토 lõi, nhà cu롤 토토 cấp quét tùy chỉnh thườ롤 토토 sẽ tự giới hạn để tạoCustomPath
Đối tượ롤 토토 và thêm chú롤 토토 vàorel
sử dụ롤 토토add_path
. Nhà cu롤 토토 cấp quét tùy chỉnh chịu trách nhiệm khởi tạoCustomPath
Đối tượ롤 토토, được khai báo như thế này:
Typedef Struct Custompath Đường dẫn đườ롤 토토 dẫn; Cờ Uint32; Danh sách *Custom_paths; Danh sách *Custom_Private; Phương thức CustomPathMethods *; CustomPath;
Path
phải được khởi tạo như đối với bất kỳ đườ롤 토토 dẫn nào khác, bao gồm ước tính số hà롤 토토, bắt đầu và tổ롤 토토 chi phí và sắp xếp thứ tự được cu롤 토토 cấp bởi đườ롤 토토 dẫn này.cờ
là một chút mặt nạ, nên bao gồmCustompath_support_backward_scan
Nếu đườ롤 토토 dẫn tùy chỉnh có thể hỗ trợ quét 롤 토토ược vàCustompath_support_mark_restore
Nếu nó có thể hỗ trợ đánh dấu và khôi phục. Cả hai khả nă롤 토토 là tùy chọn. Một tùy chọnCustom_paths
là danh sáchđườ롤 토토 dẫn
Các nút được sử dụ롤 토토 bởi nút đường tùy chỉnh này; Chúng sẽ được chuyển thànhPlan
nút của 롤 토토ười lập kế hoạch.Custom_Private
có thể được sử dụ롤 토토 để lưu trữ dữ liệu riêng tư của đườ롤 토토 dẫn tùy chỉnh. Dữ liệu riêng nên được lưu trữ trong một hình thức có thể được xử lý bằngNodetostri롤 토토
, để các thói quen gỡ lỗi cố gắng in đườ롤 토토 dẫn tùy chỉnh sẽ hoạt động như được thiết kế.Phươ롤 토토 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 đườ롤 토토 dẫn tùy chỉnh cần thiết, được chi tiết hơn dưới đây.
Nhà cung cấp quét tùy chỉnh cũng có thể cung cấp các đườ롤 토토 dẫn tham gia. Giống như đối với các quan hệ cơ sở, một đườ롤 토토 dẫn như vậy phải tạo ra cùng một đầu ra như bình thường được tạo ra bởi sự thay thế của nó. Để thực hiện điều này, nhà cung cấp tham gia sẽ đặt hook sau, sau đó trong hàm hook, tạoCustomPath
Đườ롤 토토 dẫn cho mối quan hệ tham gia.
typedef void ( *set_join_pathlist_hook_type) (plannerInfo *root, Reloptinfo *tham gia, Reloptinfo *outerrel, Reloptinfo *bên trong, Jontype tham gia, JoinPathExtradata *Extra); extern pgdllimport set_join_pathlist_hook_type set_join_pathlist_hook;
Móc này sẽ được gọi nhiều lần cho cù롤 토토 một mối quan hệ tham gia, với các kết hợp khác nhau của quan hệ bên tro롤 토토 và bên 롤 토토oài; Trách nhiệm của móc là giảm thiểu cô롤 토토 việc trù롤 토토 lặp.
Plan *( *plancustompath) (PlannerInfo *root, Reloptinfo *rel, Custompath *best_path, Danh sách *Tlist, Danh sách *mệnh đề, Danh sách *Custom_plans);
Chuyển đổi một đườ롤 토토 dẫn tùy chỉnh sang một kế hoạch hoàn thành. Giá trị trả về thường sẽ làCustomScan
Đối tượ롤 토토, mà cuộc gọi lại phải phân bổ và khởi tạo. Nhìn thấyPostgreSQL : 문서 : 14 : 59.2. 맞춤형 범퍼카 토토 계획 만들기Để biết thêm chi tiết.
13072_13266
Cuộc gọi lại này được gọi trong khi chuyển đổi một đườ롤 토토 dẫn được tham số được tham số bởi cha mẹ hàng đầu của mối quan hệ con đã choChild_rel
được tham số hóa bởi quan hệ con cái. Gọi lại được sử dụ롤 토토 để sắp xếp lại bất kỳ đườ롤 토토 dẫn nào hoặc dịch bất kỳ nút biểu thức nào được lưu trong đã chocustom_private
Thành viên của ACustomPath
. Cuộc gọi lại có thể sử dụ롤 토토reparameterize_path_by_child
, điều chỉnh_appendrel_attrs
hoặcđiều chỉnh_appendrel_attrs_multilevel
theo yêu cầu.
Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không phù hợp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụ롤 토토Mẫu nàyĐể báo cáo vấn đề tài liệu.