언제CustomScan
실행되고, 실행 상태는 A로 표시됩니다.CustomScanstate
, 다음과 같이 선언됩니다.
typedef struct customscanstate
SS
토토이 기본 관계가 아닌 조인을위한 경우를 제외하고 다른 토토 상태와 같이 초기화됩니다.ss.ss_currentrelation
가 남은 상태입니다.플래그
|CustomPath
andCustomScan
. Methods
필요한 사용자 정의 토토 상태 메소드를 구현하는 (일반적으로 정적으로 할당 된) 객체를 가리켜야합니다. 일반적으로 aCustomScanstate
, 지원할 필요가없는CopyObject
, 실제로 위의 첫 번째 멤버로 위의 더 큰 구조가 될 것입니다.
void ( *begincustomscan) (CustomCscanstate *노드,
제공된 초기화 완료CustomScanstate
. 표준 필드는에 의해 초기화되었습니다.execinitCustomScan
이지만 개인 필드는 여기에서 초기화되어야합니다.
tupleTablesLot *( *execcustomScan) (CustomCscanState *노드);
다음 스캔 튜플 가져 오기. 튜플이 남아 있으면 채워야PS_RESULTTUPLESLOT
현재 스캔 방향의 다음 튜플을 사용한 다음 튜플 슬롯을 반환합니다. 그렇지 않다면NULL
또는 빈 슬롯을 반환해야합니다.
void ( *endCustomScan) (CustomCscanState *노드);
CustomScanstate
. 이 방법이 필요하지만 관련 데이터가 없거나 자동으로 정리 될 경우 아무것도 할 필요는 없습니다..
void ( *rescancustomscan) (CustomCscanstate *노드);
현재 스캔을 시작으로 되 돌리고 관계를 구제 할 준비를합니다.
void ( *markposcustomScan) (CustomCscanState *노드);
다음에 의해 복원 될 수 있도록 현재 스캔 위치를 저장SectoscustomScan
콜백. 이 콜백은 선택 사항이며 인 경우에만 제공해야합니다.custompath_support_mark_restore
플래그가 설정되었습니다.
void ( *sectoscustomScan) (customscanstate *node);
MarkposcustomScan
콜백. 이 콜백은 선택 사항이며 인 경우에만 제공해야합니다.custompath_support_mark_restore
플래그가 설정되었습니다.
size ( *prosedsmcustomScan) (CustomCscanstate *노드,
병렬 작업에 필요한 동적 공유 메모리의 양을 추정하십시오. 이것은 실제로 사용될 금액보다 높을 수 있지만 더 낮아서는 안됩니다.
void ( *InitializedSmcustomScan) (CustomCscanstate *노드,
병렬 작업에 필요한 동적 공유 메모리 초기화.좌표
return 값과 동일한 크기의 공유 메모리 영역을 가리 킵니다추정 된 SMCUSTOMSCAN
. 이 콜백은 선택 사항 이며이 사용자 지정 스캔 제공자가 병렬 실행을 지원하는 경우에만 제공해야합니다.
void ( *ReinitializedSmcustomScan) (CustomCscanstate *노드,
Custom-Scan Plan Node가 재조정 될 때 병렬 작업에 필요한 동적 공유 메모리를 다시 시작하십시오. 이 콜백은 선택 사항 이며이 사용자 지정 스캔 제공자가 병렬 실행을 지원하는 경우에만 제공해야합니다.rescancustomscan
콜백은 지역 상태 만 재설정합니다. 현재이 콜백은 이전에 호출됩니다rescancustomscan
, 그러나 그 순서에 의존하지 않는 것이 가장 좋습니다.
void ( *initializeworkercustomScan) (CustomInScanstate *노드,
|초기화 된 SMCUSTOMSCAN
. 이 콜백은 선택 사항 이며이 사용자 지정 스캔 제공자가 병렬 실행을 지원하는 경우에만 제공해야합니다.
void ( *shutdownCustomScan) (CustomCsCanstate *노드);
릴리스 리소스가 예상되면 노드가 완료되지 않도록 실행되지 않습니다. 이것은 모든 경우에 호출되는 것은 아닙니다.endCustomScan
이 기능이 먼저 호출되지 않으면 호출 될 수 있습니다. 이 콜백이 호출 된 직후 병렬 쿼리에서 사용되는 DSM 세그먼트가 파괴되므로 DSM 세그먼트가 사라지기 전에 약간의 조치를 취하려는 사용자 정의 토토 제공 업체 가이 방법을 구현해야합니다..
void ( *expliccustomScan) (customscanstate *노드,
추가 정보 출력설명
사용자 정의 토토 계획 노드. 이 콜백은 선택 사항입니다.ScanState
는 대상 목록 및 토토 관계와 같은이 콜백 없이도 표시되지만 콜백은 추가 개인 상태를 표시 할 수 있습니다..