Phiên bản được hỗ trợ:hiện tại(17)16/15/14/13
Phiên bản phát triển:Devel
Phiên bản kèo bóng đá cúp c2 được hỗ trợ:12/11/10/9.6/9.5/9.4/9.3/9.2/9.1
Tài liệu này dành cho phiên bản không được hỗ trợ kèo bóng đá cúp c2 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 kèo bóng đá cúp c2 phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

55.2. kèo bóng đá cúp c2 thói quen gọi lại của Nước ngoài dữ liệu

Hàm người xử lý FDW trả về PalloC'dfdwroutineCấu trúc chứa kèo bóng đá cúp c2 con trỏ đến kèo bóng đá cúp c2 chức năng gọi lại được mô tả dưới đây. kèo bóng đá cúp c2 chức năng liên quan đến quét là bắt buộc, phần còn lại là tùy chọn.

ThefdwroutineLoại cấu trúc được khai báo trongsrc/bao gồm/nước kèo bóng đá cúp c2/fdwapi.h, xem để biết thêm chi tiết.

55.2.1. kèo bóng đá cúp c2 thói quen FDW để quét kèo bóng đá cúp c2 bảng nước ngoài

VOID

Lấy ước tính kích thước quan hệ cho một bảng nước kèo bóng đá cúp c2. Điều này được gọi là khi bắt đầu lập kế hoạch cho một truy vấn quét một bàn nước kèo bóng đá cúp c2.rootlà thông tin toàn cầu kèo bóng đá cúp c2 người lập kế hoạch về truy vấn;Baserellà thông tin kèo bóng đá cúp c2 người lập kế hoạch về bảng này; VàForeignTableIDpg_ classOID kèo bóng đá cúp c2 Bàn nước ngoài. (ForeignTableIDcó thể được lấy từ kèo bóng đá cúp c2 cấu trúc dữ liệu kế hoạch, nhưng nó được truyền rõ ràng để tiết kiệm nỗ lực.)

Hàm này sẽ cập nhậtbaserel- hànglà số lượng hàng dự kiến ​​được trả lại bằng cách quét bảng, sau khi tính toán cho việc lọc được thực hiện bởi kèo bóng đá cúp c2 câu hỏi hạn chế. Giá trị ban đầu củabaserel- hàngchỉ là một ước tính mặc định kèo bóng đá cúp c2 đổi, cần được thay thế nếu có thể. Chức năng cũng có thể chọn cập nhậtBaserel- WidthNếu nó có thể tính toán ước tính tốt hơn về chiều rộng hàng kết quả trung bình. .Phân tích.) kèo bóng đá cúp c2 ra, chức năng này có thể cập nhậtBaserel- TuplesNếu nó có thể tính toán ước tính tốt hơn về tổng số hàng kèo bóng đá cúp c2 Bàn nước ngoài. (Giá trị ban đầu là từpg_ class.Reltuplesđại diện cho tổng số hàng được nhìn thấy bởi lần cuốiPhân tích.)

xemPhần 55.4Để biết thêm thông tin.

Void

Tạo kèo bóng đá cúp c2 đường dẫn truy cập có thể để quét trên bàn nước ngoài. Điều này được gọi trong quá trình lập kế hoạch truy vấn.getforeignrelsize, đã được gọi.

Hàm này phải tạo ít nhất một đường dẫn truy cập (ForeignPathnút) để quét trên bàn nước kèo bóng đá cúp c2 và phải gọiadd_pathĐể thêm từng đường dẫn như vậy vàobaserel- pathlist. Nó được khuyến nghị sử dụngcreated_forignscan_pathĐể xây dựngForeigyPathnút. Hàm có thể tạo nhiều đường dẫn truy cập, ví dụ: đường dẫn có hợp lệPathkeysĐể thể hiện kết quả được sắp xếp trước. Mỗi đường dẫn truy cập phải chứa kèo bóng đá cúp c2 ước tính chi phí và có thể chứa bất kỳ thông tin đặc biệt nào cần thiết để xác định phương thức quét cụ thể dự định.

xemPhần 55.4Để biết thêm thông tin.

ForeignScan *

Tạo AForeignScanKế hoạch nút từ đường dẫn truy cập nước kèo bóng đá cúp c2 đã chọn. Điều này được gọi vào cuối kế hoạch truy vấn.getforeignrelsize, cộng với đã chọnForeignPath(trước đây được sản xuất bởiGetForignPaths,getforeignjoinpathshoặcGetforeignuppPaths), Danh sách mục tiêu được phát ra bởi nút kế hoạch, kèo bóng đá cúp c2 điều khoản hạn chế được thực thi bởi nút kế hoạch và kế hoạch con bên ngoài củaForeignScan, được sử dụng để kiểm tra lại được thực hiện bởiRecheckForignScan. (Nếu đường dẫn dành cho tham gia chứ kèo bóng đá cúp c2 phải là mối quan hệ cơ sở,ForeignTableIDkèo bóng đá cúp c2 hợp lệ.)

Hàm này phải tạo và trả về AForeignScanKế hoạch nút; nó được khuyến nghị sử dụngmake_forignscanĐể xây dựngForeignScanNode.

xemPhần 55.4Để biết thêm thông tin.

Void

Bắt đầu thực hiện quét nước kèo bóng đá cúp c2. Điều này được gọi trong quá trình khởi động thực thi.itaterforignscan). TheForeignScanStateNode đã được tạo, nhưng nóFDW_STATETrường vẫn còn vô hiệu. Thông tin về bảng để quét có thể truy cập được thông quaForeignScanStatenút (đặc biệt, từ bên dướiForeignScanKế hoạch nút, chứa bất kỳ thông tin FDW-Private nào được cung cấp bởiGetforeignplan).EFLAGSChứa kèo bóng đá cúp c2 bit cờ mô tả chế độ hoạt động của người thực thi cho nút kế hoạch này.

Lưu ý rằng khi(eflags & exec_flag_explain_only)là đúng, chức năng này kèo bóng đá cúp c2 nên thực hiện bất kỳ hành động nào có thể nhìn nhận được; nó chỉ nên làm tối thiểu cần thiết để làm cho trạng thái nút hợp lệ choGiải thích FormentIgnScanendforeignscan.

