이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다메이저 토토 사이트 : 문서 : 17 : 50.6. 집행자버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

2.6. 집행자

the집행자계획을 수여합니다 플래너/최적화기로 돌아와 상단 노드 처리를 시작합니다. 예제의 경우 (예제에 제공된 쿼리 \ ref simple_select) 상단 노드는입니다.mergejoin노드.

병합을 수행하기 전에 두 개의 튜플을 가져와야합니다. (각 하위 플랜에서 하나). 따라서 집행자는 재귀 적으로 스스로를 부릅니다 하위 계획을 처리하려면 (첨부 된 하위 플랜으로 시작합니다LeftTree). 새로운 상단 노드 (상단 왼쪽 하위 플랜의 노드)는 A입니다.Seqscan노드와 다시 튜플을 노드 자체 전에 가져와야합니다. 처리 할 수 있습니다. 집행자는 재귀 적으로 다른 사람이라고 부릅니다 첨부 된 하위 플랜을위한 시간LeftTreeSeqscan노드.

이제 새 상단 노드는입니다.Sort노드. 전체 관계에 대해 일종의 수행해야합니다. 에서 튜플을 가져 오기 시작합니다sort노드의 하위 플랜과 임시 관계로 분류합니다 ( 메모리 또는 파일)시sort노드입니다 처음으로 방문했습니다. (추가 검사Sort노드는 항상 하나만 반환합니다 분류 된 임시 관계에서 튜플.)

매번 처리 할 때마다sort노드는 새로운 튜플이 필요합니다.Seqscan하위 플랜으로 첨부 된 노드. 그만큼 관계 (내부적으로에 주어진 값에 의해 내부 참조scanrelidField)가 다음을 위해 스캔되었습니다 튜플. 튜플이 나무가주는 자격을 만족시키는 경우 첨부qpqual뒤로 물러서서, 그렇지 않으면 다음 튜플이 자격이 될 때까지 가져옵니다. 만족하는. 관계의 마지막 튜플이 처리 된 경우null포인터가 반환됩니다.

튜플이 후퇴 한 후LeftTreeMergejointheRightTree동일하게 처리됩니다 방법. 두 튜플이 모두 존재하면 집행자가 처리합니다.mergejoin노드. 새로운 튜플이있을 때마다 하위 계획 중 하나에서 재귀적인 호출이 필요합니다. 집행자는 그것을 얻기 위해 수행됩니다. 결합 된 튜플이 될 수 있다면 그것을 만들고 계획의 하나의 완전한 처리 나무가 끝났습니다.

이제 설명 된 단계는 튜플마다 한 번 수행됩니다. a까지NULL포인터가 반환됩니다 처리Mergejoin노드, 우리가 끝났음을 나타냅니다.