theexecutor계획을 되돌려 놓습니다 Planner/Optimizer에 의해 상단 노드를 처리하기 시작합니다. 에서 예제의 경우 (예제에 제공된 쿼리 \ ref simple_select) 상단 노드는입니다.mergejoin노드.
병합을 수행하기 전에 두 개의 튜플을 가져와야합니다 (하나는 하나 각 하위 플랜에서). 따라서 집행자는 재귀 적으로 스스로를 부릅니다 하위 계획을 처리합니다 (첨부 된 하위 플랜으로 시작합니다LeftTree). 새로운 상단 노드 (상단 노드 왼쪽 하위 플랜의)는입니다.Seqscan노드 및 노드 자체가 될 수 있기 전에 다시 튜플을 가져와야합니다. 가공. 집행자는 다른 시간을 재귀 적으로 호출합니다 첨부 된 하위 비행LeftTree의Seqscan노드.
이제 새 상단 노드는입니다.Sort노드. 처럼 전체 관계에 대해 정렬을해야하며, 집행자는 시작합니다. 티플 가져 오기정렬노드 하위 비행을하고 일시적인 관계로 분류합니다 (메모리 또는 파일)시기Sort노드를 방문했습니다 처음. (추가 검사Sort노드는 항상 하나의 튜플 만 반환합니다 정렬 된 임시 관계.)
매번 처리 할 때마다sort노드가 필요합니다. 새로운 튜플이 필요합니다.Seqscan하위 플랜으로 첨부 된 노드. 그만큼 관계 (내부적으로에 주어진 값에 의해 내부 참조scanrelid6908_7020qpqual뒤로 물러났습니다. 그렇지 않으면 다음 튜플이 자격이 될 때까지 가져옵니다. 만족하는. 관계의 마지막 튜플이 처리 된 경우null포인터가 반환되었습니다.
튜플이 후퇴 한 후LeftTree의mergejointheRightTree동일하게 처리됩니다 방법. 두 튜플이 모두 존재하면 집행자가 처리합니다.Mergejoin노드. 새로운 튜플이있을 때마다 하위 플랜 중 하나는 집행자에게 재귀적인 호출이 필요합니다. 그것을 얻기 위해 수행되었습니다. 결합 된 튜플을 만들 수 있다면 뒤로 물러서서 플랜 트리의 완전한 처리는 완성된.
이제 설명 된 단계는 모든 튜플마다 한 번 수행됩니다. a까지null포인터가 반환됩니다 처리mergejoin노드, 우리가 끝났음을 나타냅니다.