tupletableslot *

Lấy một hàng từ nguồn nước ngoài, trả lại trong khe cắm bảng Tuple (nút kèo bóng đá cúp c2 nút​​scantuplotlotnên được sử dụng cho mục đích này). Trả lại null nếu kèo bóng đá cúp c2 có nhiều hàng có sẵn.BeginForignScanNếu bạn cần lưu trữ lâu hơn hoặc sử dụngES_Query_CXTkèo bóng đá cúp c2 nútEstate.

kèo bóng đá cúp c2 hàng được trả về phải khớp vớifdw_scan_tlistDanh sách mục tiêu Nếu được cung cấp, nếu không, chúng phải khớp với loại hàng của bảng nước ngoài được quét. Nếu bạn chọn tối ưu hóa kèo bóng đá cúp c2 cột tìm nạp không cần thiết, bạn nên chèn kèo bóng đá cúp c2 null vào kèo bóng đá cúp c2 vị trí cột đó, hoặc nếu không sẽ tạo rafdw_scan_tlistLiệt kê với kèo bóng đá cúp c2 cột bị bỏ qua.

Lưu ý rằngPostgreSQLNgười thực thi không quan tâm liệu kèo bóng đá cúp c2 hàng có trả lại vi phạm bất kỳ ràng buộc nào được xác định trên bàn nước ngoài hay không - nhưng người lập kế hoạch quan tâm và có thể tối ưu hóa kèo bóng đá cúp c2 truy vấn không chính xác nếu có kèo bóng đá cúp c2 hàng có thể nhìn thấy trong bảng nước ngoài không thỏa mãn ràng buộc. Nếu một ràng buộc bị vi phạm khi người dùng đã tuyên bố rằng ràng buộc sẽ đúng, có thể phù hợp để gây ra lỗi (giống như bạn cần phải làm trong trường hợp không khớp loại dữ liệu).

VOID

Khởi động lại quá trình quét từ đầu. Lưu ý rằng bất kỳ tham số nào mà quét phụ thuộc vào có thể đã thay đổi giá trị, do đó quét mới kèo bóng đá cúp c2 nhất thiết phải trả về chính xác cùng một hàng.

VOID

Kết thúc tài nguyên quét và phát hành. Thông thường không quan trọng để phát hành bộ nhớ palloc'd, nhưng ví dụ: mở kèo bóng đá cúp c2 tệp và kết nối với kèo bóng đá cúp c2 máy chủ từ xa nên được làm sạch.

55.2.2. kèo bóng đá cúp c2 thói quen của FDW để quét kèo bóng đá cúp c2 tham gia nước ngoài

Nếu FDW hỗ trợ thực hiện kèo bóng đá cúp c2 tham gia nước ngoài từ xa (thay vì tìm nạp dữ liệu của cả hai bảng và thực hiện tham gia cục bộ), nó sẽ cung cấp chức năng gọi lại này:

Void

Tạo kèo bóng đá cúp c2 đường dẫn truy cập có thể cho sự tham gia của hai (hoặc nhiều) bảng nước ngoài mà tất cả đều thuộc về cùng một máy chủ nước ngoài. Chức năng tùy chọn này được gọi trong quá trình lập kế hoạch truy vấn.GetforignPaths, chức năng này sẽ tạo raForeignPathĐường dẫn cho được cung cấptham giavà gọiadd_pathĐể thêm kèo bóng đá cúp c2 đường dẫn này vào tập hợp kèo bóng đá cúp c2 đường dẫn được xem xét cho sự tham gia. Nhưng không giống nhưGetForignPaths, Không cần thiết phải thành công trong việc tạo ít nhất một đường dẫn, vì kèo bóng đá cúp c2 đường dẫn liên quan đến việc tham gia cục bộ luôn luôn có thể.

Lưu ý rằng chức năng này sẽ được gọi nhiều lần cho cùng một mối quan hệ tham gia, với kèo bóng đá cúp c2 kết hợp khác nhau của quan hệ bên trong và bên ngoài; Trách nhiệm của FDW là giảm thiểu công việc trùng lặp.

Nếu AForeignPathĐường dẫn được chọn cho tham gia, nó sẽ đại diện cho toàn bộ quá trình tham gia; kèo bóng đá cúp c2 đường dẫn được tạo cho kèo bóng đá cúp c2 bảng thành phần và kèo bóng đá cúp c2 công ty con sẽ không được sử dụng.ScanRelidkèo bóng đá cúp c2 kết quảForeignScanKế hoạch Nên được đặt thành 0, vì kèo bóng đá cúp c2 có mối quan hệ nào mà nó đại diện; Thay vào đó,fs_relidsTrường kèo bóng đá cúp c2nước kèo bóng đá cúp c2Node đại diện cho tập hợp kèo bóng đá cúp c2 mối quan hệ đã được tham gia. .fdw_scan_tlistVới danh sách thích hợpTargetEntrykèo bóng đá cúp c2 nút, đại diện cho tập hợp kèo bóng đá cúp c2 cột nó sẽ cung cấp trong thời gian chạy trong kèo bóng đá cúp c2 bộ dữ liệu mà nó trả về.

xemPhần 55.4Để biết thêm thông tin.

55.2.3. kèo bóng đá cúp c2 thói quen của FDW để lập kế hoạch xử lý sau khi quét/tham gia

Nếu FDW hỗ trợ thực hiện xử lý sau khi quét/tham gia từ xa, chẳng hạn như tập hợp từ xa, nó sẽ cung cấp chức năng gọi lại này:

VOID

Tạo đường dẫn truy cập có thể choquan hệ trênXử lý, đây là thuật ngữ kèo bóng đá cúp c2 người lập kế hoạch cho tất cả xử lý truy vấn sau khi quét/tham gia, chẳng hạn như tập hợp, chức năng cửa sổ, sắp xếp và cập nhật bảng. Chức năng tùy chọn này được gọi trong quá trình lập kế hoạch truy vấn.ForeigyPathĐường dẫn cho bất kỳ xử lý sau khi quét/tham gia mà FDW biết cách thực hiện từ xa và gọiadd_pathĐể thêm kèo bóng đá cúp c2 đường dẫn này vào mối quan hệ trên được chỉ định. Như vớigetforeignjoinpaths, Không cần thiết phải thành công trong việc tạo ra bất kỳ đường dẫn nào, vì kèo bóng đá cúp c2 đường dẫn liên quan đến xử lý cục bộ luôn luôn có thể.

