그집행자계획을 전달받음 플래너/옵티마이저로 돌아가 최상위 노드 처리를 시작합니다. 우리 예의 경우(예제에 제공된 쿼리 \refsimple_select) 최상위 노드는 aMergeJoin노드.
병합이 완료되기 전에 두 개의 튜플을 가져와야 합니다 (각 하위 계획에서 하나씩) 따라서 실행자는 재귀적으로 자신을 호출합니다. 하위 계획을 처리합니다. (하위 계획이 첨부된 것으로 시작됩니다.왼쪽나무). 새로운 최상위 노드(최상위 왼쪽 하위 계획의 노드)는 aSeqScan노드 그리고 다시 튜플은 노드 자체보다 먼저 가져와야 합니다 처리될 수 있습니다. 실행자는 자신을 재귀적으로 다른 사람이라고 부릅니다. 다음에 연결된 하위 계획의 시간왼쪽나무의SeqScan노드.
이제 새로운 최상위 노드는 a정렬노드. 전체 관계에 대해 정렬이 수행되어야 하므로 실행자는 에서 튜플을 가져오기 시작합니다.정렬노드의 하위 계획을 임시 관계로 정렬합니다( 메모리 또는 파일) 때정렬노드는 처음으로 방문했습니다. (추가 조사)정렬노드는 항상 하나만 반환합니다. 정렬된 임시 관계의 튜플입니다.)
다음을 처리할 때마다정렬노드에는 실행자가 재귀적으로 호출되는 새로운 튜플이 필요합니다.SeqScan노드가 하위 계획으로 연결되었습니다. 는 관계(내부적으로 주어진 값으로 참조됨)scanrelid필드)는 다음을 위해 스캔됩니다. 튜플. 튜플이 트리에서 부여한 자격을 충족하는 경우 첨부됨qpqual그것은 돌려받았고, 그렇지 않으면 자격이 충족될 때까지 다음 튜플을 가져옵니다. 만족합니다. 관계의 마지막 튜플이 처리된 경우 aNULL포인터가 반환되었습니다.
튜플이 다음에 의해 반환된 후왼쪽나무의MergeJointhe오른쪽나무동일하게 처리됩니다. 방법. 두 튜플이 모두 존재하는 경우 실행자는 다음을 처리합니다.MergeJoin노드. 새로운 튜플이 나올 때마다 하위 계획 중 하나에서 그것을 얻기 위해 실행자가 수행됩니다. 조인된 튜플이 다음과 같을 수 있다면 생성된 계획이 다시 전달되고 계획이 완전히 처리됩니다. 트리가 끝났습니다.
이제 설명된 단계는 모든 튜플에 대해 한 번씩 수행됩니다. a까지NULL포인터가 다음에 대해 반환됩니다. 처리 중MergeJoin노드, 끝났음을 나타냅니다.