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 cách đọc kèo bóng đá 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ế.

53.4. Kế cách đọc kèo bóng đá 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ủaPostgreSQLNgười lập kế cách đọc kèo bóng đá. Đây là một số ghi chú về những gì họ phải làm.

Thông tin trongrootBaserelCó thể được sử dụng để giảm lượng thông tin phải được tìm nạp từ Bàn nước cách đọc kèo bóng đá (và do đó giảm chi phí).baserel- baserestrictinfođặc biệ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 các hàng để được tìm nạp. .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ỉ liệt kê các cột phải được phát ra bởiForeignScanKế cách đọc kèo bóng đá 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.

10232_10450

baserel- fdw_privatelà mộtvoidCon trỏ có sẵn cho các chức năng lập kế cách đọc kèo bóng đá FDW để lưu trữ thông tin có liên quan đến bảng nước ngoài cụ thể. Người lập kế cách đọc kèo bóng đá cốt lõi không chạm vào nó ngoại trừ để khởi tạo nó thành NULL khiBaserel10761_10831getforeignrelsizeđếnvà/hoặcGetforignPathsđếngetforignplan, do đó tránh được tính toán lại.

Có thể xác định ý nghĩa của các đường dẫn cách đọc kèo bóng đá cập khác nhau bằng cách lưu trữ thông tin cá nhân trongFDW_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ì vì người lập kế cách đọc kèo bóng đá cốt lõi không chạm vào nó. Tuy nhiên, thực tiễn 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_EXPRS11902_11915Danh sách được đặt trongForeignScanKế cách đọc kèo bóng đá nút, nơi chúng sẽ có sẵn vào thời điểm thực thi. Cả hai danh sách này phải được biểu diễn trong một biểu mẫucopyObjectbiế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 phụ trợ cốt lõi 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 các cây biểu thức được dự định sẽ được thực hiện trong thời gian chạy. Những cây này sẽ trải qua quá trình xử lý hậu kế cách đọc kèo bóng đá để làm cho chúng hoàn toàn có thể thực thi được.

ingetforeignplan, Nói chung, danh sách mục tiêu được truyền có thể được sao chép vào nút kế cách đọc kèo bóng đá as-is. Đã quaScan_ClausesDanh sách chứa các mệnh đề giống nhưbaserel- baserestrictinfo, nhưng có thể được đặt hàng lại để có 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ừScan_ClausesDanh sách (sử dụngextract_actual_clauses) và đặt tất cả các điều khoản vào danh sách Qual của nút kế cách đọc kèo bóng đá, điều đó có nghĩa là tất cả các mệnh đề sẽ được kiểm tra bởi người thực thi trong thời gian chạy. Các FDW phức tạp hơn có thể có thể kiểm tra một số mệnh đề bên trong, trong trường hợp đó, các điều khoản đó có thể được xóa khỏi danh sách của nút Kế cách đọc kèo bóng đá để người thực thi không lãng phí thời gian để kiểm tra lại chúng.

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ủasub_expression. Việc xác định thực tế của một mệnh đề như vậy sẽ xảy ra trongGetForignPaths13845_13914FDW_PrivateTrường có thể sẽ bao gồm một con trỏ tới mệnh đề được xác địnhrestrictInfonút. Sau đóGetforeignplansẽ xóa mệnh đề đó khỏiScan_Clauses, nhưng thêmsub_expressionđếnFDW_EXPRSĐể đảm bảo rằng nó được xoa bóp thành hình thức thực thi. Nó cũng có thể sẽ đặt thông tin điều khiển vào nút của kế cách đọc kèo bóng đáFDW_PrivateTrường để cho biết các chức năng thực thi phải làm gì khi chạy. cách đọc kèo bóng đá đượ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ừ thời điểm đá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 chỉ phụ thuộc vào các điều khoản hạn chế của bảng. Trong các cách đọc kèo bóng đá tham gia, nó cũng có thể chọn xây dựng (các) đường dẫn phụ thuộc vào các mệnh đề tham gia, ví dụForeign_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 trong 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 quan hệ khác được sử dụng trong (các) mệnh đề tham gia đã chọn với giá trị phù hợp làparam_info; sử dụngget_baserel_parampathinfoĐể tính toán giá trị đó. TRONGGetforeignplan, Thelocal_varablePhần của mệnh đề tham gia sẽ được thêm vàoFDW_EXPRS, và sau đó là 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ế thông thường.

Khi lập kế cách đọc kèo bóng đáCập nhậthoặcXóa, planforeignmodifycó thể tìm kiếmreloptinfoCấu trúc cho Bàn nước cách đọc kèo bóng đá và sử dụngbaserel- fdw_private16133_16204ChènBảng đích không được quét nên không córeloptinfocho nó. TheListĐược trả về bởiplanforeignmodifycó các hạn chế tương tự nhưFDW_PrivateDanh sách AForeignScanKế cách đọc kèo bóng đá nút, nghĩa là nó chỉ chứa các cấu trúcCopyObjectbiết cách sao chép.

cho mộtCập nhậthoặcXóaChống lại nguồn dữ liệu bên cách đọc kèo bóng đá hỗ trợ cập nhật đồng thời, nên làForeignScanKhóa hoạt động Các hàng mà nó lấy, có lẽ thông qua tương đươngChọn để cập nhật. FDW cũng có thể chọn khóa các hàng vào thời điểm tìm kiếm khi bàn nước cách đọc kèo bóng đá được tham chiếu trongChọn để cập nhật/chia sẻ17132_17156để cập nhậthoặcđể chia sẻTùy chọn về cơ bản là không có sự tham gia nào cho đến khi có liên quan đến Bàn nước cách đọc kèo bóng đá. Hành vi này có thể mang lại ngữ nghĩa hơi khác so với các hoạt động trên các bảng cục bộ, trong đó khóa hàng bị trì hoãn thông thường càng lâu càng tốt: các hàng từ xa có thể bị khóa mặc dù sau đó chúng không bị hạn chế áp dụng cục bộ hoặc điều kiện tham gia. Tuy nhiên, việc khớp chính xác về ngữ nghĩa cục bộ sẽ yêu cầu truy cập từ xa bổ sung cho mỗi hàng và dù sao cũng có thể là không thể tùy thuộc vào ngữ nghĩa khóa mà nguồn dữ liệu bên cách đọc kèo bóng đá cung cấp.