TheGiai đoạnTham số xác định bước sau khi quét/tham gia hiện đang được xem xét.output_rellà mối quan hệ trên sẽ nhận kèo bóng đá cúp c2 đường dẫn đại diện cho tính toán của bước này vàinput_rellà mối quan hệ đại diện cho đầu vào cho bước này. (Lưu ý rằngForeignPathĐường dẫn được thêm vàooutput_relThông thường sẽ không có bất kỳ sự phụ thuộc trực tiếp nào vào kèo bóng đá cúp c2 đường dẫn củainput_rel, vì việc xử lý của họ dự kiến ​​sẽ được thực hiện bên ngoài. Tuy nhiên, việc kiểm tra kèo bóng đá cúp c2 đường dẫn được tạo trước đó cho bước xử lý trước đó có thể hữu ích để tránh công việc lập kế hoạch dự phòng.)

xemPhần 55.4Để biết thêm thông tin.

55.2.4. kèo bóng đá cúp c2 thói quen FDW để cập nhật kèo bóng đá cúp c2 bảng nước ngoài

Nếu FDW hỗ trợ kèo bóng đá cúp c2 bảng nước ngoài có thể ghi, nó sẽ cung cấp một số hoặc tất cả kèo bóng đá cúp c2 chức năng gọi lại sau đây tùy thuộc vào nhu cầu và khả năng của FDW:

Void

Cập nhậtXóaHoạt động được thực hiện đối với kèo bóng đá cúp c2 hàng trước đó được tìm nạp trước kèo bóng đá cúp c2 chức năng quét bảng. FDW có thể cần thêm thông tin, chẳng hạn như ID hàng hoặc kèo bóng đá cúp c2 giá trị của kèo bóng đá cúp c2 cột khóa chính, để đảm bảo rằng nó có thể xác định hàng chính xác để cập nhật hoặc xóa."Junk", kèo bóng đá cúp c2 cột đích vào danh sách kèo bóng đá cúp c2 cột sẽ được lấy từ Bàn nước ngoài trong mộtCập nhậthoặcXóa.

Để làm điều đó, thêmTargetEntrykèo bóng đá cúp c2 mục đếnParsetree- TargetList, chứa kèo bóng đá cúp c2 biểu thức cho kèo bóng đá cúp c2 giá trị bổ sung được tìm nạp. Mỗi mục nhập như vậy phải được đánh dấuresjunk=TRUE, và phải có một sự khác biệtResNamesẽ xác định nó vào thời điểm thực hiện. Tránh sử dụng tên khớpCTIDn,WholerowhoặcWholerown, vì hệ thống lõi có thể tạo kèo bóng đá cúp c2 cột rác của kèo bóng đá cúp c2 tên này. Nếu kèo bóng đá cúp c2 biểu thức bổ sung phức tạp hơn kèo bóng đá cúp c2 vars đơn giản, chúng phải được chạy quaeval_const_expressionsTrước khi thêm chúng vào danh sách mục tiêu.

Mặc dù chức năng này được gọi trong quá trình lập kế hoạch, thông tin được cung cấp hơi khác so với kèo bóng đá cúp c2 thói quen lập kế hoạch khác.Parsetreelà cây phân tích choCập nhậthoặcXóaLệnh, trong khitarget_rteTarget_RelationMô tả Bàn nước kèo bóng đá cúp c2 đích.

NếuCon trỏ được đặt thànhnull, kèo bóng đá cúp c2 có biểu thức mục tiêu nào được thêm vào. (Điều này sẽ khiến nó kèo bóng đá cúp c2 thể thực hiệnXóahoạt động, mặc dùCập nhậtvẫn có thể khả thi nếu FDW dựa vào khóa chính kèo bóng đá cúp c2 thay đổi để xác định hàng.)

Danh sách *

Thực hiện bất kỳ hành động lập kế hoạch bổ sung nào cần thiết để chèn, cập nhật hoặc xóa trên bàn nước kèo bóng đá cúp c2. Chức năng này tạo ra thông tin FDW-Private sẽ được đính kèm vớiModifyTableKế hoạch nút thực hiện hành động cập nhật. Thông tin cá nhân này phải có dạng ADanh sáchvà sẽ được chuyển đếnBeginForignModifyTrong giai đoạn thực thi.

Rootlà thông tin toàn cầu kèo bóng đá cúp c2 người lập kế hoạch về truy vấn.kế hoạchModifyTableKế hoạch nút, hoàn thành ngoại trừFDWPRIVLISStrường.ResultrelationXác định bảng nước ngoài mục tiêu theo chỉ mục bảng phạm vi kèo bóng đá cúp c2 nó.Subplan_indexXác định mục tiêu nào kèo bóng đá cúp c2ModifyTableKế hoạch nút Đây là, đếm từ số kèo bóng đá cúp c2; Sử dụng cái này nếu bạn muốn lập chỉ mục vàoPlan- kế hoạchhoặc cấu trúc phụ khác kèo bóng đá cúp c2kế hoạchNode.

xemPhần 55.4Để biết thêm thông tin.

NếuplanforeignmodifyCon trỏ được đặt thànhnull, kèo bóng đá cúp c2 có hành động thời gian kế hoạch bổ sung nào được thực hiện vàFDW_PrivateDanh sách được giao choBeginForignModifysẽ là nil.

Void

Bắt đầu thực hiện hoạt động sửa đổi bàn nước kèo bóng đá cúp c2. Thói quen này được gọi trong quá trình khởi động thực thi.EXECFORIGNINSERT,EXECFORIGNUPDATEhoặcExecforeIgnDeletesẽ được gọi cho mỗi Tuple được chèn, cập nhật hoặc xóa.

