FDW 핸들러 함수는 palloc'd를 반환합니다fdwroutine
아래에 설명 된 콜백 함수에 포인터를 포함하는 구조. 스캔 관련 기능이 필요하고 나머지는 선택 사항입니다.
thefdwroutine
struct 유형은SRC/포함/스포츠 토토 베트맨/fdwapi.h
, 추가 세부 사항을 참조하십시오.
무효
스포츠 토토 베트맨 표에 대한 관계 크기 추정치를 얻습니다. 이것은 스포츠 토토 베트맨 테이블을 스캔하는 쿼리 계획을 시작할 때 호출됩니다.루트
쿼리에 대한 플래너의 글로벌 정보입니다.Baserel
이 테이블에 대한 플래너의 정보입니다. 그리고스포츠 토토 베트맨인
pg_class
스포츠 토토 베트맨 테이블의 OID. (스포츠 토토 베트맨인
플래너 데이터 구조에서 얻을 수 있지만 노력을 절약하기 위해 명시 적으로 전달됩니다.)
이 기능이 업데이트되어야합니다Baserel-> 행
제한에 의해 수행 된 필터링을 설명 한 후 테이블 스캔에 의해 반환 된 예상 행의 수가 되려면. 의 초기 값Baserel-> 행
는 일정한 기본 추정치 일 뿐이며 가능한 경우 교체해야합니다. 함수는 또한 업데이트를 선택할 수 있습니다Baserel-> 너비
평균 결과 행 너비의 더 나은 추정치를 계산할 수있는 경우. (초기 값은 열 데이터 유형과 마지막으로 측정 한 열 평균 폭 값을 기준으로합니다분석
.) 또한이 기능이 업데이트 될 수 있습니다Baserel-> Tuples
스포츠 토토 베트맨 테이블의 총 행 수에 대한 더 나은 추정치를 계산할 수있는 경우. (초기 값은pg_class
.reltuples
마지막으로 보이는 총 행 수를 나타냅니다분석
.)
참조PostgreSQL : 문서 : 11 : 57.4. 외국 데이터 포장 쿼리 스포츠 토토 결과추가 정보는
무효
스포츠 토토 베트맨 테이블에서 스캔 할 수있는 액세스 경로를 만듭니다. 이것은 쿼리 계획 중에 호출됩니다.getforeignRelsize
, 이미 호출되었습니다.
이 함수는 하나 이상의 액세스 경로를 생성해야합니다 (스포츠 토토 베트맨 경로
노드) 외부 테이블의 스캔을 위해서는 전화해야합니다add_path
그러한 각 경로를 추가하려면Baserel-> PathList
. 사용하는 것이 좋습니다create_foreignscan_path
빌드하려면스포츠 토토 베트맨 경로
노드. 함수는 여러 액세스 경로를 생성 할 수 있습니다 (예 : 유효한 경로Pathkeys
사전 분류 된 결과를 나타냅니다. 각 액세스 경로에는 비용 추정치가 포함되어야하며 의도 된 특정 스캔 방법을 식별하는 데 필요한 FDW- 민간 정보가 포함될 수 있습니다.
참조PostgreSQL : 문서 : 11 : 57.4. 외국 데이터 포장 쿼리 스포츠 토토 결과추가 정보는
Outissscan *
생성Foreignscan
선택한 외래 액세스 경로에서 노드를 계획하십시오. 쿼리 계획이 끝날 때 호출됩니다.getforeignRelsize
, 선택한스포츠 토토 베트맨 경로
(이전에 생산getforeignpaths
, getforeignjoinpaths
또는getforeignupperPaths
), 계획 노드에 의해 방출 될 대상 목록, 계획 노드에 의해 시행 될 제한 조항 및의 외부 하위 계획Foreignscan
, 이는에 사용되는 재확인에 사용됩니다Recheckforeignscan
. (경로가 기본 관계가 아닌 가입을위한 경우스포츠 토토 베트맨인
isInvalidoid
.)
이 함수는 a를 생성하고 반환해야합니다.Foreignscan
계획 노드; 사용하는 것이 좋습니다make_foreignscan
빌드하려면Foreignscan
노드.
참조PostgreSQL : 문서 : 11 : 57.4. 외국 데이터 포장 쿼리 스포츠 토토 결과추가 정보는
무효
스포츠 토토 베트맨 스캔 실행 시작. 이것은 집행자 스타트 업 동안 호출됩니다.ITREARTEFOREIGNSCAN
). 그만큼ForeignScanstate
노드는 이미 생성되었지만 그FDW_STATE
필드는 여전히 널입니다. 스캔 할 테이블에 대한 정보는를 통해 액세스 할 수 있습니다.ForeignScanstate
노드 (특히 기본에서Foreignscan
Plan Node.getforeignplan
). eflags
이 계획 노드에 대한 집행자의 운영 모드를 설명하는 플래그 비트가 포함되어 있습니다.
(eflags & exec_flag_explain_only)
사실,이 함수는 외부로 가시적 인 행동을 수행해서는 안됩니다. 노드 상태를 유효하게하는 데 필요한 최소 값 만설명 foreignscan
andendforeignscan
.
tupletableslot *
스포츠 토토 베트맨 소스에서 한 줄을 가져와 튜플 테이블 슬롯으로 반환합니다 (노드Scantupleslot
이 목적으로 사용해야합니다). 더 이상 행을 사용할 수없는 경우 리턴 NULL.tecineforeignscan
더 많은 수명 저장이 필요한 경우es_query_cxt
노드의Estate
.
반환 된 행은와 일치해야합니다.FDW_SCAN_TLIST
대상 목록이 제공된 경우, 그렇지 않으면 스캔되는 외래 테이블의 행 유형과 일치해야합니다. 필요하지 않은 열을 최적화하기로 선택한 경우, 해당 열 위치에 널을 삽입하거나 A를 생성해야합니다.FDW_SCAN_TLIST
그 열이 생략 된 상태에서 목록.
참고PostgreSQL의 집행자는 반환 된 행이 외국 테이블에 정의 된 모든 제약을 위반하는지 여부를 신경 쓰지 않지만 플래너는 관리를 수행하고,이 외국 테이블에 선언 된 제약 조건을 충족하지 않는 행이 보이는 경우 쿼리를 잘못 최적화 할 수 있습니다. 사용자가 제약 조건이 사실이라고 선언했을 때 제약 조건을 위반하면 오류를 높이는 것이 적절할 수 있습니다 (데이터 유형 불일치의 경우 필요한대로)..
무효
처음부터 스캔을 다시 시작하십시오. 스캔이 의존하는 매개 변수는 값이 변경되었을 수 있으므로 새 스캔이 반드시 같은 행을 반드시 반환 할 필요는 없습니다.
무효
스캔 및 릴리스 리소스를 종료하십시오. 일반적으로 Palloc'd 메모리를 해제하는 것은 중요하지 않지만 예를 들어 원격 서버에 대한 열린 파일 및 연결을 정리해야합니다.
FDW가 스포츠 토토 베트맨인 결합을 원격으로 수행하는 것을 지원하는 경우 (두 테이블의 데이터를 가져오고 로컬로 결합하는 것이 아니라)이 콜백 기능을 제공해야합니다..
무효
모두 동일한 스포츠 토토 베트맨 서버에 속하는 두 개 이상의 스포츠 토토 베트맨 테이블에 가입 할 수있는 액세스 경로를 만듭니다. 이 선택적 기능은 쿼리 계획 중에 호출됩니다.getforeignpaths
,이 함수는 생성해야합니다스포츠 토토 베트맨 경로
제공된 사람의 경로joinrel
및 Calladd_path
조인을 위해 고려 된 경로 세트에 이러한 경로를 추가합니다. 그러나와는 달리getforeignpaths
,이 기능은 로컬 결합과 관련된 경로가 항상 가능하기 때문에 하나 이상의 경로를 만드는 데 성공할 필요는 없습니다.
이 함수는 내부 및 외부 관계의 다른 조합과 동일한 결합 관계에 대해 반복적으로 호출 될 것입니다. 복제 된 작업을 최소화하는 것은 FDW의 책임입니다.
a스포츠 토토 베트맨 경로
경로는 조인을 위해 선택되며 전체 조인 프로세스를 나타냅니다. 구성 요소 테이블 및 자회사 조인에 대해 생성 된 경로는 사용되지 않습니다.ScanRelid
결과의Foreignscan
계획 노드는 단일 관계가 없기 때문에 0으로 설정해야합니다. 대신,FS_RELIDS
필드Foreignscan
노드는 결합 된 관계 세트를 나타냅니다. (후자의 필드는 Core Planner 코드에 의해 자동으로 설정되어 FDW에 의해 채워질 필요가 없습니다.) 또 다른 차이점은 시스템 카탈로그에서 원격 조인의 열 목록을 찾을 수 없기 때문에 FDW가 채워야한다는 것입니다.FDW_SCAN_TLIST
적절한 목록 포함TargetEntry
노드, 노드 세트를 나타냅니다.
FDW가 원격 집계와 같은 원격 사후 스캔/조인 처리 수행을 지원하는 경우이 콜백 기능을 제공해야합니다.
무효
가능한 액세스 경로 생성상류 관계프로세싱은 집계, 창 함수, 정렬 및 테이블 업데이트와 같은 모든 스캔 후/조인 쿼리 처리에 대한 플래너의 용어입니다. 이 선택적 기능은 쿼리 계획 중에 호출됩니다.스포츠 토토 베트맨 경로
FDW가 원격으로 수행하는 방법을 알고 있고 호출하는 방법을 알고있는 스캔 후/조인 처리에 대한 경로.add_path
이 경로를 표시된 상지 관계에 추가합니다. 와 마찬가지로getforeignjoinpaths
,이 기능은 로컬 처리와 관련된 경로가 항상 가능하기 때문에 경로를 만드는 데 성공할 필요는 없습니다.
theStage
매개 변수는 현재 고려중인 사후/조인 단계를 식별합니다.output_rel
이 단계의 계산을 나타내는 경로를 받아야하는 상점 관계입니다.input_rel
는이 단계에 대한 입력을 나타내는 관계입니다. 그만큼추가
매개 변수는 추가 세부 정보를 제공합니다. 현재는에 대해서만 설정됩니다Upperrel_Partial_group_agg
또는Upperrel_group_agg
,이 경우 A를 가리 킵니다.GroupPathExtradata
구조. (스포츠 토토 베트맨 경로
경로 추가output_rel
일반적으로 경로에 직접적인 의존성이 없습니다input_rel
, 처리는 외부에서 수행 될 것으로 예상되므로. 그러나 이전 처리 단계를 위해 이전에 생성 된 경로를 검사하는 것은 중복 계획 작업을 피하는 데 유용 할 수 있습니다.)
FDW가 쓰기 가능한 외국 테이블을 지원하는 경우 FDW의 요구와 기능에 따라 다음 콜백 기능 중 일부 또는 전부를 제공해야합니다.
무효
업데이트
and삭제
작업은 테이블 스캔 함수에 의해 이전에 가져온 행에 대해 수행됩니다. FDW는 업데이트 또는 삭제할 정확한 행을 식별 할 수 있도록 행 ID 또는 기본 키 열의 값과 같은 추가 정보가 필요할 수 있습니다.“정크”, an 동안 스포츠 토토 베트맨 테이블에서 검색 할 열 목록의 대상 열업데이트
또는삭제
.
그렇게하려면 추가TargetEntry
항목 toParsetree-> TargetList
, 추가 값을 가져 오는 표현식을 포함합니다. 그러한 각 항목은 표시되어야합니다Resjunk
= True
Resname
실행 시간에이를 식별합니다. 일치하는 이름 사용을 피하십시오CTID
, N
Wholerow
또는Wholerow
22582_22729N
Eval_Const_Expressions
TargetList에 추가하기 전에.
이 기능은 계획 중에 호출되지만 제공된 정보는 다른 계획 루틴과 약간 다릅니다.Parsetree
업데이트
또는삭제
명령, whiletarget_rte
andtarget_relation
대상 외국 표를 설명합니다.
addforeignupdatetArgets
포인터가 설정되었습니다NULL
, 추가 대상 표현이 추가되지 않습니다. (이것은 구현할 수 없게 될 것입니다삭제
운영업데이트
FDW가 변하지 않는 기본 키에 의존하여 행을 식별하는 경우에도 여전히 실현 가능할 수 있습니다.)
목록 *
외국 테이블에서 삽입, 업데이트 또는 삭제에 필요한 추가 계획 조치를 수행합니다. 이 함수는에 첨부 될 FDW- 민간 정보를 생성합니다.modifyTable
업데이트 작업을 수행하는 계획 노드. 이 개인 정보는 a의 형태가 있어야합니다.List
earchneforeignModify
실행 단계 중.
루트
쿼리에 대한 플래너의 글로벌 정보입니다.plan
modifyTable
계획 노드,를 제외하고 완료됩니다fdwprivlists
필드ressultrelation
범위 테이블 인덱스로 대상 이물 테이블을 식별합니다.subplan_index
modifyTable
계획 노드 이것은 0에서 계산됩니다. 색인을 원한다면를 사용하십시오.plan-> 계획
또는 기타 하위 구조plan
노드.
참조PostgreSQL : 문서 : 11 : 57.4. 외국 데이터 포장 쿼리 스포츠 토토 결과추가 정보는
PlanforeignModify
포인터가 설정되었습니다NULL
, 추가 계획 시간 조치가 취하지 않으며fdw_private
목록 제공earchneforeignModify
무효
스포츠 토토 베트맨 테이블 수정 작업을 시작하십시오. 이 루틴은 집행자 스타트 업 동안 호출됩니다.execforeigninsert
, execforeignupdate
또는execforeigndelete
각 튜플이 삽입, 업데이트 또는 삭제되도록 요청됩니다.
mtstate
modifyTable
실행중인 계획 노드; 계획 및 실행 상태에 대한 글로벌 데이터는이 구조를 통해 사용할 수 있습니다.Rinfo
resultrelinfo
대상 외래 테이블을 설명하는 구조. (그만큼RI_FDWSTATE
필드resultrelinfo
FDW 가이 작업에 필요한 개인 상태를 저장할 수 있습니다.)fdw_private
|PlanforeignModify
, 경우.subplan_index
modifyTable
계획 노드입니다.eflags
이 계획 노드에 대한 집행자의 운영 모드를 설명하는 플래그 비트가 포함되어 있습니다.
(eflags & exec_flag_explain_only)
사실,이 함수는 외부로 가시적 인 행동을 수행해서는 안됩니다. 노드 상태를 유효하게하는 데 필요한 최소 값 만설명 foreignModify
andendforeignModify
.
earchneforeignModify
포인터가 설정되었습니다NULL
, 집행자 스타트 업 동안 조치를 취하지 않습니다.
tupletableslot *
하나의 튜플을 스포츠 토토 베트맨 테이블에 삽입하십시오.Estate
쿼리의 글로벌 실행 상태입니다.Rinfo
resultrelinfo
대상 외국 표를 설명하는 구조.슬롯
삽입 할 튜플을 포함합니다. 스포츠 토토 베트맨 테이블의 행 유형 정의와 일치합니다.plantlot
modifyTable
계획 노드의 하위 비행; 에서 다릅니다.슬롯
가능성이 추가“정크”열. (그만큼plantlot
일반적으로에 대한 관심은 거의 없습니다.삽입
사례이지만 완전성을 위해 제공됩니다.)
반환 값은 실제로 삽입 된 데이터를 포함하는 슬롯입니다 (예 : 트리거 작업의 결과로 제공된 데이터와 다를 수 있음) 또는 실제로 행이 삽입되지 않은 경우 (일반적으로 트리거의 결과). 통과슬롯
이 목적으로 재사용 할 수 있습니다.
반환 된 슬롯의 데이터는에만 사용됩니다.삽입
Query가 a반환
절 또는 외국 테이블에가 있습니다.행 후
트리거. 트리거는 모든 열이 필요하지만 FDW는의 내용에 따라 일부 또는 모든 열을 반환하는 것을 최적화하도록 선택할 수 있습니다.반환
절. 그럼에도 불구하고 일부 슬롯은 성공을 나타내려면 반환되어야합니다. 그렇지 않으면 쿼리의보고 된 행 카운트가 잘못 될 것입니다.
execforeigninsert
포인터가 설정되었습니다NULL
, 오류 메시지와 함께 외국 테이블에 삽입하려는 시도가 실패합니다.
이 기능은 라우팅 된 튜플을 외국 테이블 파티션에 삽입하거나 실행할 때도 호출됩니다복사
스포츠 토토 베트맨 테이블에서,이 경우와 다른 방식으로 호출됩니다삽입
케이스. FDW가이를 지원할 수 있도록 아래에 설명 된 콜백 함수를 참조하십시오.
tupletableslot *
외국 테이블에서 하나의 튜플 업데이트.Estate
쿼리의 글로벌 실행 상태입니다.Rinfo
resultrelinfo
대상 외국 표를 설명하는 구조.슬롯
튜플에 대한 새로운 데이터를 포함합니다. 스포츠 토토 베트맨 테이블의 행 유형 정의와 일치합니다.plantlot
modifyTable
계획 노드의 하위 비행; 에서 다릅니다.슬롯
가능성이 추가“정크”열. 특히, 요청한 모든 정크 열은addforeignupdatetArgets
이 슬롯에서 사용할 수 있습니다.
반환 값은 실제로 업데이트 된 행을 포함하는 슬롯입니다 (예 : 트리거 조치의 결과로 제공된 데이터와 다를 수 있음) 또는 실제로 행이 업데이트되지 않은 경우 (일반적으로 트리거의 결과). 통과슬롯
이 목적으로 재사용 할 수 있습니다.
반환 된 슬롯의 데이터는에만 사용됩니다.업데이트
Query가 a반환
절 또는 외국 테이블에가 있습니다.행 후
트리거. 트리거는 모든 열이 필요하지만 FDW는의 내용에 따라 일부 또는 모든 열을 반환하는 것을 최적화하도록 선택할 수 있습니다.반환
절. 그럼에도 불구하고 일부 슬롯은 성공을 나타내려면 반환되어야합니다. 그렇지 않으면 쿼리의보고 된 행 카운트가 잘못 될 것입니다.
execforeignupdate
포인터가 설정되었습니다NULL
, 오류 메시지로 외국 테이블을 업데이트하려는 시도가 실패합니다.
TupleTablesLot *
외래 테이블에서 하나의 튜플을 삭제합니다.Estate
쿼리의 글로벌 실행 상태입니다.Rinfo
resultrelinfo
대상 외국 표를 설명하는 구조.슬롯
전화시 유용한 것은 포함되지만 반환 된 튜플을 잡는 데 사용될 수 있습니다.plantlot
modifyTable
계획 노드의 하위 비행; 특히에 의해 요청 된 모든 정크 열이 운반됩니다.addforeignupdatetArgets
. 정크 열을 사용하여 삭제할 튜플을 식별해야합니다.
반환 값은 삭제 된 행을 포함하는 슬롯이거나 행이 삭제되지 않은 경우 (일반적으로 트리거의 결과)입니다. 통과슬롯
튜플을 반환 할 수 있도록 사용할 수 있습니다.
반환 된 슬롯의 데이터는에만 사용됩니다.삭제
Query가 a반환
절 또는 외국 테이블에가 있습니다.행 후
트리거. 트리거는 모든 열이 필요하지만 FDW는의 내용에 따라 일부 또는 모든 열을 반환하는 것을 최적화하도록 선택할 수 있습니다.반환
절. 그럼에도 불구하고 일부 슬롯은 성공을 나타내려면 반환되어야합니다. 그렇지 않으면 쿼리의보고 된 행 카운트가 잘못 될 것입니다.
execforeigndelete
포인터가 설정되었습니다NULL
, 오류 메시지와 함께 외국 테이블에서 삭제하려는 시도가 실패합니다.
무효
테이블 업데이트 및 릴리스 리소스를 종료하십시오. 일반적으로 Palloc'd 메모리를 해제하는 것은 중요하지 않지만 예를 들어 원격 서버에 대한 열린 파일 및 연결을 정리해야합니다.
endforeignModify
포인터가 설정되었습니다NULL
, 집행자 종료 중에 조치를 취하지 않습니다.
튜플이 분할 된 테이블에 삽입 된 튜플삽입
또는복사
파티션으로 라우팅됩니다. FDW가 라우팅 가능한 외국 테이블 파티션을 지원하는 경우 다음 콜백 기능도 제공해야합니다.복사
스포츠 토토 베트맨 표에서 실행됩니다.
무효
외국 테이블에서 삽입 작업 실행을 시작합니다. 이 루틴은 튜플 라우팅을 위해 선택된 파티션과 A에 지정된 대상이 될 때 첫 번째 튜플이 외래 테이블에 삽입되기 직전에 호출됩니다.복사
명령. 실제 삽입 전에 필요한 초기화를 수행해야합니다.execforeigninsert
각 튜플을 외국 표에 삽입하도록 요구됩니다.
mtstate
modifyTable
실행중인 계획 노드; 계획 및 실행 상태에 대한 글로벌 데이터는이 구조를 통해 사용할 수 있습니다.Rinfo
resultrelinfo
대상 외래 테이블을 설명하는 구조. (그만큼RI_FDWSTATE
필드resultrelinfo
FDW 가이 작업에 필요한 개인 상태를 저장할 수 있습니다.)
이것이 A에 의해 호출되는 경우복사
명령, 계획 관련 글로벌 데이터의mtstate
제공되지 않고plantlot
매개 변수execforeigninsert
그 후 삽입 된 각 튜플은NULL
, 외국 테이블이 튜플 라우팅을 위해 선택된 파티션인지 또는 명령에 지정된 대상이든
초보자
포인터가 설정되었습니다NULL
, 초기화에 대한 조치가 취하지 않습니다.
FDW가 라우팅 가능한 외국 테이블 파티션 및/또는 실행을 지원하지 않는 경우복사
외국 테이블 에서이 기능 또는execforeigninsert
이후에 필요에 따라 오류가 발생해야합니다.
무효
삽입 작업 및 릴리스 리소스를 종료하십시오. 일반적으로 Palloc'd 메모리를 해제하는 것은 중요하지 않지만 예를 들어 원격 서버에 대한 열린 파일 및 연결을 정리해야합니다.
endforeigninsert
포인터가 설정되었습니다NULL
, 종료에 대한 조치가 취하지 않습니다.
int
지정된 외국 테이블이 지원하는 업데이트 업데이트 보고서. 반환 값은를 사용하여 외국 테이블에서 어떤 작업을 지원하는지를 나타내는 규칙 이벤트 번호의 약간 마스크 여야합니다.cmdtype
열거; 즉,(1 << cmd_update) = 4
for업데이트
, (1 << cmd_insert) = 8
for삽입
및(1 << cmd_delete) = 16
for삭제
.
iSforeignrelupdatable
포인터가 설정되었습니다NULL
, FDW가 제공하는 경우 외국 테이블은 삽입 가능, 업데이트 가능 또는 삭제 가능한 것으로 가정합니다execforeigninsert
, execforeignupdate
또는execforeigndelete
각각. 이 기능은 FDW가 업데이트 가능한 일부 테이블과 그렇지 않은 테이블을 지원하는 경우에만 필요합니다.Information_Schema
보기)
대체 인터페이스 세트를 구현하여 일부 삽입, 업데이트 및 삭제를 최적화 할 수 있습니다. 인서트, 업데이트 및 삭제에 대한 일반적인 인터페이스는 원격 서버에서 행을 가져온 다음 한 번에 해당 행을 수정합니다.확인 옵션
상위보기의 제약 조건) 그런 다음 전체 작업이 원격 서버에서 수행되도록 물건을 정렬 할 수 있습니다. 아래에 설명 된 인터페이스는 이것을 가능하게합니다.
bool
원격 서버에서 직접 수정을 수행하는 것이 안전한 지 결정합니다. 그렇다면 반환True
그에 필요한 계획 조치를 수행 한 후. 그렇지 않으면 returnfalse
. 이 선택적 기능은 쿼리 계획 중에 호출됩니다.BEGINDIRECTMODIFY
, iteratedirectModify
andendDirectModify
대신 실행 단계에서 호출됩니다. 그렇지 않으면, 테이블 수정은 위에서 설명한 테이블 업데이트 함수를 사용하여 실행됩니다.PlanforeignModify
.
원격 서버에서 직접 수정을 실행하려면이 기능은 대상 하위 비행기를 A로 다시 작성해야합니다.Foreignscan
원격 서버에서 직접 수정을 실행하는 계획 노드. 그만큼작동
필드Foreignscan
cmdtype
적절하게 열거; 즉,cmd_update
for업데이트
, CMD_INSERT
for삽입
및CMD_DELETE
for삭제
.
참조PostgreSQL : 문서 : 11 : 57.4. 외국 데이터 포장 쿼리 스포츠 토토 결과추가 정보는
PlandirectModify
포인터가 설정되었습니다NULL
, 원격 서버에서 직접 수정을 시도하지 않으려고합니다.
무효
원격 서버에서 직접 수정을 실행할 준비. 이것은 집행자 스타트 업 동안 호출됩니다.iteratedirectModify
). 그만큼ForeignScanstate
노드는 이미 생성되었지만 그FDW_STATE
필드는 여전히 널입니다. 수정할 테이블에 대한 정보는를 통해 액세스 할 수 있습니다.ForeignScanstate
노드 (특히 기본에서Foreignscan
Plan Node.PlandirectModify
). eflags
이 계획 노드에 대한 집행자의 운영 모드를 설명하는 플래그 비트가 포함되어 있습니다.
(eflags & exec_flag_explain_only)
사실,이 함수는 외부로 가시적 인 행동을 수행해서는 안됩니다. 노드 상태를 유효하게하는 데 필요한 최소 값 만설명 디렉토리화
andendDirectModify
.
BEGINDIRECTMODIFY
포인터가 설정되었습니다NULL
, 원격 서버에서 직접 수정을 시도하지 않으려고합니다.
TupleTablesLot *
언제삽입
, 업데이트
또는삭제
쿼리가 없습니다반환
절은 원격 서버에서 직접 수정 한 후 NULL을 반환합니다. 쿼리에 조항이 있으면에 필요한 데이터가 포함 된 한 결과를 가져옵니다.반환
계산, 튜플 테이블 슬롯에 반환 (노드Scantupleslot
이 목적으로 사용해야합니다). 실제로 삽입, 업데이트 또는 삭제 된 데이터는에 저장해야합니다.es_result_relation_info-> ri_projectreturning-> pi_exprcontext-> ecxt_scantuple
노드의Estate
. 더 이상 행을 사용할 수없는 경우 리턴 NULL.BEGINDIRECTMODIFY
더 많은 수명 저장이 필요한 경우es_query_cxt
노드의Estate
.
반환 된 행은와 일치해야합니다.FDW_SCAN_TLIST
대상 목록이 제공된 경우, 그렇지 않으면 업데이트되는 외래 테이블의 행 유형과 일치해야합니다. 에 필요하지 않은 페치 열을 최적화하기로 선택한 경우반환
계산, 해당 열 위치에 널을 삽입하거나 a 생성해야합니다.FDW_SCAN_TLIST
그 열이 생략 된 상태에서 목록.
쿼리에 조항이 있는지 여부에 관계없이 쿼리의보고 된 행 카운트는 FDW 자체에 의해 증가해야합니다. 쿼리에 조항이 없으면 FDW는에 대한 행 수를 증가시켜야합니다.ForeignScanstate
노드의분석
CASE.
iteratedirectModify
포인터가 설정되었습니다NULL
, 원격 서버에서 직접 수정을 시도하지 않으려고합니다.
무효
원격 서버에서 직접 수정 한 후 정리하십시오. 일반적으로 Palloc'd 메모리를 해제하는 것은 중요하지 않지만 예를 들어 원격 서버에 대한 열린 파일 및 연결을 정리해야합니다.
endDirectModify
포인터가 설정되었습니다NULL
, 원격 서버에서 직접 수정을 시도하지 않으려고합니다.
FDW가 지원하기를 원한다면늦은 행 잠금(에 설명 된대로PostgreSQL : 문서 : 11 : 57.5. 외국 데이터 포장지에서의 행 토토 결과), 다음 콜백 함수를 제공해야합니다.
RowmarkType
스포츠 토토 베트맨 테이블에 사용할로드 마킹 옵션을보고합니다.RTE
rangetblentry
테이블의 노드 및강도
관련성이 요청한 잠금 강도를 설명업데이트/공유
조항이있는 경우. 결과는의 회원이어야합니다.RowmarkType
Enum Type.
이 함수는 AN에 나타나는 각 외국 테이블에 대한 쿼리 계획 중에 호출됩니다.업데이트
, 삭제
또는업데이트/공유 선택
쿼리이며의 대상이 아닙니다업데이트
또는삭제
.
getforeignrowmarktype
포인터가 설정되었습니다NULL
,row_mark_copy
옵션은 항상 사용됩니다. (이것은Refetchforeignrow
절대 호출되지 않으므로 제공 될 필요는 없습니다.)
참조PostgreSQL : 문서 : 11 : 57.5. 외국 데이터 포장지에서의 행 토토 결과자세한 내용은
필요한 경우 고정 후 스포츠 토토 베트맨 테이블에서 하나의 튜플을 다시 가져옵니다.Estate
쿼리의 글로벌 실행 상태입니다.erm
execrowmark
대상 이물질 테이블과 획득 할 행 잠금 유형 (있는 경우)을 설명하는 구조.Rowid
튜플을 가져올 튜플을 식별합니다.업데이트
출력 매개 변수입니다.
이 함수는 페치 된 튜플의 palloc 's 사본을 반환해야합니다.NULL
행 잠금을 얻을 수없는 경우. 획득 할 행 잠금 유형은에 의해 정의됩니다.ERM-> MarkType
,이 값은 이전에 반환 된 값입니다getforeignrowmarktype
. (row_mark_reference
잠금 장치를 얻지 않고 튜플을 다시 가져 오는 것을 의미합니다.row_mark_copy
이 루틴에서 결코 보지 못할 것입니다.)
또한*업데이트
로 설정해야합니다True
가져온 것이 이전에 얻은 것과 동일한 버전이 아닌 튜플의 업데이트 된 버전 인 경우. (FDW가 이것에 대해 확신 할 수 없다면 항상 반환True
권장됩니다.)
기본적으로 행 잠금을 얻지 못하면 오류가 발생해야합니다. 에이NULL
반환은만큼 적합합니다스킵 잠긴
옵션은에 의해 지정됩니다erm-> Waitpolicy
.
theRowid
CTID
행을 다시 가져 오기 위해 이전에 읽은 값. 비록Rowid
값은 A로 전달됩니다Datum
, 현재는 A 일 수 있습니다.TID
. 기능 API는 향후 행 ID의 다른 데이터 유형을 허용 할 수 있기를 희망하여 선택됩니다.
Refetchforeignrow
포인터가 설정되었습니다NULL
, 오류 메시지로 행을 다시 가져 오려는 시도가 실패합니다.
참조PostgreSQL : 문서 : 11 : 57.5. 외국 데이터 포장지에서의 행 토토 결과자세한 내용은
bool
이전에 회복 된 튜플이 여전히 관련 스캔과 일치하고 예선에 가입하고 튜플의 수정 된 버전을 제공 할 수 있음을 다시 확인하십시오. Join Pushdown을 수행하지 않는 외국 데이터 포장지의 경우 일반적으로이를 설정하는 것이 더 편리합니다.NULL
대신FDW_RECHECK_QUALS
적절하게. 그러나 외부 결합이 밀려 나면 필요한 모든 속성이 존재하더라도 모든 기본 테이블과 관련된 검사를 결과 튜플에 다시 적용하는 것만으로는 충분하지 않습니다. 일부 예선과 일치하지 않더라도 일부 속성이 반환되지 않고 일부 속성이 널로 이동할 수 있기 때문입니다..Recheckforeignscan
예선을 다시 확인하고 여전히 만족스럽고 거짓이라면 True를 반환 할 수 있지만 교체 튜플을 제공된 슬롯에 저장할 수도 있습니다..
Join Pushdown을 구현하기 위해 외국 데이터 래퍼는 일반적으로 재확인에만 사용되는 대체 로컬 조인 계획을 구성합니다. 이것은의 외부 하위 플랜이 될 것입니다.Foreignscan
. 재확인이 필요한 경우,이 하위 플랜을 실행할 수 있고 결과 튜플은 슬롯에 저장 될 수 있습니다.getExistingLocalJoinPath
대체 로컬 조인 계획으로 사용될 수있는 기존 경로를 검색하는 데 사용될 수 있습니다..getExistingLocalJoinPath
지정된 결합 관계의 경로 목록에서 모색되지 않은 경로를 검색합니다. (이러한 경로를 찾지 못하면 NULL을 반환합니다.이 경우 외국 데이터 래퍼가 로컬 경로를 자체적으로 구축하거나 해당 조인에 대한 액세스 경로를 만들지 않도록 선택할 수 있습니다.).
설명
무효
추가 인쇄설명
스포츠 토토 베트맨 테이블 스캔의 출력. 이 기능은 호출 할 수 있습니다설명 프 로퍼 타입 텍스트
및 필드를 추가하는 관련 기능설명
출력. 깃발 필드es
인쇄 할 내용과 상태를 결정하는 데 사용될 수 있으며ForeignScanstate
노드를 검사하여 런타임 통계를 제공 할 수 있습니다분석
CASE.
설명 foreignscan
포인터가 설정되었습니다NULL
, 추가 정보가 인쇄되지 않습니다설명
.
무효
추가 인쇄설명
외국 테이블 업데이트의 출력. 이 기능은 호출 할 수 있습니다설명 프 로퍼 타입 텍스트
및 필드를 추가하는 관련 기능설명
출력. 깃발 필드es
인쇄 할 내용과 상태를 결정하는 데 사용될 수 있으며ModifyTableState
노드를 검사하여 런타임 통계를 제공 할 수 있습니다분석
케이스. 처음 네 가지 인수는와 동일합니다.earchneforeignModify
.
설명 foreignModify
포인터가 설정되었습니다NULL
, 추가 정보가 인쇄되지 않습니다설명
.
무효
추가 인쇄설명
원격 서버에서 직접 수정하려는 출력. 이 기능은 호출 할 수 있습니다설명 프 로퍼 타입 텍스트
및 필드를 추가하는 관련 기능설명
출력. 깃발 필드es
인쇄 할 내용과 상태를 결정하는 데 사용될 수 있으며ForeignScanstate
노드를 검사하여 런타임 통계를 제공 할 수 있습니다분석
CASE.
설명 디렉토리화
포인터가 설정되었습니다NULL
, 추가 정보가 인쇄되지 않습니다설명
.
분석
bool
이 함수는 다음에 호출됩니다분석는 외국 테이블에서 실행됩니다. FDW 가이 외국 테이블에 대한 통계를 수집 할 수 있다면 반환해야합니다True
, 그리고 테이블에서 샘플 행을 수집 할 함수에 대한 포인터를 제공합니다func
, 그리고 페이지에서 테이블의 예상 크기와TotalPages
. 그렇지 않으면 returnfalse
.
FDW가 테이블에 대한 통계 수집을 지원하지 않으면Analyzeforeigntable
포인터를 설정할 수 있습니다NULL
.
제공된 경우 샘플 수집 기능에 서명이 있어야합니다
int
최대의 무작위 샘플Targrows
행을 테이블에서 수집하고 발신자 제공에 저장해야합니다행
배열. 수집 된 실제 행 수를 반환해야합니다.Totalrows
andTotalDeadrows
. (세트TotalDeadrows
FDW에 죽은 줄의 개념이없는 경우 0까지.)
스포츠 토토 베트맨 스키마 가져 오기
목록 *
외국 테이블 생성 명령 목록을 얻습니다. 이 기능은 실행할 때 호출됩니다스포츠 토토 베트맨 스키마 가져 오기, 그리고 해당 진술의 구문 분석 트리와 사용할 외국 서버의 OID가 전달됩니다. 그것은 c 문자열 목록을 반환해야하며, 각각은 A를 포함해야합니다.스포츠 토토 베트맨 테이블 만들기명령. 이 문자열은 핵심 서버에서 구문 분석하고 실행됩니다.
내에서importforeignschemastmt
struct,Remote_schema
테이블을 가져올 원격 스키마의 이름입니다.list_type
테이블 이름을 필터링하는 방법을 식별합니다 :fdw_import_schema_all
원격 스키마의 모든 테이블을 가져와야 함을 의미합니다 (이 경우table_list
is 비어 있음),fdw_import_schema_limit_to
에 나열된 테이블 만 포함한다는 의미table_list
및FDW_IMPORT_SCHEMA_EXCEPT
에 나열된 테이블을 제외한다는 의미table_list
. 옵션
가져 오기 프로세스에 사용되는 옵션 목록입니다. 옵션의 의미는 FDW에 달려 있습니다.NOT NULL
열의 속성을 가져와야합니다. 이러한 옵션은 FDW에서 데이터베이스 개체 옵션으로 지원하는 것과 관련이 없습니다.
FDW는 무시할 수 있습니다local_schema
필드importforeignschemastmt
, 핵심 서버가 해당 이름을 구문 분석에 자동으로 삽입하므로스포츠 토토 베트맨 테이블 만들기
명령.
FDW는 |list_type
andtable_list
, Core Server가 해당 옵션에 따라 제외 된 테이블에 대한 반환 된 명령을 자동으로 건너 뜁니다. 그러나 처음에는 제외 된 테이블에 대한 명령을 만드는 작업을 피하는 것이 종종 유용합니다.isimportable foreigntable ()
주어진 이물질 이름이 필터를 전달하는지 여부를 테스트하는 데 유용 할 수 있습니다.
FDW가 테이블 정의 가져 오기를 지원하지 않으면importforeignschema
포인터를 설정할 수 있습니다NULL
.
A Foreignscan
노드는 선택적으로 병렬 실행을 지원할 수 있습니다. 평행Foreignscan
여러 프로세스에서 실행되며 모든 협력 프로세스에서 각 행을 정확하게 한 번 반환해야합니다. 이를 위해 프로세스는 동적 공유 메모리의 고정 크기 덩어리를 통해 조정할 수 있습니다.
bool
병렬 작업자 내에서 스캔을 수행 할 수 있는지 테스트합니다. 이 기능은 플래너가 병렬 계획이 가능할 수 있다고 생각할 때만 호출되며 해당 스캔이 병렬 작업자 내에서 실행되기에 안전한 경우 TRUE를 반환해야합니다.
이 함수가 정의되지 않은 경우 스캔은 병렬 리더 내에서 수행해야한다고 가정합니다. True를 반환한다고해서 스캔 자체가 병렬로 수행 할 수 있음을 의미하지는 않습니다. 스캔은 병렬 작업자 내에서만 수행 될 수 있습니다.
크기
병렬 작업에 필요한 동적 공유 메모리의 양을 추정하십시오. 이것은 실제로 사용될 금액보다 높을 수 있지만 더 낮아서는 안됩니다.
무효
병렬 작업에 필요한 동적 공유 메모리 초기화.좌표
반환 값과 동일한 크기의 공유 메모리 영역을 가리 킵니다.추정 MFOREIGSSCAN
. 이 기능은 선택 사항이며 필요하지 않은 경우 생략 할 수 있습니다.
무효
외국 스캔 계획 노드를 재조정 할 때 병렬 작업에 필요한 동적 공유 메모리를 다시 시작하십시오. 이 기능은 선택 사항이며 필요하지 않은 경우 생략 할 수 있습니다.rescanforeignscan
함수는 로컬 상태 만 재설정합니다. 현재이 기능은 이전에 호출됩니다rescanforeignscan
, 그러나 해당 주문에 의존하지 않는 것이 가장 좋습니다.
무효
|초기화 MFEOREIGSCAN
. 이 기능은 선택 사항이며 필요하지 않은 경우 생략 할 수 있습니다.
무효
릴리스 리소스가 예상되면 노드가 완료되지 않을 것으로 예상됩니다. 이것은 모든 경우에 호출되는 것은 아닙니다.endforeignscan
이 기능이 먼저 호출되지 않으면 호출 될 수 있습니다. 이 콜백이 호출 된 직후 병렬 쿼리에서 사용되는 DSM 세그먼트가 파괴되기 때문에 DSM 세그먼트가 사라지기 전에 약간의 조치를 취하려는 스포츠 토토 베트맨 데이터 포장지는이 방법을 구현해야합니다..
목록 *
이 함수는 주어진 아동 관계의 상위 가장 큰 부모에 의해 매개 변수를 변환하는 동안 호출됩니다child_rel
아동 관계에 의해 매개 변수화됩니다. 이 함수는 경로를 다시 말하거나 주어진 곳에 저장된 표현식 노드를 번역하는 데 사용됩니다.fdw_private
A 회원스포츠 토토 베트맨 경로
. 콜백이 사용할 수 있습니다Reparameterize_path_by_child
, 조정_appendrel_attrs
또는조정_appendrel_attrs_multilevel
필요에 따라.