때CustomScan이 실행되면 실행 상태는 다음과 같이 표시됩니다.CustomScanState, 다음과 같이 선언됩니다.
typedef 구조체 CustomScanState
스캔스테이트 SS;
uint32 플래그;
const CustomExecMethods *메소드;
CustomScanState;
ss메이저 토토 사이트이 기본 관계가 아닌 조인에 대한 경우를 제외하고는 다른 메이저 토토 사이트 상태와 마찬가지로 초기화됩니다.ss.ss_currentRelationNULL로 남습니다.플래그에서와 같은 의미를 지닌 비트 마스크입니다.사용자 정의 경로그리고CustomScan. 메소드은 필수 사용자 정의 스캔 상태 메소드를 구현하는(일반적으로 정적으로 할당된) 객체를 가리켜야 합니다. 이에 대해서는 아래에서 자세히 설명합니다. 일반적으로 aCustomScanState, 지원이 필요하지 않음copyObject은 실제로 위 항목을 첫 번째 멤버로 포함하는 더 큰 구조가 됩니다.
void (*BeginCustomScan) (CustomScanState *노드,
부동산 *부동산,
int 플래그);
제공된 초기화 완료CustomScanState. 표준 필드는 다음에 의해 초기화되었습니다.ExecInitCustomScan, 그러나 모든 비공개 필드는 여기에서 초기화되어야 합니다.
TupleTableSlot *(*ExecCustomScan) (CustomScanState *노드);
다음 스캔 튜플을 가져옵니다. 튜플이 남아 있으면 채워져야 합니다.ps_ResultTupleSlot현재 스캔 방향의 다음 튜플을 사용하고 튜플 슬롯을 반환합니다. 그렇지 않다면,NULL또는 빈 슬롯이 반환되어야 합니다.
void (*EndCustomScan) (CustomScanState *노드);
다음과 관련된 모든 개인 데이터를 정리하십시오.CustomScanState. 이 방법은 필수이지만 관련 데이터가 없거나 자동으로 정리되는 경우에는 아무것도 할 필요가 없습니다.
void (*ReScanCustomScan) (CustomScanState *노드);
현재 스캔을 처음으로 되감고 관계를 다시 스캔할 준비를 하십시오.
void (*MarkPosCustomScan) (CustomScanState *노드);
나중에 복원할 수 있도록 현재 스캔 위치를 저장하십시오.RestrPosCustomScan콜백. 이 콜백은 선택 사항이며 다음과 같은 경우에만 제공되어야 합니다.CUSTOMPATH_SUPPORT_MARK_RESTORE플래그가 설정되었습니다.
void (*RestrPosCustomScan) (CustomScanState *node);
다음에 의해 저장된 이전 스캔 위치를 복원합니다.MarkPosCustomScan콜백. 이 콜백은 선택 사항이며 다음과 같은 경우에만 제공되어야 합니다.CUSTOMPATH_SUPPORT_MARK_RESTORE플래그가 설정되었습니다.
크기(*EstimateDSMCustomScan)(CustomScanState *노드,
ParallelContext *pcxt);
병렬 작업에 필요한 동적 공유 메모리의 양을 추정합니다. 이는 실제 사용되는 금액보다 높을 수 있지만, 낮아져서는 안 됩니다. 반환 값은 바이트 단위입니다. 이 콜백은 선택사항이며 이 맞춤 검색 공급자가 병렬 실행을 지원하는 경우에만 제공되어야 합니다.
void (*InitializeDSMCustomScan) (CustomScanState *노드,
ParallelContext *pcxt,
무효 *좌표);
병렬 작업에 필요한 동적 공유 메모리를 초기화합니다.좌표반환 값과 동일한 크기의 공유 메모리 영역을 가리킵니다.EstimateDSMCustomScan. 이 콜백은 선택사항이며 이 맞춤 검색 공급자가 병렬 실행을 지원하는 경우에만 제공되어야 합니다.
void (*ReInitializeDSMCustomScan) (CustomScanState *노드,
ParallelContext *pcxt,
무효 *좌표);
사용자 정의 스캔 계획 노드가 다시 스캔되려고 할 때 병렬 작업에 필요한 동적 공유 메모리를 다시 초기화합니다. 이 콜백은 선택 사항이며 이 사용자 지정 검색 공급자가 병렬 실행을 지원하는 경우에만 제공해야 합니다. 권장되는 방법은 이 콜백이 공유 상태만 재설정하는 반면,ReScanCustomScan콜백은 로컬 상태만 재설정합니다. 현재 이 콜백은 이전에 호출됩니다.ReScanCustomScan, 하지만 그 순서에 의존하지 않는 것이 가장 좋습니다.
void (*InitializeWorkerCustomScan) (CustomScanState *노드,
shm_toc *toc,
무효 *좌표);
리더가 설정한 공유 상태를 기반으로 병렬 작업자의 로컬 상태를 초기화합니다.DSMCustomScan 초기화. 이 콜백은 선택사항이며 이 맞춤 검색 공급자가 병렬 실행을 지원하는 경우에만 제공되어야 합니다.
void (*ShutdownCustomScan) (CustomScanState *노드);
노드 실행이 완료되지 않을 것으로 예상되면 리소스를 해제하십시오. 모든 경우에 호출되는 것은 아닙니다. 가끔,EndCustomScan이 함수가 먼저 호출되지 않은 채 호출될 수 있습니다. 병렬 쿼리에 사용되는 DSM 세그먼트는 이 콜백이 호출된 직후 삭제되므로 DSM 세그먼트가 사라지기 전에 몇 가지 조치를 취하려는 맞춤 검색 제공자는 이 메서드를 구현해야 합니다.
void (*ExplainCustomScan) (CustomScanState *노드,
*조상 목록,
explainState *es);
다음에 대한 추가 정보 출력설명커스텀 메이저 토토 사이트 계획 노드의. 이 콜백은 선택사항입니다. 에 저장된 공통 데이터메이저 토토 사이트상태(예: 대상 목록 및 검색 관계)은 이 콜백 없이도 표시되지만 콜백을 사용하면 추가 비공개 상태를 표시할 수 있습니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.