MTSTATElà trạng thái tổng thể kèo bóng đá cúp c2ModifyTableKế hoạch nút được thực thi; Dữ liệu toàn cầu về kế hoạch và trạng thái thực thi có sẵn thông qua cấu trúc này.rinforesultrelInfoCấu trúc mô tả bảng nước kèo bóng đá cúp c2 mục tiêu. (TheRI_FDWSTATETrườngresultrelInfoCó sẵn cho FDW để lưu trữ bất kỳ trạng thái riêng tư nào mà nó cần cho hoạt động này.)FDW_PrivateChứa dữ liệu riêng được tạo bởiplanforeignmodify, nếu có.Subplan_indexXác định mục tiêu nào kèo bóng đá cúp c2ModifyTableKế hoạch nút This is.EFLAGSChứa kèo bóng đá cúp c2 bit cờ mô tả chế độ hoạt động của người thực thi cho nút kế hoạch này.

Lưu ý rằng khi(eflags & exec_flag_explain_only)là đúng, chức năng này không nên thực hiện bất kỳ hành động nào có thể nhìn thấy bên kèo bóng đá cúp c2; nó chỉ nên làm tối thiểu cần thiết để làm cho trạng thái nút hợp lệ choGiải thích trước khi điều chỉnh28633_28651.

NếuBeginForignModifyCon trỏ được đặt thànhnull, kèo bóng đá cúp c2 có hành động nào được thực hiện trong quá trình khởi động thực thi.

tupletableslot *

Chèn một tuple vào Bàn nước kèo bóng đá cúp c2.Estatelà trạng thái thực thi toàn cầu cho truy vấn.rinforesultrelInfoCấu trúc mô tả bảng nước kèo bóng đá cúp c2 đích.slotchứa bộ tuple được chèn; Nó sẽ khớp với định nghĩa loại hàng kèo bóng đá cúp c2 Bàn nước ngoài.SP rapchứa bộ tuple được tạo bởiModifyTablekế hoạch con kèo bóng đá cúp c2 nút; nó khác vớislotTrong có thể chứa bổ sung"Junk"Cột. (TheSP rapthường rất ít quan tâm choChèntrường hợp, nhưng được cung cấp cho sự hoàn chỉnh.)

Giá trị trả về là một khe chứa dữ liệu thực sự được chèn (điều này có thể khác với dữ liệu được cung cấp, ví dụ như kết quả của kèo bóng đá cúp c2 hành động kích hoạt) hoặc null nếu không có hàng nào được chèn (một lần nữa, thường là kết quả của kèo bóng đá cúp c2 kích hoạt). Thông quaslotcó thể được sử dụng lại cho mục đích này.

Dữ liệu trong khe được trả về chỉ được sử dụng nếuChènTruy vấn cóTrở vềmệnh đề hoặc Bàn nước kèo bóng đá cúp c2 cósau hàngTrigger. Trình kích hoạt yêu cầu tất cả kèo bóng đá cúp c2 cột, nhưng FDW có thể chọn tối ưu hóa việc trả về một số hoặc tất cả kèo bóng đá cúp c2 cột tùy thuộc vào nội dung củaTrở vềmệnh đề. Bất kể, một số khe phải được trả lại để biểu thị thành công, hoặc số lượng hàng được báo cáo kèo bóng đá cúp c2 truy vấn sẽ sai.

NếuEXECFORIGNINSERTCon trỏ được đặt thànhnull, Cố gắng chèn vào Bàn nước kèo bóng đá cúp c2 sẽ thất bại với thông báo lỗi.

tupletableslot *

Cập nhật một tuple trong Bàn nước kèo bóng đá cúp c2.Estatelà trạng thái thực thi toàn cầu cho truy vấn.rinforesultrelInfoCấu trúc mô tả Bàn nước kèo bóng đá cúp c2 đích.slotChứa dữ liệu mới cho tuple; Nó sẽ khớp với định nghĩa loại hàng kèo bóng đá cúp c2 Bàn nước ngoài.SP rapchứa bộ tuple được tạo bởiModifyTableSubplan kèo bóng đá cúp c2 Node kế hoạch; nó khác vớislotTrong có thể chứa bổ sung"Junk"Cột. Cụ thể, bất kỳ cột rác nào được yêu cầu bởisẽ có sẵn từ khe này.

Giá trị trả về là một khe chứa hàng vì nó thực sự được cập nhật (điều này có thể khác với dữ liệu được cung cấp, ví dụ như kết quả của kèo bóng đá cúp c2 hành động kích hoạt) hoặc null nếu không có hàng nào được cập nhật (một lần nữa, thường là kết quả của kèo bóng đá cúp c2 trình kích hoạt). Thông quaslotcó thể được sử dụng lại cho mục đích này.

Dữ liệu trong khe được trả về chỉ được sử dụng nếuCập nhậtTruy vấn cóTrở vềmệnh đề hoặc bàn nước kèo bóng đá cúp c2 cósau hàngTrigger. Trình kích hoạt yêu cầu tất cả kèo bóng đá cúp c2 cột, nhưng FDW có thể chọn tối ưu hóa việc trả về một số hoặc tất cả kèo bóng đá cúp c2 cột tùy thuộc vào nội dung củaTrở vềmệnh đề. Bất kể, một số khe phải được trả lại để biểu thị thành công, hoặc số lượng hàng được báo cáo kèo bóng đá cúp c2 truy vấn sẽ sai.

NếuEXECFORIGNUPDATECon trỏ được đặt thànhnull, Cố gắng cập nhật bảng nước kèo bóng đá cúp c2 sẽ thất bại với thông báo lỗi.

tupletableslot *

Xóa một tuple khỏi Bàn nước kèo bóng đá cúp c2.Estatelà trạng thái thực thi toàn cầu cho truy vấn.rinforesultrelInfoCấu trúc mô tả bảng nước kèo bóng đá cúp c2 đích.slotkèo bóng đá cúp c2 chứa gì hữu ích khi gọi, nhưng có thể được sử dụng để giữ tuple trả về.SP rapchứa bộ tuple được tạo bởiModifyTableSubplan kèo bóng đá cúp c2 Node kế hoạch; Cụ thể, nó sẽ mang bất kỳ cột rác nào được yêu cầu bởi. (kèo bóng đá cúp c2) cột rác phải được sử dụng để xác định tuple sẽ bị xóa.

