Postgresql 9.3.25 Tài liệu | ||||
---|---|---|---|---|
prev | UP | Chương 52. Viết Một trình bao bọc dữ liệu kèo bóng đá pháp | Tiếp theo |
Các chức năng gọi lại FDWgetforeignrelsize
, GetforignPaths
, Getforeignplan
vàplanforignmodify
phải phù hợp với hoạt động của
ThePostgreSQLNgười lập kế kèo bóng đá pháp. Đây là
Một số ghi chú về những gì họ phải làm.
Thông tin trongrootvàBaserel9491_9621baserel- baserestrictinfolà đặc biệt Thật thú vị, vì nó chứa các câu hỏi hạn chế (WHEREmệnh đề) nên được sử dụng để lọc Hàng để được lấy. (Bản thân FDW không bắt buộc phải thực thi Những câu hỏi này, vì người thực thi cốt lõi có thể kiểm tra chúng thay thế.)baserel- reltargetListcó thể được sử dụng để Xác định cột nào cần được tìm nạp; Nhưng lưu ý rằng nó chỉ Danh sách các cột phải được phát ra bởiForeignScanKế kèo bóng đá pháp nút, không phải các cột được sử dụng Trong đánh giá chất lượng nhưng không phải đầu ra bởi truy vấn.
Các lĩnh vực riêng khác nhau có sẵn cho kế kèo bóng đá pháp FDW các chức năng để giữ thông tin. Nói chung, bất cứ điều gì bạn lưu trữ Các lĩnh vực riêng của FDW nên được palloc'd, để nó được đòi lại khi kết thúc kế kèo bóng đá pháp.
baserel- fdw_privatelà mộtvoidCon trỏ có sẵn để lập kế kèo bóng đá pháp FDW
các chức năng lưu trữ thông tin liên quan đến nước ngoài cụ thể
bàn. Người lập kế kèo bóng đá pháp cốt lõi không chạm vào nó ngoại trừ để khởi tạo nó
để null khiBaserel10774_10844getforeignrelsize
đếnGetForignPaths
và/hoặcgetforeignpaths
đếnGetforeignplan
, do đó tránh được
tính toán lại.
Có thể xác định
ý nghĩa của các đường dẫn kèo bóng đá pháp cập khác nhau bằng cách lưu trữ thông tin cá nhân trong
Thefdw_privatetrường củaForeigyPathnút.FDW_Privateđược khai báo làDanh sáchCon trỏ, nhưng thực sự có thể chứa bất cứ thứ gì kể từ khi
Người lập kế kèo bóng đá pháp cốt lõi không chạm vào nó. Tuy nhiên, thực hành tốt nhất là
Sử dụng một đại diện có thể giảm được bởi
Nodetostring
, để sử dụng với hỗ trợ gỡ lỗi
Có sẵn trong phần phụ trợ.
Getforeignplan
có thể kiểm traFDW_PrivateTrường của đã chọnForeignPathnút và có thể tạoFDW_EXPRSvàFDW_PrivateDanh sách được đặt trongForeignScanKế kèo bóng đá pháp nút, nơi chúng sẽ ở
Có sẵn tại thời điểm thực hiện. Cả hai danh sách này phải là
được đại diện trong một hình thứcCopyObject
biết cách sao chép. Thefdw_privateDanh sách không có hạn chế nào khác và không được giải thích bởi cốt lõi
phụ trợ theo bất kỳ cách nào. TheFDW_EXPRSDanh sách, nếu không phải là NIL, dự kiến sẽ chứa những cây biểu thức
dự định sẽ được thực hiện tại thời gian chạy. Những cây này sẽ trải qua
xử lý hậu kế kèo bóng đá pháp để làm cho chúng hoàn toàn có thể thực thi được.
ingetforeignplan
, Nói chung là
Danh sách mục tiêu được thông qua có thể được sao chép vào nút AS-IS. Các
Danh sách Scan_Clauses đã thông qua chứa các mệnh đề giống nhưbaserel- baserestrictinfo, nhưng có thể được đặt hàng lại
Để hiệu quả thực hiện tốt hơn. Trong những trường hợp đơn giản, FDW chỉ có thể
dảirestrictInfoCác nút từ
Danh sách scan_clauses (sử dụngextract_actual_clauses
13021_13360
Ví dụ, FDW có thể xác định một số mệnh đề hạn chế
của biểu mẫuForeign_Varable
= sub_expression, mà nó xác định có thể
được thực thi trên máy chủ từ xa với giá trị được đánh giá cục bộ của
Thesub_expression. Thực tế
Việc xác định một mệnh đề như vậy sẽ xảy ra trongGetforignPaths
, vì nó sẽ ảnh hưởng đến chi phí
Ước tính cho đường dẫn. Đường dẫnFDW_Privatetrường có thể sẽ bao gồm một
con trỏ tới mệnh đề đã xác địnhrestrictInfoNode. Sau đógetforeignplan
sẽ xóa điều khoản đó khỏi
scan_clauses, nhưng thêmsub_expressionđếnFDW_EXPRSĐể đảm bảo rằng nó được xoa bóp vào
hình thức thực thi. Nó có thể cũng sẽ đặt thông tin kiểm soát
vào nút kế kèo bóng đá phápFDW_PrivateTrường
Để nói các chức năng thực thi phải làm gì trong thời gian chạy. kèo bóng đá pháp
được truyền đến máy chủ từ xa sẽ liên quan đến một cái gì đó nhưWHEREForeign_Varable= $ 1, với
giá trị tham số thu được khi chạy từ việc đánh giáFDW_EXPRSCây biểu thức.
FDW phải luôn luôn xây dựng ít nhất một đường dẫn phụ thuộc
Chỉ trên các điều khoản hạn chế của bàn. Trong các kèo bóng đá pháp tham gia, nó có thể
cũng chọn cách xây dựng (các) đường dẫn phụ thuộc vào các mệnh đề tham gia
ví dụFRIANTER_VARABLE = local_varable.
Những điều khoản như vậy sẽ không được tìm thấy trongbaserel- baserestrictinfonhưng phải được tìm kiếm
Danh sách tham gia của mối quan hệ. Một đường dẫn sử dụng mệnh đề như vậy được gọi là"Đường dẫn được tham số hóa". Nó phải xác định
các mối quan hệ khác được sử dụng trong (các) mệnh đề tham gia đã chọn với một
Giá trị phù hợp củaparam_info; sử dụngget_baserel_parampathinfo
để tính toán
giá trị đó. TRONGgetforeignplan
, Thelocal_varablePhần của sự tham gia
mệnh đề sẽ được thêm vàoFDW_EXPRS,,
và sau đó trong thời gian chạy, trường hợp hoạt động giống như đối với một
mệnh đề hạn chế.
Khi lập kế kèo bóng đá phápCập nhậthoặcXóa, planforeignmodify
Có thể tra cứureloptinfoCấu trúc cho Bàn kèo bóng đá pháp và làm
Sử dụngbaserel- fdw_privateDữ liệu
trước đây được tạo bởi các chức năng lập kế kèo bóng đá pháp quét. Tuy nhiên, trongChènBảng đích không được quét như vậy
Không córeloptinfocho nó. TheDanh sáchĐược trả về bởiplanforeignmodify
có những hạn chế tương tự như
TheFDW_PrivateDanh sách AForeignScanKế kèo bóng đá pháp nút, nghĩa là nó phải chứa
Chỉ các cấu trúc đóCopyObject
biết
Cách sao chép.
cho mộtCập nhậthoặcXóaChống lại nguồn dữ liệu bên kèo bóng đá pháp hỗ trợ Cập nhật đồng thời, khuyến nghị rằngForeignScanKhóa hoạt động Các hàng mà nó lấy, có lẽ thông qua tương đươngChọn cho CẬP NHẬT16956_17053Chọn để cập nhật/chia sẻ; Nếu nó không,để cập nhậthoặccho CHIA SẺ17195_17732