롤 토토 : 문서 : 9.5 : 롤 토토 9.5.25 | |||
---|---|---|---|
PostgreSQL : 문서 : 9.5 : 토토 캔 데이터 래퍼 함수 | PostgreSQL : 문서 : 9.5 : 외국 무지개 토토 래퍼 쓰기 | 54 장. 토토 커뮤니티 데이터 래퍼 쓰기 | 43토토 커뮤니티 꽁 머니27 |
FDW 핸들러 함수는 palloc'd를 반환합니다fdwroutine아래에 설명 된 콜백 함수에 포인터를 포함하는 구조. 스캔 관련 기능이 필요하고 나머지는 선택 사항입니다.
thefdwroutinestruct 유형은SRC/포함/토토 커뮤니티/fdwapi.h, 추가 세부 사항을 참조하십시오.
무효 getforeignrelsize (plannerinfo *root, reploptinfo *baserel, oid forexableid);
토토 커뮤니티 표에 대한 관계 크기 추정치를 얻으십시오. 이것은 토토 커뮤니티 테이블을 스캔하는 쿼리 계획을 시작할 때 호출됩니다.루트쿼리에 대한 플래너의 글로벌 정보입니다.Baserel이 표에 대한 플래너의 정보입니다. 그리고토토 커뮤니티인pg_class토토 커뮤니티 테이블의 OID. (토토 커뮤니티인플래너 데이터 구조에서 얻을 수 있지만 노력을 절약하기 위해 명시 적으로 전달됩니다.)
이 기능이 업데이트되어야합니다Baserel- 행제한에 의해 수행 된 필터링을 설명 한 후 테이블 스캔에 의해 반환 된 예상 행의 수가 되려면. 의 초기 값Baserel- 행는 일정한 기본 추정치 일 뿐이며 가능한 경우 교체해야합니다. 함수는 또한 업데이트를 선택할 수 있습니다Baserel- 너비평균 결과 행 너비의 더 나은 추정치를 계산할 수있는 경우. (초기 값은 열 데이터 유형과 마지막으로 측정 한 열 평균 폭 값을 기준으로합니다분석.) 또한이 기능이 업데이트 될 수 있습니다Baserel- Tuples토토 커뮤니티 테이블의 총 행 수에 대한 더 나은 추정치를 계산할 수있는 경우. (초기 값은pg_class.reltuples마지막으로 보이는 총 행 수를 나타냅니다분석.)
참조PostgreSQL : 문서 : 9.5 : 외국 데이터 래퍼 쿼리 토토 꽁 머니추가 정보는
무효 getforeignpaths (plannerinfo *루트, reploptinfo *baserel, oid forexableid);
토토 커뮤니티 테이블에서 스캔 할 수있는 액세스 경로를 만듭니다. 이것은 쿼리 계획 중에 호출됩니다. 매개 변수는와 동일합니다.getforeignRelsize
, 이미 호출되었습니다.
이 함수는 하나 이상의 액세스 경로를 생성해야합니다 (토토 커뮤니티 경로노드) 외부 테이블의 스캔을 위해서는 전화해야합니다add_path
그러한 각 경로를 추가하려면Baserel- PathList. 사용하는 것이 좋습니다create_foreignscan_path
구축하려면토토 커뮤니티 경로노드. 함수는 여러 액세스 경로를 생성 할 수 있습니다 (예 : 유효한 경로Pathkeys사전 분류 된 결과를 나타냅니다. 각 액세스 경로에는 비용 추정치가 포함되어야하며 의도 된 특정 스캔 방법을 식별하는 데 필요한 FDW- 민간 정보가 포함될 수 있습니다.
참조PostgreSQL : 문서 : 9.5 : 외국 데이터 래퍼 쿼리 토토 꽁 머니추가 정보는
Foreignscan * getforeignplan (plannerinfo *root, reploptinfo *baserel, Oid ForeigntableId, 토토 커뮤니티 경로 *best_path, 목록 *tlist, 목록 *scan_clauses, 계획 *outer_plan);
a 생성Foreignscan선택한 외래 액세스 경로에서 노드를 계획하십시오. 쿼리 계획이 끝날 때 호출됩니다. 매개 변수는입니다.getforeignRelsize
, 선택된토토 커뮤니티 경로(이전에 생산getforeignpaths
또는getforeignjoinpaths
), 계획 노드에 의해 배출되는 대상 목록, 계획 노드에 의해 시행 될 제한 조항 및의 외부 하위 계획Foreignscan, 이는에 사용되는 재확인에 사용됩니다Recheckforeignscan
. (경로가 기본 관계가 아닌 가입을위한 경우토토 커뮤니티인isInvalidoid.)
이 함수는 a를 생성하고 반환해야합니다.Outissscan계획 노드; 사용하는 것이 좋습니다make_foreignscan
구축하려면Foreignscan노드.
참조PostgreSQL : 문서 : 9.5 : 외국 데이터 래퍼 쿼리 토토 꽁 머니추가 정보는
무효 excernforeignscan (토토 커뮤니티 scanstate *노드, int eflags);
토토 커뮤니티 스캔을 시작하십시오. 이것은 집행자 스타트 업 동안 호출됩니다. 스캔이 시작되기 전에 필요한 초기화를 수행해야하지만 실제 스캔을 실행하지는 않습니다 (첫 번째 호출시 수행해야합니다ITREARTEFOREIGNSCAN
). 그만큼ForeignScanstate노드가 이미 생성되었지만 그FDW_STATE필드는 여전히 무효입니다. 스캔 할 테이블에 대한 정보는를 통해 액세스 할 수 있습니다.Outissscanstate노드 (특히 기본에서OutissscanPlan Node.getforeignplan
).eflags이 계획 노드에 대한 집행자의 작동 모드를 설명하는 플래그 비트가 포함되어 있습니다.
(eflags & exec_flag_explain_only)사실,이 함수는 외부가 가시적으로 행동하지 않아야합니다. 노드 상태를 유효하게하는 데 필요한 최소 값 만설명 foreignscan
및endforeignscan
.
tupletableslot * 반복적
외래 소스에서 한 줄을 가져와 튜플 테이블 슬롯으로 반환합니다 (노드Scantupleslot이 목적으로 사용해야합니다). 더 이상 행을 사용할 수없는 경우 리턴 NULL. 튜플 테이블 슬롯 인프라를 통해 물리적 또는 가상 튜플을 반환 할 수 있습니다. 대부분의 경우 후자의 선택은 성능 관점에서 바람직합니다. 이는 수명이 짧은 메모리 컨텍스트에서 호출 될 수 있습니다. 에서 메모리 컨텍스트 생성tecineforeignscan
수명이 길어 지거나 사용하는 경우es_query_cxt노드의Estate.
반환 된 행은와 일치해야합니다.FDW_SCAN_TLIST대상 목록이 제공된 경우, 그렇지 않으면 스캔되는 외래 테이블의 행 유형과 일치해야합니다. 필요하지 않은 열을 최적화하기로 선택한 경우, 해당 열 위치에 널을 삽입하거나 A를 생성해야합니다.FDW_SCAN_TLIST그 열을 생략 한 상태에서 목록.
참고PostgreSQL의 집행자는 반환 된 행이 외국 테이블에 정의 된 제약을 위반하는지 여부를 신경 쓰지 않지만 플래너는 관리를 수행하고,이 외국 테이블에 선언 된 제약 조건을 충족하지 않는 경우에 쿼리를 잘못 최적화 할 수 있습니다. 사용자가 제약 조건이 사실이라고 선언했을 때 제약 조건을 위반하면 오류를 높이는 것이 적절할 수 있습니다 (데이터 유형 불일치의 경우 필요한대로)..
무효 rescanforeignscan (foreignscanstate *노드);
처음부터 스캔을 다시 시작하십시오. 스캔이 의존하는 매개 변수는 값이 변경되었을 수 있으므로 새 스캔이 반드시 같은 행을 반드시 반환 할 필요는 없습니다.
무효 endforeignscan (foreignscanstate *노드);
스캔 및 릴리스 리소스를 종료하십시오. 일반적으로 Palloc'd 메모리를 해제하는 것은 중요하지 않지만 예를 들어 원격 서버에 대한 열린 파일 및 연결을 정리해야합니다.
FDW가 테이블의 데이터를 가져 오거나 로컬로 결합하는 것이 아니라 토토 커뮤니티인 조인을 원격으로 수행하는 것을 지원하는 경우이 콜백 기능을 제공해야합니다.
무효 getforeignjoinpaths (plannerinfo *root, reploptinfo *joinrel, reploptinfo *outerrel, reploptinfo *내부 렐, 공동 타입 공동 유형, joinpathextradata *extra);
모두 동일한 토토 커뮤니티 서버에 속하는 두 개 이상의 토토 커뮤니티 테이블에 가입 할 수있는 액세스 경로를 만듭니다. 이 선택적 기능은 쿼리 계획 중에 호출됩니다. 와 마찬가지로getforeignpaths
,이 함수는 생성해야합니다토토 커뮤니티 경로제공된 사람의 경로joinrel및 Calladd_path
조인을 위해 고려 된 경로 세트에 이러한 경로를 추가합니다. 그러나와는 달리getforeignpaths
이 함수는 내부 및 외부 관계의 다른 조합과 동일한 결합 관계에 대해 반복적으로 호출 될 것입니다. 복제 된 작업을 최소화하는 것은 FDW의 책임입니다.
if a토토 커뮤니티 경로경로는 조인을 위해 선택되며 전체 조인 프로세스를 나타냅니다. 구성 요소 테이블 및 자회사 조인에 대해 생성 된 경로는 사용되지 않습니다. 결합 경로의 후속 처리는 단일 외래 테이블을 스캔하는 경로와 마찬가지로 진행됩니다. 한 가지 차이점은scanrelid결과의Outissscan계획 노드는 단일 관계가 나타내지 않기 때문에 0으로 설정해야합니다. 대신,FS_RELIDS필드Foreignscan노드는 결합 된 관계 세트를 나타냅니다. (후자의 필드는 Core Planner 코드에 의해 자동으로 설정되어 FDW에 의해 채워질 필요가 없습니다.) 또 다른 차이점은 시스템 카탈로그에서 원격 조인의 열 목록을 찾을 수 없기 때문에 FDW가 채워야한다는 것입니다.FDW_SCAN_TLIST적절한 목록TargetEntry노드, 반환하는 튜플에서 실행 시간에 공급할 열 세트를 나타냅니다.
FDW가 쓰기 가능한 토토 커뮤니티 테이블을 지원하는 경우 FDW의 요구와 기능에 따라 다음 콜백 기능을 제공해야합니다.
무효 addforeignupdateTargets (query *parsetree, rangetblentry *target_rte, 관계 target_relation);
업데이트and삭제작업은 테이블 스캔 함수에 의해 이전에 가져온 행에 대해 수행됩니다. FDW는 업데이트 또는 삭제할 정확한 행을 식별 할 수 있도록 행 ID 또는 기본 키 열의 값과 같은 추가 정보가 필요할 수 있습니다. 이를 지원하기 위해이 기능은 숨겨진 추가 또는를 추가 할 수 있습니다."정크", an 동안 토토 커뮤니티 테이블에서 검색 할 열 목록의 대상 열업데이트또는삭제.
그렇게하려면 추가TargetEntry항목 toParsetree- TargetList, 추가 값을 가져 오는 표현식을 포함합니다. 그러한 각 항목은 표시되어야합니다resjunk=trueResname실행 시간에이를 식별합니다. 일치하는 이름 사용을 피하십시오CTIDn, Wholerow또는Wholerown22007_22157Eval_Const_Expressions
TargetList에 추가하기 전에.
이 기능은 계획 중에 호출되지만 제공된 정보는 다른 계획 루틴에 사용할 수있는 정보와 약간 다릅니다.Parsetree|업데이트또는삭제명령target_rte및target_relation대상 토토 커뮤니티 표를 설명합니다.
인 경우addforeignupdateTargets
포인터가 설정되었습니다NULL, 추가 대상 표현이 추가되지 않습니다. (이것은 구현할 수 없게 될 것입니다삭제운영업데이트FDW가 변하지 않는 기본 키에 의존하여 행을 식별하는 경우에도 여전히 실현 가능할 수 있습니다.)
목록 * planforeignmodify (plannerinfo *root, ModififyTable *계획, 색인 결과, int subplan_index);
외국 테이블에서 삽입, 업데이트 또는 삭제에 필요한 추가 계획 조치를 수행합니다. 이 함수는에 첨부 될 FDW- 민간 정보를 생성합니다.modifyTable업데이트 작업을 수행하는 계획 노드. 이 개인 정보는 a의 형태가 있어야합니다.목록tearnforeignModify
실행 단계 중.
루트쿼리에 대한 플래너의 글로벌 정보입니다.planmodifyTablePlan Node,를 제외하고 완료됩니다FDWPRIVLISTS필드ressultrelation범위 테이블 지수로 대상 이물 테이블을 식별합니다.subplan_indexmodifyTable계획 노드 이것은 0에서 계산됩니다. 색인을 원한다면를 사용하십시오.plan- 계획또는 기타 하위 구조plan노드.
참조PostgreSQL : 문서 : 9.5 : 외국 데이터 래퍼 쿼리 토토 꽁 머니추가 정보는
planforeignModify
포인터가 설정되었습니다NULL, 추가 계획 시간 조치가 취하지 않고fdw_private목록 제공tearnforeignmodify
il.
무효 tertoctoreignmodify (modifyTableState *mtstate, rinfo *rinfo, 목록 *fdw_private, int subplan_index, int eflags);
토토 커뮤니티 테이블 수정 작업을 시작하십시오. 이 루틴은 집행자 스타트 업 동안 호출됩니다. 실제 테이블 수정 전에 필요한 초기화를 수행해야합니다. 그후,execforeigninsert
, execforeignupdate
또는execforeigndelete
각 튜플이 삽입, 업데이트 또는 삭제되도록 요청됩니다.
mtstatemodifyTable실행중인 계획 노드; 계획 및 실행 상태에 대한 글로벌 데이터는이 구조를 통해 사용할 수 있습니다.Rinforesultrelinfo대상 이물질 테이블을 설명하는 구조. (그만큼RI_FDWSTATE필드resultrelinfoFDW 가이 작업에 필요한 개인 상태를 저장할 수 있습니다.)fdw_privatePlanforeignModify
, 경우.subplan_indexmodifyTable계획 노드입니다.eflags이 계획 노드에 대한 집행자의 운영 모드를 설명하는 플래그 비트가 포함되어 있습니다.
(eflags & exec_flag_explain_only)사실,이 기능은 외부가 가시적으로 행동하지 않아야합니다. 노드 상태를 유효하게하는 데 필요한 최소 값 만ForeignModify 설명
및endforeignModify
.
teeralforeignmodify
포인터가 설정되었습니다NULL, 집행자 스타트 업 동안 조치를 취하지 않습니다.
tupletableslot * execforeigninsert (Estate *Estate, rinfo *rinfo, tupletableslot *슬롯, tupletableslot *planlot);
하나의 튜플을 토토 커뮤니티 테이블에 삽입하십시오.Estate쿼리의 글로벌 실행 상태입니다.rinforesultrelinfo대상 토토 커뮤니티 표를 설명하는 구조.슬롯삽입 할 튜플을 포함합니다. 토토 커뮤니티 테이블의 행 유형 정의와 일치합니다.plantlotmodifyTable계획 노드의 하위 비행; 에서 다릅니다.슬롯가능성이 추가로"정크"열. (그만큼plantlot일반적으로에 대한 관심은 거의 없습니다.삽입사례이지만 완전성을 위해 제공됩니다.)
반환 값은 실제로 삽입 된 데이터를 포함하는 슬롯입니다 (예 : 트리거 작업의 결과로 제공된 데이터와 다를 수 있음) 또는 실제로 행이 삽입되지 않은 경우 (일반적으로 트리거 결과). 통과슬롯이 목적으로 재사용 할 수 있습니다.
반환 된 슬롯의 데이터는에만 사용됩니다.삽입Query는반환절 또는 외국 테이블에가 있습니다.After Row트리거. 트리거는 모든 열이 필요하지만 FDW는의 내용에 따라 일부 또는 모든 열을 반환하는 것을 최적화하도록 선택할 수 있습니다.반환절. 그럼에도 불구하고 일부 슬롯은 성공을 나타내려면 반환되어야합니다. 그렇지 않으면 쿼리의보고 된 행 카운트가 잘못 될 것입니다.
execforeigninsert
포인터가 설정되었습니다NULL, 오류 메시지와 함께 외국 테이블에 삽입하려는 시도가 실패합니다.
tupletableslot * execforeignupdate (Estate *Estate, rinfo *rinfo, tupletableslot *슬롯, tupletableslot *planlot);
외국 테이블에서 하나의 튜플 업데이트.Estate쿼리의 글로벌 실행 상태입니다.rinforesultrelinfo대상 토토 커뮤니티 표를 설명하는 구조.슬롯튜플에 대한 새로운 데이터를 포함합니다. 토토 커뮤니티 테이블의 행 유형 정의와 일치합니다.plantlotmodifyTable계획 노드의 하위 비행; 에서 다릅니다.슬롯가능성이 추가로"정크"열. 특히, 요청한 모든 정크 열은addforeignupdateTargets
이 슬롯에서 사용할 수 있습니다.
반환 값은 실제로 업데이트 된 행을 포함하는 슬롯입니다 (예 : 트리거 작업의 결과로 제공된 데이터와 다를 수 있음) 또는 실제로 행이 업데이트되지 않은 경우 (일반적으로 트리거 결과). 통과슬롯이 목적으로 재사용 할 수 있습니다.
반환 된 슬롯의 데이터는에만 사용됩니다.업데이트query가 a반환절 또는 외국 테이블에가 있습니다.행 후트리거. 트리거는 모든 열이 필요하지만 FDW는의 내용에 따라 일부 또는 모든 열을 반환하는 것을 최적화하도록 선택할 수 있습니다.반환절. 그럼에도 불구하고 일부 슬롯은 성공을 나타내려면 반환되어야합니다. 그렇지 않으면 쿼리의보고 된 행 카운트가 잘못 될 것입니다.
IFexecforeignupdate
포인터가 설정되었습니다NULL, 오류 메시지로 외국 테이블을 업데이트하려는 시도가 실패합니다.
TupleTablesLot * execforeigndelete (Estate *Estate, rinfo *rinfo, tupletableslot *슬롯, tupletableslot *planlot);
외래 테이블에서 하나의 튜플을 삭제합니다.Estate쿼리의 글로벌 실행 상태입니다.rinforesultrelinfo대상 토토 커뮤니티 표를 설명하는 구조.슬롯전화시 유용한 것은 포함되지만 반환 된 튜플을 고정하는 데 사용될 수 있습니다.plantlotmodifyTable계획 노드의 하위 비행; 특히에 의해 요청 된 모든 정크 열이 운반됩니다.addforeignupdatetArgets
. 정크 열을 사용하여 삭제할 튜플을 식별해야합니다.
반환 값은 삭제 된 행을 포함하는 슬롯이거나 행이 삭제되지 않은 경우 (일반적으로 트리거의 결과)입니다. 통과슬롯튜플을 반환 할 수 있도록 사용할 수 있습니다.
반환 된 슬롯의 데이터는에만 사용됩니다.삭제Query가 a반환절 또는 외국 테이블에가 있습니다.행 후트리거. 트리거는 모든 열이 필요하지만 FDW는의 내용에 따라 일부 또는 모든 열을 반환하는 것을 최적화하도록 선택할 수 있습니다.반환절. 그럼에도 불구하고 일부 슬롯은 성공을 나타내려면 반환되어야합니다. 그렇지 않으면 쿼리의보고 된 행 카운트가 잘못 될 것입니다.
execforeigndelete
포인터가 설정되었습니다NULL, 오류 메시지와 함께 외국 테이블에서 삭제하려는 시도가 실패합니다.
무효 endforeignmodify (Estate *Estate, resultrelinfo *rinfo);
테이블 업데이트 및 릴리스 리소스를 종료하십시오. 일반적으로 Palloc'd 메모리를 해제하는 것은 중요하지 않지만 예를 들어 원격 서버에 대한 열린 파일 및 연결을 정리해야합니다.
endforeignModify
포인터가 설정되었습니다NULL, 집행자 종료 중에 조치를 취하지 않습니다.
int isforeignrelupdatable (관계 rel);
지정된 외국 테이블이 지원하는 업데이트 업데이트 보고서. 반환 값은를 사용하여 외국 테이블에서 어떤 작업을 지원하는지를 나타내는 규칙 이벤트 번호의 약간 마스크 여야합니다.cmdtype열거; 즉,(1 << cmd_update) = 4for업데이트, (1 << cmd_insert) = 8for삽입및(1 << cmd_delete) = 16for삭제.
isforeignrelupdatable
포인터가 설정되었습니다NULL, FDW가 제공하는 경우 삽입 가능, 업데이트 가능 또는 삭제 가능한 것으로 가정합니다execforeigninsert
, execforeignupdate
또는execforeigndelete
각각. 이 기능은 FDW가 업데이트 가능한 일부 테이블과 그렇지 않은 테이블을 지원하는 경우에만 필요합니다. (그럼에도 불구 하고이 함수를 확인하는 대신 실행 루틴에서 오류를 던지는 것이 허용됩니다. 그러나이 기능은에 표시 될 업데이트 가능성을 결정하는 데 사용됩니다.Information_Schema보기)
FDW가 지원하기를 원한다면늦은 행 잠금(에 설명 된대로PostgreSQL : 문서 : 9.5 : 외국 데이터 포장지에서 행 토토 꽁 머니), 다음 콜백 함수를 제공해야합니다.
RowmarkType getforeignrowmarktype (rangetblentry *rte, lockclausestrength 강도);
토토 커뮤니티 테이블에 사용할 행 마킹 옵션을보고합니다.RTErangetblentry테이블의 노드 및강도관련성이 요청한 잠금 강도를 설명업데이트/공유조항이있는 경우. 결과는의 회원이어야합니다.RowmarkTypeEnum Type.
이 함수는 AN에 나타나는 각 토토 커뮤니티 테이블에 대한 쿼리 계획 중에 호출됩니다.업데이트, 삭제또는업데이트/공유 선택쿼리 및 대상이 아닙니다업데이트또는삭제.
getforeignrowmarkType
포인터가 설정되었습니다NULL, Therow_mark_copy옵션은 항상 사용됩니다. (이것은Refetchforeignrow
절대 호출되지 않으므로 제공 될 필요는 없습니다.)
참조PostgreSQL : 문서 : 9.5 : 외국 데이터 포장지에서 행 토토 꽁 머니자세한 내용은
Refetchforeignrow (Estate *Estate, execrowmark *erm, Datum Rowid, bool *업데이트);
필요한 경우 고정 후 외래 테이블에서 하나의 튜플을 다시 가져옵니다.Estate쿼리의 글로벌 실행 상태입니다.ermexecrowmark대상 이물 테이블과 행 잠금 유형 (획득 할 행 잠금 유형)을 설명하는 구조.Rowid튜플을 가져올 튜플을 식별합니다.업데이트출력 매개 변수입니다.
이 함수는 페치 된 튜플의 palloc 's 사본을 반환해야합니다.NULL행 잠금을 얻을 수없는 경우. 획득 할 행 잠금 유형은에 의해 정의됩니다.ERM- MarkType,이 값은 이전에 반환 된 값입니다getforeignrowmarkType
. (row_mark_reference잠금 장치를 얻지 않고 튜플을 다시 가져 오는 것을 의미합니다.row_mark_copy이 루틴에서 결코 보지 못할 것입니다.)
또한*업데이트로 설정해야합니다true가져온 것이 이전에 얻은 것과 동일한 버전이 아닌 튜플의 업데이트 된 버전 인 경우. (FDW가 이것에 대해 확신 할 수 없다면 항상 반환true권장됩니다.)
기본적으로 행 잠금을 얻지 못하면 오류가 발생해야합니다. 에이NULL반환은 일 경우에만 적절합니다스킵 잠긴옵션은에 의해 지정됩니다erm- waitpolicy.
theRowidCTID행을 다시 가져 오기 위해 이전에 읽은 값. 비록Rowid값은 A로 전달됩니다Datum, 현재는 A 일 수 있습니다.TID. 기능 API는 향후 행 ID의 다른 데이터 유형을 허용 할 수 있기를 희망하여 선택됩니다.
Refetchforeignrow
포인터가 설정되었습니다NULL, 오류 메시지로 행을 다시 가져 오려는 시도가 실패합니다.
참조PostgreSQL : 문서 : 9.5 : 외국 데이터 포장지에서 행 토토 꽁 머니자세한 내용은
bool RECHECKFOREIGNSCAN (OSETIONSCANSTATE *노드, tupleTablesLot *슬롯);
이전에 반복 된 튜플이 여전히 관련 스캔과 일치하고 예선에 가입하고 수정 된 버전의 튜플을 제공 할 수 있음을 다시 확인하십시오. Join Pushdown을 수행하지 않는 토토 커뮤니티 데이터 포장지의 경우 일반적으로이를 설정하는 것이 더 편리합니다.NULL대신 설정FDW_RECHECK_QUALS적절하게. 그러나 외부 결합이 밀려 나면 필요한 모든 속성이 존재하더라도 모든 기본 테이블과 관련된 검사를 결과 튜플에 다시 적용하는 것만으로는 충분하지 않습니다. 일부 예선과 일치하지 않더라도 일부 속성이 반환되지 않고 일부 속성이 널로 이동할 수 있기 때문입니다..Recheckforeignscan예선을 다시 확인하고 여전히 만족스럽고 거짓이라면 True를 반환 할 수 있지만 교체 튜플을 제공된 슬롯에 저장할 수도 있습니다..
가입 푸시 다운을 구현하기 위해 토토 커뮤니티 데이터 래퍼는 일반적으로 재확인에만 사용되는 대체 로컬 조인 계획을 구성합니다. 이것은의 외부 하위 플랜이 될 것입니다.Outissscan. 재확인이 필요한 경우,이 하위 플랜을 실행할 수 있고 결과 튜플은 슬롯에 저장 될 수 있습니다. 기본 테이블이 둘 이상의 행을 반환하지 않기 때문에이 계획은 효율적 일 필요는 없습니다. 예를 들어, 모든 결합을 중첩 루프로 구현할 수 있습니다.
무효 foreignscan을 설명 설명 *es);
추가 인쇄설명외래 테이블 스캔의 출력. 이 기능은 호출 할 수 있습니다설명 프 로퍼 타입 텍스트
및 필드를 추가하는 관련 함수설명출력. 깃발 필드es인쇄 할 내용을 결정하는 데 사용될 수 있으며Outissscanstate노드를 검사하여 런타임 통계를 제공 할 수 있습니다.분석CASE.
설명 foreignscan
포인터가 설정되었습니다NULL, 추가 정보가 인쇄되지 않습니다설명.
무효 foreignModify 설명 (modifyTableState *mtstate, rinfo *rinfo, 목록 *fdw_private, int subplan_index, structstate *es);
추가 인쇄설명외국 테이블 업데이트의 출력. 이 기능은 호출 할 수 있습니다설명 프 로퍼 타입 텍스트
및 필드를 추가하는 관련 함수설명출력. 깃발 필드es인쇄 할 내용과 상태를 결정하는 데 사용될 수 있으며ModifyTableState노드를 검사하여 런타임 통계를 제공 할 수 있습니다분석케이스. 처음 네 가지 인수는와 동일합니다.earchneforeignModify
.
ForeignModify 설명
포인터가 설정되었습니다NULL, 추가 정보가 인쇄되지 않습니다설명.
bool Analyzeforeigntable (관계 관계, arceSamplerowsFunc *func, BlockNumber *TotalPages);
이 함수는 호출됩니다.PostgreSQL : 문서 : 9.5 : 스포츠 토토 결과는 외국 테이블에서 실행됩니다. FDW 가이 외국 테이블에 대한 통계를 수집 할 수 있다면 반환해야합니다truefunc, in 페이지의 테이블의 추정 크기와TotalPages. 그렇지 않으면 return거짓.
FDW가 테이블에 대한 통계 수집을 지원하지 않으면Analyzeforeigntable
포인터를 설정할 수 있습니다NULL.
제공된 경우 샘플 수집 기능에 서명이 있어야합니다
int AcquireSamplerowsFunc (관계 관계, int elevel, 무거운 *행, int targrows, 이중 *Totalrows, Double *Totaldeadrows);
최대의 무작위 샘플Targrows행을 테이블에서 수집하고 발신자가 제공 한에 저장해야합니다행배열. 수집 된 실제 행 수를 반환해야합니다. 또한 테이블의 총 라이브 및 데드 행의 총 수에 대한 추정치를 출력 매개 변수로 저장하십시오.Totalrows및TotalDeadrows. (세트TotalDeadrowsFDW에 데드 행의 개념이없는 경우 0까지.)
목록 * importforeignschema (importforeignschemastmt *stmt, oid serveroid);
외국 테이블 생성 명령 목록을 얻습니다. 이 기능은 실행할 때 호출됩니다PostgreSQL : 문서 :, 그리고 해당 진술의 구문 분석 트리와 사용할 외국 서버의 OID가 전달됩니다. 그것은 c 문자열 목록을 반환해야하며, 각각은 A를 포함해야합니다.PostgreSQL : 문서명령. 이 문자열은 핵심 서버에서 구문 분석하고 실행됩니다.
내에서importforeignschemastmtstruct,Remote_schema테이블을 가져올 원격 스키마의 이름입니다.list_type테이블 이름을 필터링하는 방법을 식별합니다 :fdw_import_schema_all원격 스키마의 모든 테이블을 가져와야 함을 의미합니다 (이 경우table_list비어 있음),fdw_import_schema_limit_to에 나열된 테이블 만 포함한다는 의미table_list및FDW_IMPORT_SCHEMA_EXCEPT나열된 테이블을 제외하는 것을 의미합니다.table_list. 옵션는 가져 오기 프로세스에 사용되는 옵션 목록입니다. 옵션의 의미는 FDW에 달려 있습니다. 예를 들어, FDW는 옵션을 사용하여를 정의 할 수 있습니다.NOT NULL열의 속성을 가져와야합니다. 이러한 옵션은 FDW에서 데이터베이스 개체 옵션으로 지원하는 것과 관련이 없습니다.
FDW가 무시할 수 있습니다local_schema필드importforeignschemastmt, 코어 서버가 해당 이름을 구문 분석에 자동으로 삽입하므로토토 커뮤니티 테이블 만들기명령.
FDW는 |list_type및table_list, Core Server가 해당 옵션에 따라 제외 된 테이블에 대한 반환 된 명령을 자동으로 건너 뜁니다. 그러나 처음에는 제외 된 테이블에 대한 명령을 만드는 작업을 피하는 것이 종종 유용합니다. 함수isimportable foreigntable ()
주어진 이물질 이름이 필터를 전달하는지 여부를 테스트하는 데 유용 할 수 있습니다.
FDW가 테이블 정의 가져 오기를 지원하지 않으면importforeignschema
포인터를 설정할 수 있습니다NULL.
PostgreSQL : 문서 : 9.5 : 토토 캔 데이터 래퍼 함수 | 롤 토토 커뮤니티 : 문서 : 9.5 : 롤 토토 9.5.25 문서화 | 43토토 커뮤니티 꽁 머니27 |
토토 커뮤니티 데이터 포장지 기능 | PostgreSQL : 문서 : 9.5 : 외국 무지개 토토 래퍼 쓰기 | 토토 커뮤니티 데이터 포장지 도우미 기능 |