Giá trị trả về là một khe chứa hàng đã bị xóa hoặc null nếu không có hàng nào bị xóa (thường là kết quả của kèo bóng đá cúp c2 kích hoạt). Thông quaslotcó thể được sử dụng để giữ tuple để được trả về.

Dữ liệu trong khe được trả về chỉ được sử dụng nếuXóaTruy vấn cóTrở vềmệnh đề hoặc Bàn nước kèo bóng đá cúp c2 cósau hàngTrigger. Trình kích hoạt yêu cầu tất cả kèo bóng đá cúp c2 cột, nhưng FDW có thể chọn tối ưu hóa việc trả về một số hoặc tất cả kèo bóng đá cúp c2 cột tùy thuộc vào nội dung củaTrở vềmệnh đề. Bất kể, một số khe phải được trả lại để biểu thị thành công, hoặc số lượng hàng được báo cáo kèo bóng đá cúp c2 truy vấn sẽ sai.

NếuExecforeIgnDeleteCon trỏ được đặt thànhnull, Cố gắng xóa khỏi Bàn nước kèo bóng đá cúp c2 sẽ thất bại với thông báo lỗi.

Void

Kết thúc bản cập nhật bảng và phát hành tài nguyên. Thông thường không quan trọng để phát hành bộ nhớ palloc'd, nhưng ví dụ: mở kèo bóng đá cúp c2 tệp và kết nối với kèo bóng đá cúp c2 máy chủ từ xa nên được làm sạch.

NếuFendForignModifyCon trỏ được đặt thànhnull, kèo bóng đá cúp c2 có hành động nào được thực hiện trong quá trình tắt thực thi.

int

Báo cáo cập nhật kèo bóng đá cúp c2 hoạt động của Bàn nước ngoài được chỉ định. Giá trị trả về phải là một chút mặt nạ của kèo bóng đá cúp c2 số sự kiện quy tắc cho biết kèo bóng đá cúp c2 hoạt động nào được hỗ trợ bởi Bàn nước ngoài, sử dụngcmdtypeliệt kê; đó là,(1 << cmd_update) = 4choCập nhật,(1 << cmd_insert) = 8choChèn(1 << cmd_delete) = 16choXóa.

NếuisforeignRelupDatableCon trỏ được đặt thànhnull, Bảng nước kèo bóng đá cúp c2 được coi là có thể chèn, cập nhật hoặc có thể phân loại nếu FDW cung cấpEXECFORIGNINSERT,EXECFORIGNUPDATEhoặcExecforeIgnDeletetương ứng. Hàm này chỉ cần thiết nếu FDW hỗ trợ một số bảng có thể cập nhật và một số bảng kèo bóng đá cúp c2.thông tin_schemaLượt xem.)

Một số chèn, cập nhật và xóa kèo bóng đá cúp c2 bảng nước ngoài có thể được tối ưu hóa bằng cách triển khai một bộ giao diện thay thế. kèo bóng đá cúp c2 giao diện thông thường để chèn, cập nhật và xóa tìm nạp kèo bóng đá cúp c2 hàng khỏi máy chủ từ xa và sau đó sửa đổi kèo bóng đá cúp c2 hàng đó cùng một lúc.Với tùy chọn kiểm trakèo bóng đá cúp c2 ràng buộc từ kèo bóng đá cúp c2 quan điểm của cha mẹ), sau đó có thể sắp xếp mọi thứ để toàn bộ hoạt động được thực hiện trên máy chủ từ xa. kèo bóng đá cúp c2 giao diện được mô tả bên dưới làm cho điều này có thể.

Bool

Quyết định xem có an toàn để thực hiện sửa đổi trực tiếp trên máy chủ từ xa hay kèo bóng đá cúp c2. Nếu vậy, hãy trả lạiTRUESau khi thực hiện kèo bóng đá cúp c2 hành động lập kế hoạch cần thiết cho điều đó. Nếu không, trở lạiSai. Chức năng tùy chọn này được gọi trong quá trình lập kế hoạch truy vấn.BegindirectModify,iteratedirectModifyendDirectModifythay vào đó sẽ được gọi ở giai đoạn thực thi. Mặt khác, sửa đổi bảng sẽ được thực hiện bằng cách sử dụng kèo bóng đá cúp c2 hàm cập nhật bảng được mô tả ở trên.planforeignmodify.

Để thực hiện sửa đổi trực tiếp trên máy chủ từ xa, chức năng này phải viết lại sơ đồ con đích bằng mộtForeignScanKế hoạch nút thực hiện sửa đổi trực tiếp trên máy chủ từ xa. TheHoạt độngTrường kèo bóng đá cúp c2ForeignScanphải được đặt thànhcmdtypeliệt kê một cách thích hợp; đó là,CMD_UPDATEchoCập nhật,cmd_insertchoChènCMD_DELETEchoXóa.

xemPhần 55.4Để biết thêm thông tin.

NếuPlandirectModifyCon trỏ được đặt thànhnull, kèo bóng đá cúp c2 cố gắng thực hiện sửa đổi trực tiếp trên máy chủ từ xa được thực hiện.

VOID

Chuẩn bị thực hiện sửa đổi trực tiếp trên máy chủ từ xa. Điều này được gọi trong quá trình khởi động thực thi.iteratedirectModify). Thenước kèo bóng đá cúp c2Node đã được tạo, nhưng nófdw_stateTrường vẫn còn vô hiệu. Thông tin về bảng để sửa đổi có thể truy cập được thông quaForeignScanStatenút (đặc biệt, từ bên dướiForeignScanKế hoạch nút, chứa bất kỳ thông tin FDW-Private nào được cung cấp bởiPlandirectModify).EFLAGSChứa kèo bóng đá cúp c2 bit cờ mô tả chế độ hoạt động của người thực thi cho nút kế hoạch này.

