쿼리는 TCP/IP를 통해 도착하는 데이터 패킷을 통해 백엔드에 제공됩니다. 또는 UNIX 도메인 소켓. 문자열에로드되어에 전달됩니다.Parser,어휘 스캐너,scan.l,쿼리를 토큰 (단어)으로 나눕니다. 파서 토토gram.y및 쿼리 유형을 식별하고 적절한로드하는 토큰 쿼리 별 구조, 유사CreateStmt또는SelectStmt.
진술은 복잡한 것으로 식별됩니다 (선택 / 삽입 / 업데이트 / 삭제) 또는 단순, 예 :역할 만들기, 분석,등. 집행자를 요구하지 않는 간단한 유틸리티 명령은 명세서별로 처리됩니다. 의 함수명령모듈. 복잡한 진술에는 더 많은 취급이 필요합니다.
파서는 복잡한 쿼리를 취하고 a를 만듭니다.쿼리복잡한 쿼리가 사용하는 모든 요소를 포함하는 구조. query.jointree는 보유합니다Fromand여기서조항 intransformFromClause ()andTransformWhereClause ().쿼리에서 참조 된 각 테이블은 a로 표시됩니다.Rangetblentry,그리고 그들은 함께 연결되어범위 테이블의 쿼리,TransformFromClause ().query.rtable Query의 범위 테이블을 보유합니다.
특정 쿼리, 유사한select,데이터의 리턴 열. 다른 쿼리, 좋아요삽입and업데이트,열을 지정합니다 쿼리에 의해 수정되었습니다. 이 열 참조는로 변환됩니다.TargetEntry항목은 함께 연결되어대상 목록쿼리. 대상 목록은 query.targetlist에 저장됩니다 생성transformTargetList ().
집계와 같은 다른 쿼리 요소 (sum ()),그룹 에 의해,and주문 by도 자체 쿼리에 저장됩니다 전지.
다음 단계는 쿼리를 모든 것에 의해 수정하는 것입니다보기또는규칙9945_10002다시 작성시스템.
theOptimizer쿼리 구조를 사용하여 최상의 테이블 조인 순서를 결정하고 가입합니다. query.jointree (를 사용하여 Rangetable의 각 테이블의 유형Fromand여기서Clauses) 최적의 인덱스 토토을 고려합니다.
thePath모듈을 생성 한 다음 최적의 생성plan,쿼리를 실행하기 위해 수행 할 작업이 포함되어 있습니다.그런 다음 계획이 전달됩니다.executor실행을위한 결과는 클라이언트에게 반환되었습니다. 계획은 실제로 노드 세트와 같습니다. 최상위 노드가있는 트리 구조로 배열되어 있으며 다양한 어린이로서의 하위 노드.
이 기본을 지원하는 다른 많은 모듈이 있습니다 기능. 클릭하여 액세스 할 수 있습니다 흐름도.