Postgresql 9.1.24 문서화 | ||||
---|---|---|---|---|
젠 토토 : 문서 : 9.1 : 소개 | 사설 토토 : 문서 : 9.1 : 진 인덱스 | 54 장. 진 인덱스 | 메이저 토토 사이트 : 문서 : 9.1 : 구현 |
the진인터페이스는 a 액세스 방법이 필요한 높은 추상화 수준 데이터 유형의 의미론을 구현하기 위해서만 구현 자 접근 중. 그만큼진레이어 그 자체는 동시성을 돌보고 나무를 기록하고 검색합니다. 구조.
A를 얻는 데 필요한 모든진액세스 방법 작업 작동은 4 개 (또는 5 개) 사용자 정의를 구현하는 것입니다. 트리의 키의 동작을 정의하는 방법과 키, 색인 항목 및 인덱스 가능한 배트맨 토토 간의 관계. 요컨대진결합 일반성, 코드 재사용 및 깨끗한 확장 성 인터페이스.
운영자가 클래스하는 네 가지 방법진제공해야합니다.
int 비교 (Datum A, Datum
비)
두 개의 키를 비교 (색인 항목이 아님)를 비교하고 반환합니다 정수는 0, 0보다 적거나 0보다 큰 정수, 첫 번째 키가, 동일하거나, 또는 두 번째보다 큽니다. 널 키는 결코 이것으로 전달되지 않습니다 기능.
Datum *ExtractValue (Datum
itemvalue, int32 *nkeys, bool ** nullflags)
항목이 주어지면 Palloc'd Keys를 반환합니다. 색인. 반환 된 키의 수는에 저장되어야합니다.*nkeys. 키가있을 수 있다면 null, 또한 palloc a array*nkeys부울, 주소를 보관하십시오.*nullflags그리고이 null을 설정하십시오 필요에 따라 깃발.*nullflags할 수 있습니다 모든 키가 null이 아닌 경우 왼쪽 null (초기 값). 그만큼 항목에 키가 포함되어 있지 않으면 반환 값이 Null이 될 수 있습니다.
Datum *ExtractQuery (Datum Query,
int32 *nkeys, StrategyNumber n, bool ** pmatch, 포인터
** extra_data, bool ** nullflags, int32
*searchmode)
값이 주어진 값이 주어진 키를 반환합니다.
배트맨 토토; 즉,배트맨 토토is
인덱스 가능한 연산자의 오른쪽에있는 가치
왼쪽은 인덱스 된 열입니다.n운영자의 전략 번호입니다
운영자 클래스 내에서 (참조섹션 35.14.2).
자주,ExtractQuery
필요합니다
상담하려면n데이터를 결정합니다
유형배트맨 토토그리고 메소드
주요 값을 추출하는 데 사용해야합니다. 반환 된 수
키는에 저장되어야합니다.*nkeys.
키가 null 일 수 있다면 Palloc a array*nkeys부울, 주소를 저장하십시오
에*nullflags그리고이 널을 설정하십시오
필요에 따라 깃발.*nullflags할 수 있습니다
모든 키가 null이 아닌 경우 왼쪽 null (초기 값). 그만큼
이면 반환 값이 무일하게 될 수 있습니다.배트맨 토토키가 포함되어 있습니다.
SearchMode출력입니다
허용하는 주장ExtractQuery
방법에 대한 세부 정보를 지정합니다
검색이 완료됩니다. 만약에*SearchMode로 설정되었습니다gin_search_mode_default(값입니다
호출하기 전에 초기화), 일치하는 항목 만
반환 된 키 중 하나는 후보로 간주됩니다
성냥. 만약에*SearchMode로 설정되었습니다gin_search_mode_include_empty,
그런 다음 적어도 하나의 일치하는 항목 외에
키, 키가 포함되지 않은 항목이 고려됩니다.
후보 일치. (이 모드는 구현에 유용합니다
예를 들어 IS-Subset-of Operators.) if*SearchMode로 설정되었습니다gin_search_mode_all그런 다음 모든 널이 아닌 항목
지수에서 후보는 후보 일치로 간주됩니다
반환 된 키를 일치시킵니다. (이 모드는 많습니다
다른 두 가지 선택보다 느리게 필요합니다
본질적으로 전체 인덱스를 스캔하지만 그럴 수 있습니다
코너 케이스를 올바르게 구현하는 데 필요합니다. 연산자
대부분의 경우이 모드가 필요할 것입니다.
진 운영자 클래스 후보)
이 모드 설정은에 정의됩니다.access/gin.h.
PMATCH는 출력 인수입니다
부분 일치가 지원 될 때 사용합니다. 사용하려면ExtractQuery
an
배열*nkeys부울 및 상점
그 주소*PMATCH. 각
배열의 요소는
해당 키에는 부분 일치, 그렇지 않은 경우 false가 필요합니다. 만약에*PMATCH그런 다음 gin으로 설정되었습니다
부분 일치가 필요하지 않다고 가정합니다. 변수는입니다
호출 전에 null로 초기화 되므로이 주장은 할 수 있습니다
지원하지 않는 운영자 클래스에 의해 단순히 무시됩니다.
부분 경기.
extra_data출력입니다
허용하는 주장ExtractQuery
추가 데이터를 전달합니다
그만큼일관성
and비교적
방법. 에게
사용하십시오,ExtractQuery
필수
배열 할당*nkeys포인터 및 주소를 보관하십시오.*엑스트라 _data, 원하는 것을 보관하십시오
개별 포인터로. 변수가 초기화됩니다
전화하기 전에 null이 있으므로이 주장은 단순히 무시할 수 있습니다.
추가 데이터가 필요하지 않은 운영자 클래스에 의해. 만약에*엑스트라 _data전체가 설정되어 있습니다
배열이에 전달됩니다.일관성
방법 및 적절한
요소비교 상점
메소드
bool 일관성 (bool check [],
StrategyNumber N, Datum Query, Int32 NKeys, 포인터
extra_data [], bool *리키크, Datum QueryKeys [], bool
nullflags [])
인덱스 된 항목이 배트맨 토토를 만족하면 true를 반환합니다
전략 번호가있는 운영자n(또는 재확인 표시가있는 경우이를 만족시킬 수도 있습니다
반품). 이 기능은 다음에 직접 액세스 할 수 없습니다
색인 된 항목의 값진품목을 명시 적으로 저장하지 않습니다.
오히려 사용 가능한 것은 어떤 키에 대한 지식입니다
배트맨 토토에서 추출 된 값은 주어진 인덱스에 나타납니다.
목. 그만큼check배열 길이nkeys는
이전에 반환 된 키 수ExtractQuery
이것배트맨 토토Datum. 의 각 요소check인덱스 항목이라면 배열이 참입니다
해당 배트맨 토토 키, 즉 if (Check [i] ==
TRUE)의 I-th 키ExtractQuery
결과 배열이 있습니다
인덱스 항목. 원래배트맨 토토Datum은의 경우 통과됩니다일관성
방법이 필요합니다
그것에 대해 상담하고도QueryKeys []andnullflags []이전에 반품 배열ExtractQuery
. extra_data추가 데이터 배열이 반환되었습니다
에 의해ExtractQuery
또는 null if
없음.
언제ExtractQuery
반환
null 키QueryKeys [],
동check []요소입니다
인덱스 항목에 널 키가 포함 된 경우. 즉,
의 의미론check []|. 그만큼일관성
함수는 할 수 있습니다
해당 검사nullflags []일반 값 일치와 널의 차이
성냥.
성공,*재확인힙 튜플을 다시 확인 해야하는 경우 true로 설정 인덱스 테스트가 정확한 경우 배트맨 토토 연산자 또는 false. 즉, 허위 반환 값은 힙이 튜플은 배트맨 토토와 일치하지 않습니다. 의 진정한 반환 값*재확인허위 보증으로 설정합니다 힙 튜플이 배트맨 토토와 일치한다. 그리고 진정한 귀환 value*재확인true로 설정하십시오 힙 튜플이 배트맨 토토와 일치 할 수 있음을 의미하므로 배트맨 토토를 평가하여 가져 와서 다시 확인해야합니다. 원래 색인 항목에 대해 직접 연산자.
선택적으로, 운영자 클래스진다섯 번째 방법을 제공 할 수 있습니다 :
int 비교 당파 (Datum
partial_key, Datum Key, StrategyNumber N, 포인터
extra_data)
부분-매치 배트맨 토토 키를 색인 키와 비교합니다.
부호가 결과를 나타내는 정수를 반환합니다
0보다 인덱스 키가 배트맨 토토와 일치하지 않지만
인덱스 스캔은 계속되어야합니다. 0은 인덱스를 의미합니다
키는 배트맨 토토와 일치합니다. 0보다 큽니다
더 이상 일치하지 않기 때문에 인덱스 스캔이 중지되어야합니다.
가능한. 전략 번호nOF
부분 일치 배트맨 토토를 생성 한 연산자는 다음과 같습니다
단, 의미를 결정하는 데 필요한 경우
스캔을 종료 할 때. 또한,extra_data해당 요소입니다
에 의해 만들어진 추가 데이터 배열ExtractQuery
또는 null이 없으면 null. 널 키
이 기능으로 전달되지 않습니다.
지원하기"부분 경기"배트맨 토토,
운영자 클래스는를 제공해야합니다.비교파
방법 및 그ExtractQuery
메소드를 설정해야합니다PMATCH파라미터 부분-매치 배트맨 토토가있을 때
만난. 보다섹션 54.3.2자세한 내용.
다양한 데이터 유형Datum위에서 언급 한 값에 따라 다릅니다
운영자 클래스. 항목 값이 전달되었습니다ExtractValue
항상 운영자 클래스입니다
입력 유형 및 모든 키 값은 클래스의 여야합니다스토리지타입. 의 유형배트맨 토토인수가 전달되었습니다ExtractQuery
and일관성
오른쪽 입력 유형 클래스 멤버 연산자
전략 번호. 이것은 항목 유형과 동일 할 필요가 없으며
올바른 유형의 주요 값을 추출 할 수있는 한
그것.