59.1. 젠 토토 정의 스캔 경로 생성#

사용자 정의 스캔 제공자는 일반적으로 다음 후크를 설정하여 기본 관계에 대한 경로를 추가합니다. 핵심 코드가 관계를 위해 가능한 모든 액세스 경로를 생성 한 후 호출 된 후에 호출 된 후에 호출 및 수집 한 병합 경로를 제외 하고이 통화 후에 이루어지면 후크가 추가 할 수 있도록 다음과 같은 부분 경로를 사용할 수 있습니다.

typedef void ( *set_rel_pathlist_hook_type) (plannerInfo *root,

이 후크 함수는 코어 시스템에서 생성 된 경로를 검사, 수정 또는 제거하는 데 사용될 수 있지만 젠 토토 정의 스캔 제공자는 일반적으로 생성에 제한됩니다CustomPath개체 및 추가Rel사용add_path또는add_partial_path부분 경로 인 경우. 사용자 정의 스캔 제공자는 초기화를 담당합니다.CustomPath객체, 다음과 같이 선언됩니다.

typedef struct custompath

PATH이 경로에서 제공 한로드 카운트 견적, 시작 및 총 비용 및 정렬 주문을 포함한 다른 경로와 같이 초기화되어야합니다.플래그스캔 제공자가 특정 선택 기능을 지원할 수 있는지 여부를 지정하는 비트 마스크입니다.플래그포함해야custompath_support_backward_scan사용자 정의 경로가 뒤로 스캔을 지원할 수있는 경우custompath_support_mark_restore마크 및 복원을 지원할 수 있다면custompath_support_projection투영을 수행 할 수있는 경우. (만약에custompath_support_projection설정되지 않으면 스캔 노드는 스캔 된 관계의 VAR 만 생성하도록 요청됩니다. 해당 플래그가 설정되면 스캔 노드는 이러한 VARS를 통해 스칼라 표현식을 평가할 수 있어야합니다.) 선택 사항custom_paths입니다.PATH이 사용자 정의 노드에서 사용하는 노드; 이것들은로 변형 될 것입니다.plan플래너의 노드. 아래에 설명 된 바와 같이, 조인 관계를 위해 사용자 정의 경로를 만들 수도 있습니다.custom_restrictinfo가입 조항 세트를 저장하여 교체 교체 조치에 적용해야합니다. 그렇지 않으면 그것은 nil이어야합니다.​​custom_private사용자 정의 경로의 개인 데이터를 저장하는 데 사용할 수 있습니다. 개인 데이터는에 의해 처리 할 수있는 양식으로 저장해야합니다.Nodetostring, 사용자 정의 경로를 인쇄하려는 디버깅 루틴이 설계된대로 작동합니다.방법필요한 사용자 정의 경로 메소드를 구현하는 (일반적으로 정적으로 할당 된) 객체를 가리려면 아래에 자세히 설명되어 있어야합니다.

사용자 정의 스캔 제공자는 조인 경로를 제공 할 수도 있습니다. 기본 관계의 경우, 그러한 경로는 일반적으로 교체하는 조인에 의해 생성되는 것과 동일한 출력을 생성해야합니다.CustomPath조인 관계의 경로.

typedef void ( *set_join_pathlist_hook_type) (plannerInfo *root,

이 후크는 내부 및 외부 관계의 다른 조합과 동일한 결합 관계에 대해 반복적으로 호출됩니다. 복제 된 작업을 최소화하는 것은 후크의 책임입니다.

조인 조인 조항 세트는 조인에 적용되며extra-> gronglist는 내부 및 외부 관계의 조합에 따라 다릅니다. 에이CustomPathjoinrel사용하는 조인 조항 세트가 포함되어야하며, 이는 플래너가 사용하여CustomPath플래너에 의해 선정 된 경우.joinrel.

59.1.1. 사용자 정의 스캔 경로 콜백#

plan *( *plancustompath) (plannerinfo *root,

사용자 정의 경로를 완성 된 계획으로 변환합니다. 반환 값은 일반적으로입니다.CustomScan개체, 콜백이 할당 및 초기화해야합니다. 보다PostgreSQL : 문서 : 17 : 59.2. 맞춤형 배트맨 토토 계획 만들기자세한 내용은

List *( *ReparameterizeCustOmpathByld) (PlannerInfo *root,

이 콜백은 주어진 아동 관계의 가장 상위 부모가 매개 변수를 변환하는 동안 호출됩니다child_rel아동 관계에 의해 매개 변수화됩니다. 콜백은 경로를 다시 보라 계수하거나 주어진에 저장된 표현식 노드를 번역하는 데 사용됩니다.​​custom_privateA 회원CustomPath. 콜백이 사용할 수 있습니다Reparameterize_path_by_child, 조정_appendrel_attrs또는조정_appendrel_attrs_multilevel필요에 따라.

정정 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면