61.1. 스포츠 토토 사이트 정의 스캔 경로 생성#

사용자 정의 스캔 제공자는 일반적으로 다음 후크를 설정하여 기본 관계에 대한 경로를 추가합니다. 이 후크는 핵심 코드가 관계에 대해 가능한 모든 액세스 경로를 생성한 후에 호출됩니다(후크에 의해 추가된 부분 경로를 사용할 수 있도록 이 호출 후에 생성되는 수집 경로는 제외):

typedef void (*set_rel_pathlist_hook_type) (PlannerInfo *root,
                                            RelOptInfo *rel,
                                            인덱스 rti,
                                            RangeTblEntry *rte);
extern PGDLLIMPORT set_rel_pathlist_hook_type set_rel_pathlist_hook;

이 후크 기능을 사용하여 핵심 시스템에서 생성된 경로를 검사, 수정 또는 제거할 수 있지만 스포츠 토토 사이트 정의 스캔 공급자는 일반적으로 생성에만 국한됩니다.스포츠 토토 사이트 정의 경로객체 및 추가rel사용 중추가_경로. 스포츠 토토 사이트 정의 스캔 제공자는 초기화를 담당합니다.스포츠 토토 사이트 정의 경로객체는 다음과 같이 선언됩니다:

typedef 구조체 CustomPath

    경로 경로;
    uint32 플래그;
    *custom_paths를 나열하십시오.
    *custom_private 나열;
    const CustomPathMethods *메소드;
 스포츠 토토 사이트 정의 경로;

경로행 개수 추정, 시작 및 총 비용, 이 경로에서 제공하는 정렬 순서를 포함하여 다른 경로와 마찬가지로 초기화되어야 합니다.플래그스캔 공급자가 특정 선택적 기능을 지원할 수 있는지 여부를 지정하는 비트 마스크입니다.플래그포함해야 함CUSTOMPATH_SUPPORT_BACKWARD_SCAN스포츠 토토 사이트 정의 경로가 역방향 스캔을 지원할 수 있는 경우,CUSTOMPATH_SUPPORT_MARK_RESTORE표시 및 복원을 지원할 수 있는 경우 및CUSTOMPATH_SUPPORT_PROJECTION투영을 수행할 수 있는 경우. (만약CUSTOMPATH_SUPPORT_PROJECTION이 설정되지 않은 경우, 스캔 노드는 스캔된 관계의 Vars를 생성하도록 요청받습니다. 반면 해당 플래그가 설정된 경우 스캔 노드는 이러한 Var에 대해 스칼라 표현식을 평가할 수 있어야 합니다.) 선택 사항custom_paths다음 목록입니다경로이 스포츠 토토 사이트 정의 경로 노드에서 사용되는 노드; 이것들은 다음과 같이 변환될 것입니다.계획플래너별 노드.custom_private스포츠 토토 사이트 정의 경로의 개인 데이터를 저장하는 데 사용할 수 있습니다. 개인 데이터는 다음에서 처리할 수 있는 형식으로 저장되어야 합니다.nodeToString, 맞춤 경로를 인쇄하려고 시도하는 디버깅 루틴이 설계된 대로 작동하도록 합니다.메서드필요한 스포츠 토토 사이트 정의 경로 메소드를 구현하는 (일반적으로 정적으로 할당된) 객체를 가리켜야 합니다. 자세한 내용은 아래에 설명되어 있습니다.

사용자 정의 스캔 제공자는 조인 경로도 제공할 수 있습니다. 기본 관계와 마찬가지로 이러한 경로는 대체하는 조인에 의해 일반적으로 생성되는 것과 동일한 출력을 생성해야 합니다. 이렇게 하려면 조인 공급자가 다음 후크를 설정한 다음 후크 함수 내에서 create스포츠 토토 사이트 정의 경로조인 관계에 대한 경로.

typedef void (*set_join_pathlist_hook_type) (PlannerInfo *root,
                                             RelOptInfo *joinrel,
                                             RelOptInfo *외부,
                                             RelOptInfo *innerrel,
                                             JoinType 조인 유형,
                                             JoinPathExtraData *추가);
extern PGDLLIMPORT set_join_pathlist_hook_type set_join_pathlist_hook;

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

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

계획 *(*PlanCustomPath) (PlannerInfo *루트,
                         RelOptInfo *rel,
                         스포츠 토토 사이트 정의 경로 *best_path,
                         목록 *tlist,
                         *절 나열,
                         *custom_plans 나열);

스포츠 토토 사이트 정의 경로를 완성된 계획으로 변환합니다. 반환 값은 일반적으로 다음과 같습니다.CustomScan콜백이 할당하고 초기화해야 하는 객체입니다. 참조PostgreSQL : 문서 : 16 : 61.2. 맞춤형 스포츠 토토 베트맨 계획 만들기자세한 내용은.

목록 *(*ReparameterizeCustomPathByChild) (PlannerInfo *root,
                                          *custom_private 목록,
                                          RelOptInfo *child_rel);

이 콜백은 주어진 하위 관계의 최상위 상위에 의해 매개변수화된 경로를 변환하는 동안 호출됩니다.child_rel하위 관계에 의해 매개변수화됩니다. 콜백은 경로를 다시 매개변수화하거나 주어진에 저장된 표현식 노드를 변환하는 데 사용됩니다.custom_privatea의 회원맞춤 경로. 콜백은 다음을 사용할 수 있습니다.reparameterize_path_by_child, adjust_appendrel_attrs또는adjust_appendrel_attrs_multilevel필요에 따라.

수정사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.