이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 59.3. 맞춤 토토 베이 실행버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

60.3. 맞춤 토토 실행#

언제CustomScan실행되고, 실행 상태는 A로 표시됩니다.CustomScanstate, 다음과 같이 선언됩니다.

typedef struct customscanstate

SS토토이 기본 관계가 아닌 조인을위한 경우를 제외하고 다른 토토 상태와 같이 초기화됩니다.ss.ss_currentrelation가 남은 상태입니다.플래그|CustomPathandCustomScan. Methods필요한 사용자 정의 토토 상태 메소드를 구현하는 (일반적으로 정적으로 할당 된) 객체를 가리켜야합니다. 일반적으로 aCustomScanstate, 지원할 필요가없는CopyObject, 실제로 위의 첫 번째 멤버로 위의 더 큰 구조가 될 것입니다.

60.3.1. 사용자 정의 토토 실행 콜백#

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는 대상 목록 및 토토 관계와 같은이 콜백 없이도 표시되지만 콜백은 추가 개인 상태를 표시 할 수 있습니다..