규칙 시스템이 어떻게 작동하는지 이해하려면 필요합니다. 그것이 언제 호출되었는지, 그 입력과 결과가 무엇인지 알고 있습니다.
규칙 시스템은 파서와 플래너 사이에 있습니다. 구식의 출력, 하나의 윈 토토 트리 및 사용자 정의 재 작성 규칙, 일부는 윈 토토 트리입니다. 추가 정보, 0 이상의 윈 토토 트리를 만듭니다. 결과. 그래서 입력과 출력은 항상 파서입니다. 그 자체가 생산할 수 있었기 때문에 그것이 보는 것은 기본적으로 대표SQL진술.
이제 윈 토토 트리는 무엇입니까? 그것은 내부 표현입니다SQL진술 위치 구축 된 단일 부품은 별도로 저장됩니다. 이것들 설정하면 윈 토토 트리를 서버 로그에 표시 할 수 있습니다. 구성 매개 변수debug_print_parse, debug_print_rewritten또는debug_print_plan. 규칙 조치도 저장됩니다 윈 토토 트리로서 시스템 카탈로그에서pg_rewrite. 그들은 로그처럼 형식화되지 않습니다 출력이지만 정확히 동일한 정보를 포함합니다.
원시 윈 토토 트리를 읽으려면 약간의 경험이 필요합니다. 하지만 이후SQL윈 토토 표현 나무는 규칙 시스템을 이해하기에 충분합니다. 읽는 법을 가르치지 않을 것입니다.
읽을 때SQL이 장에서 쿼리 트리의 표현은 다음과 같습니다. 진술이 쿼리 트리 구조에있을 때 고장납니다. 의 일부 쿼리 트리는
이것은 어떤 명령 (을 알려주는 간단한 값입니다.select, 삽입, 업데이트, 삭제) 윈 토토 트리를 생성했습니다.
범위 테이블은 사용되는 관계 목록입니다. 쿼리. 에서select진술 이것들은 이후에 주어진 관계입니다.from키 단어.
모든 범위 테이블 항목은 테이블 또는 뷰를 식별하고 다른 이름으로 어떤 이름이 호출되는지 알려줍니다. 질문. 쿼리 트리에서 범위 테이블 항목은 다음과 같습니다 이름보다는 숫자로 참조됩니다. 중복 이름이 있더라도 상관 없습니다.SQL진술. 이것 규칙의 범위 테이블이 병합 된 후에 발생할 수 있습니다. in.이 장의 예제는 이것을 가지고 있지 않을 것입니다. 상황.
이것은 식별하는 범위 테이블에 대한 색인입니다. 쿼리 결과가가는 관계.
select쿼리는 일반적으로 그렇지 않습니다 결과 관계가 있습니다. A의 특별한 경우선택대부분 a테이블 생성뒤 따르는삽입 ... 선택여기에서 별도로 논의.
for삽입, 업데이트및삭제명령, 결과 관계는 테이블 (또는보기!)입니다. 변경 사항이 적용됩니다.
대상 목록은 쿼리 결과. A의 경우select,이 표현은 그 표현입니다 윈 토토의 최종 출력을 작성하십시오. 그들은 핵심 단어 사이의 표현selectandFrom. (*는 모두에게 약어입니다 관계의 열 이름. 그것은 확장됩니다 개별 열로 구문 분석하여 규칙 시스템 절대 보지 못해.)
삭제명령은 필요하지 않습니다 결과를 얻지 않기 때문에 대상 목록. 사실은, 플래너는 특별한 것을 추가 할 것입니다CTID빈 대상 목록 입력, 그러나 이것은 규칙 시스템 후에 논의 될 것입니다. 나중에; 규칙 시스템의 경우 대상 목록이 비어 있습니다.
for삽입명령, 대상 목록은 결과에 들어가야하는 새 행을 설명합니다. 관계. 그것은의 표현으로 구성됩니다.값조항 또는select조항삽입 ... 선택. 첫 번째 단계 프로세스 재 작성 프로세스는 모든 열에 대한 대상 목록 항목을 추가합니다 원래 명령에 의해 할당되지 않았지만 기본값. 나머지 열 (주어진 값이 없습니다 또한 기본값도 플래너에 의해 채워지지 않습니다. 일정한 널 표현.
for업데이트명령, 대상 목록은 기존을 대체 해야하는 새 행을 설명합니다. 하나. 규칙 시스템에는 표현 만 포함됩니다 에서set column = expression명령의 일부. 플래너는 누락을 처리합니다 값을 복사하는 표현식을 삽입하여 열 새로운 줄에 대한 오래된 행. 그리고 그것은 특별한 것을 추가 할 것입니다CTID똑같이삭제,
대상 목록의 모든 항목에는 표현식이 포함되어 있습니다 그것은 일정한 값이 될 수 있으며, 가변은 범위 테이블의 관계 중 하나의 열, 매개 변수 또는 기능 호출로 만든 표현식 트리, 상수, 변수, 연산자 등
쿼리의 자격은 하나와 매우 유사합니다 대상 목록 항목에 포함 된 것 중 결과 이 표현의 가치는 작동 (삽입, 업데이트, 삭제또는select) 최종 결과 행의 경우 실행 여부는 실행해야합니다. 그것은에 해당합니다.여기서조항SQL진술.
윈 토토의 조인 트리는의 구조를 보여줍니다.From절. 간단한 윈 토토 좋다선택 ... A, B, C, 가입 트리는 단지의 목록 일뿐입니다.From항목, 우리는 가입 할 수 있기 때문입니다 어떤 순서로든. 하지만 언제Join표현, 특히 외부 결합이 사용됩니다 조인에 의해 표시된 순서로 결합하십시오. 이 경우 가입 트리는의 구조를 보여줍니다.Join표현. 제한 특정 관련Join조항 (on또는사용Expressions)는 다음과 같이 저장됩니다 교사 트리에 첨부 된 자격 표현 노드. 최상위 수준을 저장하는 것이 편리한 것으로 판명여기서a 최상위 수준의 조인 트리 항목에 첨부 된 자격, 도. 그래서 실제로 결합 트리는 두 가지를 모두 나타냅니다.Fromand여기서A의 조항select.
윈 토토 트리의 다른 부분은주문 by절은 여기에 관심이 없습니다. 그만큼 규칙 시스템은 신청하는 동안 일부 항목을 대체합니다 규칙이지만 그와 관련이 없습니다. 규칙 시스템의 기본 사항.