58.2. 맞춤형 와이즈 토토 계획 만들기

사용자 정의 와이즈 토토은 다음 구조를 사용하여 완성 된 계획 트리에 표시됩니다.

typedef struct customscan

    와이즈 토토 와이즈 토토;
    UINT32 플래그;
    List *Custom_Plans;
    list *custom_exprs;
    list *custom_private;
    list *custom_scan_tlist;
    BitMapset *custom_relids;
    const customscanmethods *methods;
 customscan;

와이즈 토토추정 비용, 목표 목록, 자격 등을 포함하여 다른 와이즈 토토과 같이 초기화되어야합니다.플래그|CustomPath. custom_plans아동을 저장하는 데 사용할 수 있습니다plan노드.custom_exprs|setrefs.candsubSelect.c, whilecustom_private사용자 정의 와이즈 토토 제공자 자체에서만 사용되는 다른 개인 데이터를 저장하는 데 사용해야합니다.custom_scan_tlist기본 관계를 와이즈 토토 할 때는 NIL이 될 수 있으며, 이는 사용자 정의 와이즈 토토이 기본 관계의 행 유형과 일치하는 와이즈 토토 튜플을 반환 함을 나타냅니다. 그렇지 않으면 실제 와이즈 토토 튜플을 설명하는 대상 목록입니다.custom_scan_tlist조인을 위해 제공되어야하며 사용자 정의 와이즈 토토 제공자가 비 VAR 표현식을 계산할 수있는 경우 와이즈 토토을 위해 제공 될 수 있습니다.custom_relids이 와이즈 토토 노드 손잡이의 관계 세트 (범위 테이블 인덱스)에 대한 핵심 코드에 의해 설정됩니다. 이 와이즈 토토이 Join을 교체하는 경우를 제외하고는 회원이 한 명뿐입니다.방법필요한 사용자 정의 와이즈 토토 방법을 구현하는 (일반적으로 정적으로 할당 된) 객체를 가리려면 아래에 자세히 설명되어 있어야합니다.

aCustomScan단일 관계를 와이즈 토토합니다.scan.scanrelid와이즈 토토 할 테이블의 범위 테이블 인덱스 여야합니다. 조인을 대체 할 때scan.scanrelid0이어야합니다.

플랜 트리는 사용하여 복제 할 수 있어야합니다CopyObjectCustom필드는 해당 함수가 처리 할 수있는 노드로 구성되어야합니다. 또한 사용자 정의 와이즈 토토 제공자는 A를 포함시키는 더 큰 구조를 대체 할 수 없습니다.CustomScan구조 자체의 경우CustomPath또는CustomScanstate.

58.2.1. 맞춤형 와이즈 토토 계획 콜백

노드 *( *CreateCustomScanstate) (CustomCSCAN *CSCAN);

할당 aCustomScanstatethisCustomScan. 실제 할당은 종종 평범한 것에 필요한 것보다 클 것입니다CustomScanstate, 많은 공급자가 더 큰 구조의 첫 번째 필드로 포함시키기를 원하기 때문입니다. 반환 된 값에는 노드 태그와가 있어야합니다.Methods적절하게 설정했지만 다른 필드는이 단계에서 0으로 남겨 져야합니다. 후에execinitCustomScan기본 초기화 수행,BegincustomScan콜백이 호출되어 사용자 정의 와이즈 토토 제공 업체가 필요한 다른 일을 할 수있는 기회를 제공합니다.

정정 제출

문서에 올바른 것이 없으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면