이 문서는 지원되지 않는 버전의 스포츠 토토 결과을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

57.2. 확장 성

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없음.

언제ExtractQueryNULL을 반환합니다 키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항상 운영자 클래스입니다 입력 유형 및 모든 키 값은 클래스의 여야합니다스토리지타입. 의 유형쿼리인수가 통과되었습니다ExtractQueryand일관성오른쪽 입력 유형 클래스 멤버 연산자 전략 번호. 이것은 항목 유형과 동일 할 필요가 없습니다. 올바른 유형의 주요 값을 추출 할 수있는 한 그것.