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 / 9.4 / 9.3 / 9.2
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ế.

52.4. Kế kèo bóng đá pháp truy vấn bao bọc dữ liệu nước ngoài

Các chức năng gọi lại FDWgetforeignrelsize, GetforignPaths, Getforeignplanplanforignmodifyphả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 trongrootBaserel9491_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đếnGetForignPathsvà/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ởiNodetostring, để sử dụng với hỗ trợ gỡ lỗi Có sẵn trong phần phụ trợ.

Getforeignplancó thể kiểm traFDW_PrivateTrường của đã chọnForeignPathnút và có thể tạoFDW_EXPRSFDW_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ứcCopyObjectbiế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_clauses13021_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 đógetforeignplansẽ 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, planforeignmodifyCó 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ởiplanforeignmodifycó 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 đóCopyObjectbiế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