Lưu ý rằng khi(EFLAGS & EXEC_FLAG_EXPLAIN_ONLY)là đúng, chức năng này kèo bóng đá cúp c2 nên thực hiện bất kỳ hành động nào có thể nhìn nhận được; nó chỉ nên làm tối thiểu cần thiết để làm cho trạng thái nút hợp lệ choGiải thíchDirectModifyEndDirectModify.

NếuBegindirectModifyCon trỏ được đặt thànhnull, kèo bóng đá cúp c2 cố gắng thực hiện sửa đổi trực tiếp trên máy chủ từ xa được thực hiện.

tupletableslot *

KhiChèn,Cập nhậthoặcXóaTruy vấn kèo bóng đá cúp c2 cóTrở vềmệnh đề, chỉ cần trả lại null sau khi sửa đổi trực tiếp trên máy chủ từ xa. Khi truy vấn có mệnh đề, hãy lấy một kết quả chứa dữ liệu cần thiết choTrở về40977_41040scantuplotlotnên được sử dụng cho mục đích này). Dữ liệu thực sự được chèn, cập nhật hoặc xóa phải được lưu trữ trong41213_41300kèo bóng đá cúp c2 nútEstate. Trả lại null nếu kèo bóng đá cúp c2 có nhiều hàng có sẵn.BegindirectModifyNếu bạn cần lưu trữ tồn tại lâu hơn hoặc sử dụngES_Query_CXTkèo bóng đá cúp c2 nútEstate.

kèo bóng đá cúp c2 hàng được trả về phải khớp vớiFDW_SCAN_TLISTDanh sách mục tiêu Nếu được cung cấp, nếu không chúng phải khớp với loại hàng của bàn nước ngoài được cập nhật. Nếu bạn chọn tối ưu hóa kèo bóng đá cúp c2 cột tìm nạp không cần thiết choTrở vềTính toán, bạn nên chèn null vào kèo bóng đá cúp c2 vị trí cột đó hoặc khác tạo rafdw_scan_tlistLiệt kê với kèo bóng đá cúp c2 cột bị bỏ qua.

Cho dù truy vấn có mệnh đề hay không, số lượng hàng được báo cáo kèo bóng đá cúp c2 truy vấn phải được tăng lên bởi chính FDW. Khi truy vấn không có mệnh đề, FDW cũng phải tăng số lượng hàng choForeignScanStatenút trongGiải thích Phân tíchCase.

NếuiteratedirectModifyCon trỏ được đặt thànhnull, kèo bóng đá cúp c2 cố gắng thực hiện sửa đổi trực tiếp trên máy chủ từ xa được thực hiện.

VOID

Làm sạch sau khi sửa đổi trực tiếp trên máy chủ từ xa. Thông thường không quan trọng để phát hành bộ nhớ palloc'd, nhưng ví dụ: mở kèo bóng đá cúp c2 tệp và kết nối với máy chủ từ xa nên được làm sạch.

NếuEndDirectModifyCon trỏ được đặt thànhnull, kèo bóng đá cúp c2 cố gắng thực hiện sửa đổi trực tiếp trên máy chủ từ xa được thực hiện.

55.2.5. kèo bóng đá cúp c2 thói quen FDW để khóa hàng

Nếu FDW muốn hỗ trợkhóa hàng muộn(như được mô tả trongPhần 55.5), nó phải cung cấp kèo bóng đá cúp c2 chức năng gọi lại sau:

RowMarkType

Báo cáo tùy chọn đánh dấu hàng nào để sử dụng cho một bàn nước kèo bóng đá cúp c2.RTERangetBlentrynút cho bảng vàSức mạnhMô tả cường độ khóa được yêu cầu bởi liên quanđể cập nhật/chia sẻmệnh đề, nếu có. Kết quả phải là thành viên kèo bóng đá cúp c2RowMarkTypeloại enum.

Hàm này được gọi trong quá trình lập kế hoạch truy vấn cho mỗi bảng nước kèo bóng đá cúp c2 xuất hiện trong mộtCập nhật,XóahoặcChọn để cập nhật/chia sẻTruy vấn và không phải là mục tiêu kèo bóng đá cúp c2Cập nhậthoặcXóa.

NếugetforeignrowmarktypeCon trỏ được đặt thànhnull,Row_Mark_CopyTùy chọn luôn được sử dụng. (Điều này ngụ ý rằngRefetchForeIgnrowsẽ kèo bóng đá cúp c2 bao giờ được gọi, vì vậy nó cũng kèo bóng đá cúp c2 cần phải được cung cấp.)

xemPhần 55.5Để biết thêm thông tin.

nặng nề

Lấy lại một tuple từ Bàn nước kèo bóng đá cúp c2, sau khi khóa nó nếu được yêu cầu.Estatelà trạng thái thực thi toàn cầu cho truy vấn.ERMExecRowMarkCấu trúc mô tả bảng nước kèo bóng đá cúp c2 đích và loại khóa hàng (nếu có) để có được.ROWIDXác định Tuple sẽ được tìm nạp.Cập nhậtlà tham số đầu ra.

45370_45442nullNếu kèo bóng đá cúp c2 thể lấy được khóa hàng. Loại khóa hàng để thu được được xác định bởierm- marktype, là giá trị được trả về trước đó bởigetforeignrowmarktype. (Row_Mark_Referencecó nghĩa là chỉ cần tìm nạp lại tuple mà kèo bóng đá cúp c2 cần có bất kỳ khóa nào vàRow_Mark_Copysẽ kèo bóng đá cúp c2 bao giờ được nhìn thấy bởi thói quen này.)

kèo bóng đá cúp c2 ra,*Cập nhậtnên được đặt thànhTRUENếu những gì được tìm nạp là phiên bản cập nhật kèo bóng đá cúp c2 tuple chứ không phải cùng một phiên bản thu được trước đó. (Nếu FDW không thể chắc chắn về điều này, hãy luôn quay trở lạiTRUEđược khuyến nghị.)

Lưu ý rằng theo mặc định, việc kèo bóng đá cúp c2 có được khóa hàng sẽ dẫn đến việc gây ra lỗi; MộtnullTrả về chỉ phù hợp nếuBỏ qua khóaTùy chọn được chỉ định bởiERM- Waitpolicy.

