무지개 토토지원 a 강한규칙 시스템사양보기및 모호한업데이트보기. 원래무지개 토토규칙 시스템이 구성되었습니다 두 가지 구현 :
첫 번째는 사용을 사용했습니다튜플 수준처리하고 깊이 구현되었습니다executor. 규칙 시스템이 호출되었습니다 개별 튜플에 접근 할 때마다. 이것 1995 년에 마지막 공무원이 구현되었습니다 출시무지개 토토프로젝트가Postgres95.
규칙 시스템의 두 번째 구현은 a 라는 기술쿼리 재 작성. 그만큼시스템 재 작성는 모듈입니다 사이에 존재합니다.Parser Stage및 그만큼Planner/Optimizer. 이것 기술은 여전히 구현되었습니다.
에서 규칙의 구문 및 생성에 대한 정보무지개 토토시스템 참조무지개 토토 사용자 안내서.
the쿼리 재 작성 시스템is 파서 스테이지와 플래너/최적화기 사이의 모듈. 그것 파서 스테이지 (Parser Stage)에 의해 뒤로 물러 난 트리를 처리합니다 ( 사용자 쿼리를 나타냅니다.) 규칙이있는 경우 쿼리에 적용되어야합니다. 트리를 다시 작성합니다. 대체 양식.
이제 우리는 쿼리 재 작성의 알고리즘을 스케치합니다. 체계. 더 나은 예를 들기 위해 구현 방법을 보여줍니다 규칙을 예로 들어 사용하는 뷰.
다음 규칙을 제공하자 :
규칙보기 view_rule 작성 선택과 마찬가지로 test_view에 대신하십시오 s.sname, p.pname을 선택하십시오 공급 업체에서 SE, PART P. 여기서 s.sno = se.sno 및 p.pno = se.pno;
주어진 규칙은입니다.해고관계에 대한 선택이있을 때마다test_view감지됩니다. 선택하는 대신 튜플test_view선택 에 주어진 진술행동 부품의 규칙이 실행되었습니다.
다음 사용자 쿼리를test_view제공 :
SNAME을 선택하십시오 test_view에서 Sname < 'Smith';
다음은 쿼리 재 작성에서 수행 한 단계 목록입니다. 사용자 정체가 될 때마다test_view나타납니다. (다음 목록은 a 알고리즘에 대한 매우 비공식적 인 설명 기본 이해. 자세한 설명은를 참조하십시오.A에 대한 해설Postgres규칙 시스템).
test_view다시 쓰기
규칙.
숫자와 순서를 충족하도록 대상리스트를 적응 사용자 쿼리에 주어진 속성
WHERE 절에 주어진 자격을 추가하십시오 주어진 쿼리 자격에 대한 사용자 쿼리 규칙의 행동 부분에서.
위의 규칙 정의가 주어지면 사용자 쿼리가 될 것입니다 다음 형식으로 다시 작성했습니다 (다시 쓰기는 사용자 쿼리의 내부 표현에 대해 수행됩니다 파서 스테이지 옆으로 돌아 왔지만 파생 된 새로운 데이터 구조 다음 쿼리를 나타냅니다) :
s.sname을 선택하십시오 공급 업체에서 SE, PART P. 여기서 s.sno = se.sno 및 p.pno = se.pno 및 s.sname < 'Smith';