2025년 9월 25일:토토 커뮤니티 : 토토
이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.현재버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

53.2. 토토 캔

인터페이스에는 높은 수준의 추상화, 액세스 방법 필요 구현자는 데이터 유형의 의미를 구현하기만 토토 캔. 액세스되고 있습니다.층 자체적으로 동시성을 처리하고 트리를 로깅하고 검색토토 캔. 구조.

을 얻기 위해 필요한 모든 것액세스 방법 작동은 4개(또는 5개)의 사용자 정의를 구현하는 것입니다. 트리의 키 동작을 정의하는 메서드와 키, 인덱싱된 값, 인덱싱 가능한 값 간의 관계 쿼리. 한마디로,토토 캔과 일반성, 코드 재사용 및 깔끔한 기능을 결합합니다. 인터페이스.

연산자 클래스가 수행하는 네 가지 메소드다음을 제공해야 합니다:

int 비교(데이텀 a, 데이텀 비)

키(색인된 값 아님!)를 비교하고 0보다 작은 정수, 0 또는 0보다 큰 정수, 첫 번째 키가 다음보다 작거나 같은지 여부를 나타냅니다. 두 번째보다 큽니다.

데이텀 *extractValue(데이텀 inputValue, int32 *nkeys)

인덱싱할 값이 지정된 키 배열을 반환합니다. 반환된 키의 수는 다음 위치에 저장되어야 합니다.*nkeys.

데이텀 *extractQuery(데이텀 쿼리, int32 *nkeys, StrategyNumber n, bool **pmatch, 포인터 **추가_데이터)

쿼리할 값이 주어진 키 배열을 반환토토 캔. 즉,질의은 인덱싱 가능한 연산자의 오른쪽 쪽은 색인이 생성된 열입니다.n이다 연산자 내 연산자의 전략 번호 수업(참조섹션 35.14.2). 종종,추출쿼리상담이 필요토토 캔n데이터 유형을 결정하기 위해질의및 필요한 키 값 추출됩니다. 반환된 키의 수를 저장해야 토토 캔. 안으로*nkeys. 쿼리에 다음이 포함된 경우 그러면 열쇠가 없습니다추출쿼리0 또는 -1을 저장해야 함*nkeys, 연산자의 의미에 따라 다릅니다. 0은 다음을 의미합니다. 모든 값은 다음과 일치합니다.질의그리고 전체 인덱스 스캔을 수행해야 토토 캔(그러나 참조섹션 53.5). -1은 아무것도 없음을 의미합니다. 다음과 일치할 수 있습니다.질의, 그래서 인덱스 스캔을 완전히 건너뛸 수 있습니다.pmatch은 다음 경우에 사용하기 위한 출력 인수입니다. 부분 일치가 지원됩니다. 그것을 사용하려면,추출쿼리다음 배열을 할당해야 합니다.*nkeys부울 및 저장 주소는*pmatch. 각 요소 해당 키가 있는 경우 배열을 TRUE로 설정해야 토토 캔. 부분 일치가 필요하며 그렇지 않은 경우 FALSE입니다. 만일*pmatch는 NULL로 설정되고 GIN은 가정합니다. 부분 일치는 필요하지 않습니다. 변수가 초기화되었습니다. 호출 전에 NULL로 변환하므로 이 인수는 간단히 무시할 수 있습니다. 부분 일치를 지원하지 않는 연산자 클래스에 의해.extra_data은 출력 인수입니다. 그것은 가능하다추출쿼리에 추가 데이터를에 전달토토 캔.일관됨그리고비교부분메소드. 그것을 사용하려면,추출쿼리할당해야 함 배열*nkeys포인터 및 저장 주소는*extra_data그러면 원하는 것을 개별 포인터에 저장하십시오. 변수는 호출 전에 NULL로 초기화되므로 인수는 다음을 수행하는 연산자 클래스에 의해 간단히 무시될 수 있습니다. 추가 데이터가 필요하지 않습니다. 만약에*extra_data가 설정되면 전체 배열이 에 전달됨일관됨메서드 및 해당 요소비교부분방법.

부울 일관성(부울 검사[], StrategyNumber n, 데이텀 쿼리, int32 nkeys, 포인터 extra_data[], bool *재확인)

인덱싱된 값이 쿼리를 만족하면 TRUE를 반환토토 캔. 전략 번호가 있는 연산자n(또는 재확인 표시가 반환되면 만족할 수도 있음).확인배열에 길이가 있음n키과 동일합니다. 이전에 반환된 키 수추출쿼리이것을 위해질의데이텀. 의 각 요소확인인덱싱된 값인 경우 배열은 TRUE입니다. 해당 쿼리 키를 포함토토 캔. 즉, if (check[i] == TRUE)의 i번째 키추출쿼리결과 배열이 다음에 있습니다. 색인화된 값. 원본질의데이텀(추출된 키 배열이 아닙니다!) 다음과 같은 경우에 전달됩니다.일관됨방법을 참조해야 토토 캔.extra_data추가 데이터 배열입니다. 에 의해 반환됨추출쿼리또는 없으면 NULL입니다. 성공하면,*다시 확인힙 튜플이 필요한 경우 TRUE로 설정되어야 합니다. 쿼리 연산자에 대해 다시 확인하거나 인덱스가 FALSE인 경우 테스트는 정확합니다.

선택적으로 다음에 대한 연산자 클래스다섯 번째 방법을 제공할 수 있습니다:

int ComparePartial(데이텀 부분 키, 데이텀 키, 전략 번호 n, 포인터 extra_data)

부분 일치 쿼리를 인덱스 키와 비교하세요. 반품 결과를 나타내는 부호가 있는 정수: 0보다 작음 인덱스 키가 쿼리와 일치하지 않지만 인덱스가 일치하지 않음을 의미토토 캔. 스캔은 계속되어야 토토 캔. 0은 인덱스 키가 쿼리와 일치토토 캔. 0보다 크면 인덱스가 더 이상 일치하는 항목이 없으므로 검색이 중지되어야 토토 캔. 는 전략 번호n운영자의 부분 일치 쿼리를 생성한 쿼리가 제공됩니다. 스캔을 종료할 시기를 결정하려면 해당 의미가 필요토토 캔. 또한,extra_data이것은 에 의해 만들어진 추가 데이터 배열의 해당 요소추출쿼리, 또는 다음의 경우 NULL 없음.

지원하기 위해"부분 일치"쿼리, 연산자 클래스는 다음을 제공해야 합니다.비교부분방법 및 해당추출쿼리메소드는 다음을 설정해야 합니다pmatch16288_16350섹션 53.3.2자세한 내용은.