TheROWIDCTIDGiá trị đã đọc trước đây cho hàng được tìm nạp lại. Mặc dùROWIDGiá trị được truyền dưới dạngDatum, hiện tại nó chỉ có thể làTID. API chức năng được chọn với hy vọng rằng có thể cho phép kèo bóng đá cúp c2 loại dữ liệu khác cho ID hàng trong tương lai.

NếuRefetchForeIgnrowCon trỏ được đặt thànhnull, Cố gắng lấy lại kèo bóng đá cúp c2 hàng sẽ không thành công với thông báo lỗi.

xemPhần 55.5Để biết thêm thông tin.

Bool

Kiểm tra rằng một tuple đã được trả lại trước đó vẫn phù hợp với vòng loại quét và tham gia kèo bóng đá cúp c2 vòng loại có liên quan và có thể cung cấp một phiên bản sửa đổi của tuple. Đối với kèo bóng đá cúp c2 trình bao bọc dữ liệu nước ngoài không thực hiện tham gia Pushdown, thông thường sẽ thuận tiện hơn để đặt điều này thànhnullvà thay vào đó đặtFDW_RECHECK_QUALSmột cách thích hợp. Tuy nhiên, khi kèo bóng đá cúp c2 kết nối bên ngoài được đẩy xuống, tuy nhiên, việc áp dụng lại kèo bóng đá cúp c2 kiểm tra có liên quan đến tất cả kèo bóng đá cúp c2 bảng cơ sở với kết quả là không đủ, ngay cả khi tất cả kèo bóng đá cúp c2 thuộc tính cần thiết đều có mặt, bởi vì không phù hợp với một số vòng loại có thể dẫn đến một số thuộc tính sẽ không được trả lại.RecheckForignScan47927_48083

Để thực hiện tham gia Pushdown, một trình bao bọc dữ liệu nước ngoài thường sẽ xây dựng một kế hoạch tham gia cục bộ thay thế chỉ được sử dụng để kiểm tra lại; Điều này sẽ trở thành kế hoạch con bên ngoài kèo bóng đá cúp c2ForeignScan. Khi cần phải kiểm tra lại, sơ đồ con này có thể được thực thi và bộ tuple kết quả có thể được lưu trữ trong khe.GetExistingLocalJoinPathCó thể được sử dụng để tìm kiếm kèo bóng đá cúp c2 đường dẫn hiện có cho đường dẫn tham gia cục bộ phù hợp, có thể được sử dụng làm kế hoạch tham gia cục bộ thay thế.GetExistingLocalJoinPathTìm kiếm một đường dẫn không phân chia trong danh sách đường dẫn kèo bóng đá cúp c2 mối quan hệ tham gia được chỉ định. .

55.2.6. kèo bóng đá cúp c2 thói quen FDW choGiải thích

VOID

In bổ sungGiải thíchđầu ra cho quét bảng nước kèo bóng đá cúp c2. Chức năng này có thể gọiGiải thíchPropertyTextvà kèo bóng đá cúp c2 chức năng liên quan để thêm kèo bóng đá cúp c2 trường vàoGiải thíchđầu ra. kèo bóng đá cúp c2 trường cờ trongesCó thể được sử dụng để xác định những gì cần in và trạng thái kèo bóng đá cúp c2ForeignScanStateNode có thể được kiểm tra để cung cấp số liệu thống kê thời gian chạy trongGiải thích Phân tíchCASE.

NếuGiải thích FormentignScanCon trỏ được đặt thànhnull, kèo bóng đá cúp c2 có thông tin bổ sung nào được in trongGiải thích.

Void

In bổ sungGiải thíchđầu ra cho bản cập nhật bàn nước kèo bóng đá cúp c2. Chức năng này có thể gọiGiải thíchPropertyTextvà kèo bóng đá cúp c2 chức năng liên quan để thêm kèo bóng đá cúp c2 trường vàoGiải thíchđầu ra. kèo bóng đá cúp c2 trường cờ trongesCó thể được sử dụng để xác định những gì cần in và trạng thái kèo bóng đá cúp c2ModifyTablestateNode có thể được kiểm tra để cung cấp số liệu thống kê thời gian chạy trongGiải thích Phân tíchtrường hợp. Bốn đối số đầu tiên giống như đối vớiBeginForignModify.

NếuGiải thích trước khi điều chỉnhCon trỏ được đặt thànhnull, kèo bóng đá cúp c2 có thông tin bổ sung nào được in trongGiải thích.

Void

In bổ sungGiải thíchđầu ra để sửa đổi trực tiếp trên máy chủ từ xa. Chức năng này có thể gọiGiải thíchPropertyTextvà kèo bóng đá cúp c2 chức năng liên quan để thêm kèo bóng đá cúp c2 trường vàoGiải thíchđầu ra. kèo bóng đá cúp c2 trường cờ trongesCó thể được sử dụng để xác định những gì cần in và trạng thái kèo bóng đá cúp c2ForeignScanStateNode có thể được kiểm tra để cung cấp số liệu thống kê thời gian chạy trongGiải thích Phân tíchCASE.

NếuGiải thíchDirectModifyCon trỏ được đặt thànhNULL, kèo bóng đá cúp c2 có thông tin bổ sung nào được in trongGiải thích.

55.2.7. kèo bóng đá cúp c2 thói quen FDW choPhân tích

Bool

Hàm này được gọi khiPostgreSQL: Tài cách đọcđược thực thi trên bàn nước kèo bóng đá cúp c2. Nếu FDW có thể thu thập số liệu thống kê cho Bàn nước kèo bóng đá cúp c2 này, nó sẽ trả lạiTRUE, và cung cấp một con trỏ cho một hàm sẽ thu thập kèo bóng đá cúp c2 hàng mẫu từ bảng trongfunc, cộng với kích thước ước tính của bảng trong kèo bóng đá cúp c2 trang trongTotalPages. Nếu kèo bóng đá cúp c2, trở lạifalse.

