젠 토토 : 문서 : 9.6 : 젠 토토 | |||
---|---|---|---|
이전 | PostgreSQL : 문서 : 9.6 : 사용자 정의 토토 캔 제공자 작성 | 57 장. 사용자 정의 토토 핫 제공자 쓰기 | 다음 |
사용자 정의 토토 핫은 다음 구조를 사용하여 완성 된 계획 트리에 표시됩니다.
typedef struct customscan
토토 핫추정 비용, 목표 목록, 자격 등을 포함하여 다른 토토 핫과 같이 초기화되어야합니다..플래그|CustomPath.custom_plans아동을 저장하는 데 사용할 수 있습니다plan노드.custom_exprs|setrefs.candsubSelect.c, whilecustom_private사용자 정의 토토 핫 제공자 자체에서만 사용되는 다른 개인 데이터를 저장하는 데 사용해야합니다.custom_scan_tlist기본 관계를 토토 핫 할 때는 NIL 일 수 있습니다. 이는 사용자 정의 토토 핫이 기본 관계의 행 유형과 일치하는 토토 핫 튜플을 반환합니다. 그렇지 않으면 실제 토토 핫 튜플을 설명하는 대상 목록입니다.custom_scan_tlist조인을 위해 제공되어야하며 사용자 정의 토토 핫 제공자가 비 VAR 표현식을 계산할 수있는 경우 토토 핫을 위해 제공 될 수 있습니다.custom_relids이 토토 핫 노드 핸들링의 관계 세트 (범위 테이블 인덱스)에 대한 핵심 코드에 의해 설정됩니다. 이 토토 핫이 Join을 교체하는 경우를 제외하고는 회원이 한 명뿐입니다.Methods필요한 사용자 정의 토토 핫 방법을 구현하는 (일반적으로 정적으로 할당 된) 객체를 가리려면 아래에 자세히 설명되어 있어야합니다.
언제CustomScan단일 관계를 토토 핫합니다scan.scanrelid토토 핫 할 테이블의 범위 테이블 인덱스 여야합니다. 조인을 대체 할 때Scan.Scanrelid0이어야합니다.
계획 트리는 사용하여 복제 할 수 있어야합니다CopyObject
"Custom"필드는 해당 함수가 처리 할 수있는 노드로 구성되어야합니다. 또한 사용자 정의 토토 핫 제공자는 A를 포함시키는 더 큰 구조를 대체 할 수 없습니다.CustomScan구조 자체의 경우CustomPath또는CustomScanstate.
노드 *( *CreateCustomScanstate) (CustomCSCAN *CSCAN);
할당 aCustomScanstatethisCustomScan. 실제 할당은 종종 평범한 것에 필요한 것보다 클 것입니다CustomScanstate, 많은 공급자가 더 큰 구조의 첫 번째 필드로 포함시키기를 원하기 때문입니다. 반환 된 값에는 노드 태그와가 있어야합니다.Methods적절하게 설정했지만 다른 필드는이 단계에서 0으로 남겨 져야합니다. 후에execinitCustomScan
기본 초기화 수행,BegincustomScan
콜백이 호출되어 사용자 정의 토토 핫 제공자에게 필요한 모든 것을 할 수있는 기회를 제공합니다.
이전 | 젠 토토 : 문서 : 9.6 : 젠 토토 9.6.24 문서화 | 다음 |
사용자 정의 토토 핫 경로 만들기 | PostgreSQL : 문서 : 9.6 : 사용자 정의 토토 캔 제공자 작성 | 사용자 정의 토토 핫 실행 |