Postgresql 9.0.23 문서화 | ||||
---|---|---|---|---|
윈 토토 : 문서 : 9.0 : 소개 | 스포츠 토토 결과 : 문서 : 9.0 : 진 인덱스 | 53 장. 진 인덱스 | 503 배트맨 토토 페치 실패 |
the진인터페이스는 a 액세스 방법이 필요한 높은 추상화 수준 데이터 유형의 의미론을 구현하기 위해서만 구현 자 접근 중. 그만큼진레이어 그 자체는 동시성을 돌보고 나무를 기록하고 검색합니다. 구조.
A를 얻는 데 필요한 모든진액세스 방법 작업 작동은 4 개 (또는 5) 사용자 정의를 구현하는 것입니다. 트리의 키의 동작을 정의하는 방법과 키, 인덱스 값 및 색인 가능성 간의 관계 쿼리. 요컨대진토토 캔 성과 일반성, 코드 재사용 및 깨끗함을 결합합니다 인터페이스.
운영자가 클래스하는 네 가지 방법진제공해야합니다.
int 비교 (Datum A, Datum
비)
키를 비교 (색인 값이 아님)를 비교하고 반환합니다 정수는 0, 0보다 적거나 0보다 큰 정수, 첫 번째 키가, 동일하거나, 또는 두 번째보다 큽니다.
Datum *ExtractValue (Datum
inputValue, int32 *nkeys)
인덱스 할 값이 주어진 키를 반환합니다. 반환 된 키의 수는에 저장되어야합니다.*nkeys.
Datum *ExtractQuery (Datum Query,
int32 *nkeys, StrategyNumber n, bool ** pmatch, 포인터
** extra_data)
쿼리 할 값이 주어진 키 배열을 반환합니다.
즉,쿼리는 값입니다
왼쪽 인덱스 가능한 연산자의 오른쪽
측면은 색인화 된 열입니다.nis
연산자 내 작업자의 전략 번호
클래스 (참조섹션
35.14.2). 자주,ExtractQuery
상담해야합니다n데이터 유형을 결정하려면쿼리필요한 주요 값
추출됩니다. 반환 된 키의 수는 저장되어야합니다
안으로*nkeys. 쿼리에 포함 된 경우
그때 열쇠 없음ExtractQuery
0 또는 -1에를 저장해야합니다*nkeys,
운영자의 의미에 따라 다릅니다. 0은 그것을 의미합니다
모든 값은와 일치합니다.쿼리및
전체 인덱스 스캔을 수행해야합니다 (그러나섹션 53.5). -1은 아무것도 의미하지 않습니다
일치 할 수 있습니다쿼리인덱스 스캔은 완전히 건너 뛸 수 있습니다.PMATCH는 사용하기위한 출력 인수입니다
부분 경기가 지원됩니다. 사용하려면ExtractQuery
배열을 할당해야합니다*nkeys부울과 저장
at 주소*PMATCH. 각 요소
해당 키가 있으면 배열의 True로 설정해야합니다.
부분 일치, 그렇지 않은 경우 false가 필요합니다. 만약에*pmatch는 null로 설정되어 Gin이 가정합니다
부분 일치가 필요하지 않습니다. 변수가 초기화됩니다
전화하기 전에 null이 있으므로이 주장은 단순히 무시할 수 있습니다.
부분 일치를 지원하지 않는 운영자 클래스에 의해.extra_data는 출력 인수입니다
허용ExtractQuery
TO
추가 데이터를에 전달합니다.일관성
and비교파
방법. 사용하려면ExtractQuery
할당해야합니다
배열*nkeys포인터 및 저장
그 주소*엑스트라 _data원하는 것을 개별 포인터에 보관하십시오.
변수는 통화 전에 null로 초기화되므로
인수는 단순히 운영자 클래스에서 무시할 수 있습니다.
추가 데이터가 필요하지 않습니다. 만약에*엑스트라 _data설정되어 전체 배열이 있습니다
에 전달일관성
메소드 및 적절한 요소비교파
메소드
bool 일관성 (bool check [],
StrategyNumber N, Datum Query, Int32 NKeys, 포인터
extra_data [], bool *Recheck)
인덱스 값이 쿼리를 만족하면 true를 반환합니다
전략 번호가있는 운영자n(또는 재확인 표시가 반환되는 경우 만족할 수 있음).
그만큼check배열 길이nkeys, 이것은와 동일합니다
이전에 반환 된 키 수ExtractQuery
이것을 위해쿼리Datum. 의 각 요소check인덱스 값이라면 배열이 참입니다
해당 쿼리 키, 즉 if (Check [i] ==
TRUE)의 I-th 키ExtractQuery
결과 배열이 있습니다
색인 값. 원래쿼리Datum (추출 된 키 어레이가 아님!)
의 경우를 대비하여 통과됩니다.일관성
방법을 참조해야합니다.extra_data는 추가 데이터 배열입니다
반품ExtractQuery
, 또는
없으면 널. 성공에,*재확인힙 튜플이 필요한 경우 true로 설정해야합니다.
쿼리 연산자에 대해 다시 확인하거나 인덱스 인 경우 False
테스트는 정확합니다.
선택적으로, 운영자 클래스진다섯 번째 방법을 제공 할 수 있습니다 :
int 비교 부문 (Datum
partial_key, Datum Key, StrategyNumber N, 포인터
extra_data)
부분-일치 쿼리를 인덱스 키와 비교합니다. 보고
부호가 결과를 나타내는 정수 : 0보다 적습니다.
인덱스 키가 쿼리와 일치하지 않지만 인덱스
스캔은 계속되어야합니다. 0은 인덱스 키가 의미합니다
쿼리 일치; 0보다 큰 것은 인덱스임을 나타냅니다
더 이상 일치 할 수 없으므로 스캔이 중지되어야합니다. 그만큼
전략 번호n만일을 대비하여 부분 일치 쿼리가 제공됩니다.
스캔을 종료 할시기를 결정하려면 의미론이 필요합니다.
또한,extra_datais
추가 데이터 배열의 해당 요소에 의해 만들어졌습니다ExtractQuery
또는 null if
없음.
지원하기"부분 경기"쿼리,
운영자 클래스는를 제공해야합니다.비교파
메소드 및 그ExtractQuery
메소드를 설정해야합니다PMATCH파라미터 부분 매치 쿼리 인 경우
만난. 보다섹션 53.3.2자세한 내용.