이 문서는 지원되지 않는 버전의 토토 캔을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

53.2. 토토 캔 성

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. 쿼리에 포함 된 경우 그때 열쇠 없음ExtractQuery0 또는 -1에를 저장해야합니다*nkeys, 운영자의 의미에 따라 다릅니다. 0은 그것을 의미합니다 모든 값은와 일치합니다.쿼리및 전체 인덱스 스캔을 수행해야합니다 (그러나섹션 53.5). -1은 아무것도 의미하지 않습니다 일치 할 수 있습니다쿼리인덱스 스캔은 완전히 건너 뛸 수 있습니다.PMATCH는 사용하기위한 출력 인수입니다 부분 경기가 지원됩니다. 사용하려면ExtractQuery배열을 할당해야합니다*nkeys부울과 저장 at 주소*PMATCH. 각 요소 해당 키가 있으면 배열의 True로 설정해야합니다. 부분 일치, 그렇지 않은 경우 false가 필요합니다. 만약에*pmatch는 null로 설정되어 Gin이 가정합니다 부분 일치가 필요하지 않습니다. 변수가 초기화됩니다 전화하기 전에 null이 있으므로이 주장은 단순히 무시할 수 있습니다. 부분 일치를 지원하지 않는 운영자 클래스에 의해.extra_data는 출력 인수입니다 허용ExtractQueryTO 추가 데이터를에 전달합니다.일관성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자세한 내용.