Nếu FDW kèo bóng đá cúp c2 hỗ trợ thu thập số liệu thống kê cho bất kỳ bảng nào,Phân tích trước khi thiết kếCon trỏ có thể được đặt thànhnull.

Nếu được cung cấp, chức năng thu thập mẫu phải có chữ ký

int

Một mẫu ngẫu nhiên lên đếnTargrowsHàng phải được thu thập từ bảng và được lưu trữ vào người gọi được cung cấphàngMảng. Số lượng hàng thực tế được thu thập phải được trả về.TotalRowsTotalDeadrows. (BộTotalDeadrowsđến 0 Nếu FDW kèo bóng đá cúp c2 có bất kỳ khái niệm nào về hàng chết.)

55.2.8. kèo bóng đá cúp c2 thói quen FDW choNhập lược đồ nước kèo bóng đá cúp c2

Danh sách *

Lấy danh sách kèo bóng đá cúp c2 lệnh tạo bảng nước ngoài. Chức năng này được gọi khi thực thiPostgreSQL: Tài liệu: 9.6: Nhập, và được thông qua cây phân tích cho câu lệnh đó, cũng như OID của máy chủ nước ngoài sử dụng. Nó sẽ trả về một danh sách kèo bóng đá cúp c2 chuỗi C, mỗi chuỗi phải chứa mộtPostgreSQL: Tài liệu: 9.6: Tạo kèoLệnh. kèo bóng đá cúp c2 chuỗi này sẽ được phân tích cú pháp và thực hiện bởi máy chủ lõi.

trongIntertForignSchemastMTstruct,remote_schemalà tên của lược đồ từ xa mà kèo bóng đá cúp c2 bảng sẽ được nhập.list_typeXác định cách lọc tên bảng:fdw_import_schema_allCó nghĩa là tất cả kèo bóng đá cúp c2 bảng trong lược đồ từ xa nên được nhập (trong trường hợp nàyTable_Listlà trống),fdw_import_schema_limit_tocó nghĩa là chỉ bao gồm kèo bóng đá cúp c2 bảng được liệt kê trongTable_Listfdw_import_schema_exceptcó nghĩa là loại trừ kèo bóng đá cúp c2 bảng được liệt kê trongTable_List.Tùy chọnlà danh sách kèo bóng đá cúp c2 tùy chọn được sử dụng cho quy trình nhập. Ý nghĩa của kèo bóng đá cúp c2 tùy chọn là tùy thuộc vào FDW.kèo bóng đá cúp c2 nullThuộc tính của kèo bóng đá cúp c2 cột phải được nhập. kèo bóng đá cúp c2 tùy chọn này không cần phải làm gì với kèo bóng đá cúp c2 tùy chọn được FDW hỗ trợ làm tùy chọn đối tượng cơ sở dữ liệu.

FDW có thể bỏ qualocal_schemaTrường kèo bóng đá cúp c2ImportForignSchemastMT, vì máy chủ lõi sẽ tự động chèn tên đó vào phân tích cú phápTạo bảng nước kèo bóng đá cúp c2lệnh.

FDW kèo bóng đá cúp c2 phải quan tâm đến việc thực hiện bộ lọc được chỉ định bởilist_typeTable_List, vì máy chủ lõi sẽ tự động bỏ qua bất kỳ lệnh nào được trả về cho kèo bóng đá cúp c2 bảng được loại trừ theo kèo bóng đá cúp c2 tùy chọn đó. Tuy nhiên, thường rất hữu ích để tránh công việc tạo kèo bóng đá cúp c2 lệnh cho kèo bóng đá cúp c2 bảng bị loại trừ ngay từ đầu.isimportable eforignTable ()có thể hữu ích để kiểm tra xem một tên bàn nước kèo bóng đá cúp c2 nhất định sẽ vượt qua bộ lọc.

Nếu FDW kèo bóng đá cúp c2 hỗ trợ nhập định nghĩa bảng,ImportForignSchemaCon trỏ có thể được đặt thànhnull.

55.2.9. kèo bóng đá cúp c2 thói quen FDW để thực hiện song song

AForeignScanNode, tùy chọn, hỗ trợ thực thi song song. Một song songForeignScansẽ được thực thi trong nhiều quy trình và chỉ sẽ trả về từng hàng một lần trên tất cả kèo bóng đá cúp c2 quy trình hợp tác. Để làm điều này, kèo bóng đá cúp c2 quy trình có thể phối hợp thông qua kèo bóng đá cúp c2 khối kích thước cố định của bộ nhớ chia sẻ động.

Bool

Kiểm tra xem có thể thực hiện quét trong một công nhân song song hay kèo bóng đá cúp c2. Hàm này sẽ chỉ được gọi khi người lập kế hoạch tin rằng một kế hoạch song song có thể là có thể và sẽ trả về đúng nếu nó an toàn cho việc quét đó để chạy trong một công nhân song song.

Nếu cuộc gọi lại này kèo bóng đá cúp c2 được xác định, người ta cho rằng việc quét phải diễn ra trong Trưởng nhóm song song. Lưu ý rằng việc trả về true kèo bóng đá cúp c2 có nghĩa là bản thân quá trình quét có thể được thực hiện song song, chỉ có thể thực hiện quét trong một công nhân song song.

Kích thước

Ước tính lượng bộ nhớ chia sẻ động sẽ được yêu cầu cho hoạt động song song. Điều này có thể cao hơn số lượng thực sự sẽ được sử dụng, nhưng nó kèo bóng đá cúp c2 được thấp hơn.

VOID

Khởi tạo bộ nhớ chia sẻ động sẽ được yêu cầu cho hoạt động song song;tọa độChỉ vào một lượng không gian được phân bổ bằng với giá trị trả về kèo bóng đá cúp c2Ước tínhSmforignScan.

VOID

Khởi tạo trạng thái tùy chỉnh kèo bóng đá cúp c2 công nhân song song dựa trên trạng thái chia sẻ được thiết lập trong nhà lãnh đạo bởiKhởi tạoSmforignScan. Cuộc gọi lại này là tùy chọn và chỉ cần được cung cấp nếu đường dẫn tùy chỉnh này hỗ trợ thực thi song song.