스포츠 토토 결과 9.3.25 문서 | ||||
---|---|---|---|---|
롤 토토 : 문서 : 9.3 : 소개 | 토토 커뮤니티 : 문서 : 9.3 : 진 인덱스 | 57 장. 진 스포츠 토토 결과 | 젠 토토 : 문서 : 9.3 : 구현 |
thegin인터페이스가 높습니다 액세스 방법 구현 자에만 필요한 추상화 수준 액세스중인 데이터 유형의 의미를 구현합니다. 그만큼진레이어 자체가 처리합니다 동시성, 로깅 및 트리 구조 검색.
a를 얻는 데 필요한 모든 것진액세스 방법 작업 작동은 4 개 (또는 5 개) 사용자 정의를 구현하는 것입니다. 트리의 키의 동작을 정의하는 방법과 키, 색인 항목 및 스포츠 토토 결과 가능한 쿼리 간의 관계. 요컨대진결합 일반성, 코드 재사용 및 깨끗한 확장 성 인터페이스.
운영자가 클래스하는 4 가지 방법진제공해야합니다.
int 비교 (Datum A, Datum
비)
두 개의 키를 비교하고 (색인 된 항목이 아님!) 정수를 반환합니다. 0, 0 또는 0보다 적어 첫 번째 키는 두 번째 키보다 작거나 같거나 큽니다. 널 키는이 기능으로 전달되지 않습니다.
Datum *ExtractValue (Datum itemvalue,
int32 *nkeys, bool ** nullflags)
스포츠 토토 결과 할 항목이 주어진 Palloc'd Keys를 반환합니다. 반환 된 키의 수는에 저장되어야합니다.*nkeys. 키가 null 일 수 있다면 Palloc 배열*nkeys bool필드, 주소를 저장*nullflags,이 널 플래그를 필요에 따라 설정합니다.*nullflags남겨질 수 있습니다null(초기 값) 모든 키가 null이 아닌 경우. 반환 값은입니다.null항목 인 경우 키가 포함되어 있지 않습니다.
Datum *ExtractQuery (Datum Query, Int32
*nkeys, StrategyNumber n, bool ** pmatch, 포인터 ** extra_data, bool
** nullflags, int32 *searchmode)
쿼리 할 값이 주어진 Palloc'd Keys를 반환합니다.
즉,쿼리는 값입니다
왼쪽이있는 스포츠 토토 결과 가능한 연산자의 오른쪽
스포츠 토토 결과 열.n전략입니다
연산자 클래스 내 운영자 수 (참조섹션 35.14.2). 자주,ExtractQuery
상담해야합니다n데이터 유형을 결정하려면쿼리및 키를 추출하는 데 사용해야하는 메소드
값. 반환 된 키의 수는에 저장되어야합니다.*nkeys. 키가 null 일 수 있다면 Palloc
배열*nkeys bool필드, 주소를 저장*nullflags,이 널 플래그를 필요에 따라 설정하십시오.*nullflags남겨질 수 있습니다null(초기 값) 모든 키가 null이 아닌 경우.
반환 값은입니다.null쿼리키가 포함되어 있습니다.
SearchMode출력 인수입니다
허용ExtractQuery
지정합니다
검색 방법에 대한 자세한 내용. 만약에*SearchModegin_search_mode_default(값입니다
전화 전에 초기화)
반환 된 키는 후보 일치로 간주됩니다. 만약에*searchmode로 설정되었습니다gin_search_mode_include_empty하나 이상의 일치 키가 포함 된 항목,
키는 전혀 후보 일치로 간주됩니다. (이 모드는 유용합니다
예를 들어 IS-Subset of Operator를 구현하려면.) if*SearchMode로 설정되었습니다gin_search_mode_all스포츠 토토 결과는 후보 일치로 간주됩니다.
반환 된 키 여부. (이 모드는 다른 모드보다 훨씬 느립니다
본질적으로 전체를 스캔해야하므로 두 가지 선택
색인이지만 코너 케이스를 올바르게 구현해야 할 수도 있습니다.
대부분의 경우이 모드가 필요한 연산자는 아마도
진 운영자 클래스를위한 좋은 후보자.)
이 모드 설정은에 정의됩니다.access/gin.h.
PMATCH사용을위한 출력 인수입니다
부분 일치가 지원되는 경우. 사용하려면ExtractQuery
배열을 할당해야합니다*nkeys부울과 주소를 보관하십시오.*PMATCH. 배열의 각 요소는 설정해야합니다
해당 키에 부분 일치가 필요한 경우, 그렇지 않은 경우 false.
만약에*PMATCHNULL그런 다음 진은 부분 일치가 필요하지 않다고 가정합니다.
변수가 초기화되어NULL전
전화,이 주장은 운영자 클래스에서 단순히 무시할 수 있습니다.
부분 일치를 지원하지 않습니다.
extra_data출력 인수입니다
허용ExtractQuery
통과
에 대한 추가 데이터일관성
및비교파
방법. 사용하려면ExtractQuery
배열을 할당해야합니다
의*nkeys주소를 포인터로 보관하십시오
에*엑스트라 _data그런 다음 무엇이든 보관하십시오
개별 포인터에 들어가기를 원합니다. 변수가 초기화됩니다
에게NULL호출하기 전에이 인수가 가능합니다
추가 비용이 필요없는 운영자 클래스에 의해 단순히 무시됩니다.
데이터. 만약에*엑스트라 _data전체가 설정되어 있습니다
배열이에 전달됩니다.일관성
메소드 및 적절한 요소비교파
메소드
bool 일관성 (bool check [],
StrategyNumber N, Datum Query, Int32 NKeys, Pointer extra_data [],
BOOL *RECHECK, Datum QueryKeys [], bool nullflags [])
인덱스 된 항목이 쿼리 연산자를 만족시키는 경우 true를 반환합니다.
전략 번호n(또는 만족할 수도 있습니다
재확인 표시가 반환되는 경우). 이 기능은 그렇지 않습니다
이후로 인덱싱 된 항목의 값에 직접 액세스하십시오.진상품을 저장하지 않습니다
명시 적으로. 오히려 사용 가능한 것은 어떤 키에 대한 지식입니다
쿼리에서 추출 된 값은 주어진 인덱스 항목에 나타납니다. 그만큼check배열 길이가 있습니다nkeys, 키 수와 동일합니다.
이전에 |ExtractQuery
이것쿼리Datum. 의 각 요소check인덱스 항목이라면 배열이 참입니다
해당 쿼리 키 (예 : if) (확인 [i] == true)이 포함됩니다.
I-th 키ExtractQuery
결과
배열은 스포츠 토토 결과 항목에 있습니다. 원래쿼리Datum은의 경우 통과됩니다일관성
방법을 참조해야합니다
그만큼QueryKeys []andnullflags []이전에 반품 배열ExtractQuery
. extra_data|ExtractQuery
또는null없음.
언제ExtractQuery
NULL을 반환합니다
키QueryKeys [], 해당check []스포츠 토토 결과가있는 경우 요소가 참입니다
항목에는 널 키가 포함됩니다. 즉,의 의미론check []는 뚜렷하지 않습니다
에서. 그만큼일관성
함수
해당를 검사 할 수 있습니다nullflags []정기적 값의 차이를 알리는 경우 요소
일치 및 널 매치.
성공,*재확인힙 튜플을 쿼리에 대해 다시 확인 해야하는 경우. 인덱스 테스트가 정확한 경우 연산자 또는 거짓. 즉, 거짓입니다 리턴 값은 힙 튜플이 일치하지 않도록 보장합니다. 질문; 의 진정한 반환 값*재전송힙 튜플이 쿼리와 일치한다는 것을 허위로 설정합니다. 그리고의 진정한 반환 값*재확인세트 사실 힙 튜플이 쿼리와 일치 할 수 있음을 의미합니다. 쿼리 연산자를 평가하여 가져 와서 다시 확인해야합니다. 원래 인덱스 항목에 직접적으로.
선택적으로, 운영자 클래스진다섯 번째 방법을 제공 할 수 있습니다 :
int compartial_key,
Datum Key, StrategyNumber N, Pointer extra_data)
부분 매치 쿼리 키를 색인 키와 비교합니다. 반환합니다
부호가 결과를 나타내는 정수 : 0보다 작음을 의미합니다.
인덱스 키는 쿼리와 일치하지 않지만 인덱스 스캔은
계속하다; 0은 인덱스 키가 쿼리와 일치 함을 의미합니다.
0보다 큰 인덱스 스캔이 중지되어야 함을 나타냅니다.
더 이상 일치가 불가능합니다. 전략 번호n부분 일치를 생성 한 연산자의
쿼리가 제공됩니다.
스캔을 종료 할 때. 또한,extra_datais
추가 데이터 배열의 해당 요소에 의해 만들어졌습니다ExtractQuery
또는NULL없음. 널 키는 결코 이것으로 전달되지 않습니다
기능.
지원하기"부분 경기"쿼리,
운영자 클래스는를 제공해야합니다.비교파
메소드 및 그ExtractQuery
메소드를 설정해야합니다PMATCH부분 매치 쿼리가있을 때 매개 변수
만난. 보다섹션 57.3.2for
세부.
다양한 데이터 유형Datum위에서 언급 한 값은
운영자 클래스. 항목 값이 전달되었습니다ExtractValue
항상 운영자 클래스입니다
입력 유형 및 모든 키 값은 클래스의 여야합니다스토리지타입. 의 유형쿼리인수가 통과되었습니다ExtractQuery
and일관성
오른쪽 입력 유형 클래스 멤버 연산자
전략 번호. 이것은 항목 유형과 동일 할 필요가 없습니다.
올바른 유형의 주요 값을 추출 할 수있는 한
그것.