| PostgreSQL 9.1.24 문서 | ||||
|---|---|---|---|---|
| 젠 토토 : 문서 : 9.1 : 소개 | 사설 토토 : 문서 : 9.1 : 진 인덱스 | 54장. GIN 지수 | 메이저 토토 사이트 : 문서 : 9.1 : 구현 | |
그진인터페이스에는 높은 수준의 추상화, 액세스 방법 필요 구현자는 데이터 유형의 의미를 구현하기만 합니다. 액세스되고 있습니다.진층 자체적으로 동시성을 처리하고 트리를 로깅하고 검색합니다. 구조.
을 얻기 위해 필요한 모든 것진액세스 방법 작동은 4개(또는 5개)의 사용자 정의를 구현하는 것입니다. 트리의 키 동작을 정의하는 메서드와 키, 인덱싱된 항목 및 인덱싱 가능한 배트맨 토토 간의 관계. 한마디로,진결합 일반성, 코드 재사용 및 깔끔한 확장성을 갖춘 인터페이스.
연산자 클래스가 수행하는 네 가지 메소드진다음을 제공해야 합니다:
int 비교(데이텀 a, 데이텀
비)두 개의 키(색인된 항목 아님!)를 비교하고 0보다 작은 정수, 0 또는 0보다 큰 정수, 첫 번째 키가 다음보다 작거나 같은지 여부를 나타냅니다. 두 번째보다 큽니다. Null 키는 절대 전달되지 않습니다. 기능.
데이텀 *extractValue(데이텀
itemValue, int32 *nkeys, bool **nullFlags)항목이 주어진 palloc'd 키 배열을 반환합니다. 색인이 생성되었습니다. 반환된 키의 수는 다음 위치에 저장되어야 합니다.*nkeys. 키 중 하나라도 가능하다면 null, 또한 배열의 palloc도 있습니다.*nkeys103PostgreSQL: 문서: 9.1: 확장성85*nullFlags, 이를 null로 설정합니다. 필요에 따라 플래그를 지정합니다.*nullFlags될 수 있습니다 모든 키가 null이 아닌 경우 NULL(초기값)을 남깁니다. 는 항목에 키가 없으면 반환 값은 NULL이 될 수 있습니다.
데이텀 *extractQuery(데이텀 쿼리,
int32 *nkeys, StrategyNumber n, bool **pmatch, 포인터
**extra_data, bool **nullFlags, int32
*검색모드)다음과 같은 값이 주어지면 palloc'd 키 배열을 반환합니다.
질문; 즉,질의이것은
인덱싱 가능한 연산자의 오른쪽에 있는 값
왼쪽은 색인이 생성된 열입니다.n은 운영자의 전략 번호입니다.
연산자 클래스 내에서(참조섹션 35.14.2).
종종,추출배트맨 토토필요할 것입니다
상담하다n데이터를 결정하기 위해
유형질의그리고 그 방법
키 값을 추출하는 데 사용해야 합니다. 반환된 수
키는 다음에 저장되어야 합니다.*nkeys.
키 중 하나라도 null이 될 수 있으면 다음 배열도 palloc에 추가합니다.*nkeys부울, 주소 저장
에서*nullFlags, 이를 null로 설정합니다.
필요에 따라 플래그를 지정합니다.*nullFlags될 수 있습니다
모든 키가 null이 아닌 경우 NULL(초기값)을 남깁니다. 는
다음과 같은 경우 반환 값은 NULL일 수 있습니다.질의키가 포함되어 있지 않습니다.
검색모드출력입니다
허용하는 인수추출배트맨 토토방법에 대한 세부정보를 지정합니다.
검색이 완료됩니다. 만약에*검색모드다음으로 설정됨GIN_SEARCH_MODE_DEFAULT(이 값은
호출 전으로 초기화됩니다), 일치하는 항목만
반환된 키 중 적어도 하나는 후보로 간주됩니다.
일치합니다. 만일*검색모드다음으로 설정됨GIN_SEARCH_MODE_INCLUDE_EMPTY,
그런 다음 일치하는 항목이 하나 이상 포함된 항목 외에도
키, 키가 전혀 포함되지 않은 항목이 고려됩니다.
후보 경기. (이 모드는 구현에 유용합니다.
예를 들어 is-subset-of 연산자입니다.) If*검색모드다음으로 설정됨GIN_SEARCH_MODE_ALL, null이 아닌 모든 항목
인덱스에서는 후보 일치로 간주됩니다.
반환된 키 중 하나와 일치하는지 여부. (이 모드는
필요하기 때문에 다른 두 가지 선택보다 느립니다.
본질적으로 전체 인덱스를 스캔하지만
코너 케이스를 올바르게 구현하는 데 필요합니다. 운영자
대부분의 경우 이 모드가 필요한 것은 아마도 좋지 않을 것입니다.
GIN 연산자 클래스의 후보입니다.) 사용할 기호
이 모드 설정은 다음에 정의되어 있습니다.액세스/gin.h.
pmatch은 출력 인수입니다.
부분 일치가 지원되는 경우에 사용됩니다. 그것을 사용하려면,추출배트맨 토토할당해야 함
배열*nkeys부울 및 저장
주소는*pmatch. 각각
배열의 요소는 다음과 같은 경우 TRUE로 설정되어야 합니다.
해당 키에는 부분 일치가 필요하며, 그렇지 않으면 FALSE입니다. 만일*pmatchNULL로 설정되고 GIN으로 설정됩니다.
부분 일치가 필요하지 않다고 가정합니다. 변수는
호출 전에 NULL로 초기화되므로 이 인수는
지원하지 않는 연산자 클래스에서는 단순히 무시됩니다.
부분적으로 일치합니다.
extra_data출력입니다
허용하는 인수추출배트맨 토토추가 데이터를 전달하기 위해일관됨그리고비교부분메소드. 받는 사람
사용하세요,추출배트맨 토토반드시
배열을 할당합니다.*nkeys포인터를 사용하고 주소를 다음 위치에 저장합니다.*extra_data, 그런 다음 원하는 것을 저장하세요.
개별 포인터에. 변수가 초기화되었습니다.
호출 전에 NULL로 변환하므로 이 인수는 간단히 무시할 수 있습니다.
추가 데이터가 필요하지 않은 연산자 클래스에 의해. 만일*extra_data설정되었습니다. 전체
배열이에 전달됩니다.일관됨방법 및 적절한
요소를비교부분방법.
부울 일관성(부울 검사[],
StrategyNumber n, 데이텀 쿼리, int32 nkeys, 포인터
extra_data[], bool *recheck, 데이텀 queryKeys[], bool
nullFlags[])색인된 항목이 배트맨 토토를 만족하면 TRUE를 반환합니다.
전략 번호가 있는 연산자n(또는 재확인 표시가
반환됨). 이 기능은 다음 항목에 직접 액세스할 수 없습니다.
인덱싱된 항목의 값, 이후진항목을 명시적으로 저장하지 않습니다.
오히려 이용 가능한 것은 어떤 키에 대한 지식입니다.
배트맨 토토에서 추출된 값은 지정된 인덱스에 나타납니다.
아이템.확인배열에 길이가 있음n키과 동일합니다.
이전에 반환된 키 수추출배트맨 토토이것을 위해질의데이텀. 의 각 요소확인인덱싱된 항목인 경우 배열은 TRUE입니다.
해당 배트맨 토토 키를 포함합니다. 즉, if (check[i] ==
TRUE)의 i번째 키추출배트맨 토토결과 배열이 다음에 있습니다.
색인이 생성된 항목입니다. 원본질의다음 경우에 데이터가 전달됩니다.일관됨메소드는 다음을 수행해야 합니다.
상담해 보세요. 그도 마찬가지입니다.배트맨 토토키[]그리고nullFlags[]이전에 반환한 배열추출배트맨 토토. extra_data반환된 추가 데이터 배열입니다.
으로추출배트맨 토토, 또는 다음의 경우 NULL
없음.
언제추출배트맨 토토반환
널 키 입력배트맨 토토키[],
해당확인[]요소는
인덱싱된 항목에 null 키가 포함되어 있으면 TRUE입니다. 즉,
의 의미론확인[]같습니다다음과 다르지 않습니다.일관됨함수는
해당하는 것을 조사하십시오.nullFlags[]요소가 다음을 알려야 하는 경우
일반 값 일치와 null의 차이점
일치합니다.
성공하면,*다시 확인해야 합니다 힙 튜플을 다시 확인해야 하는 경우 TRUE로 설정 쿼리 연산자이거나 인덱스 테스트가 정확한 경우 FALSE입니다. 즉, FALSE 반환 값은 힙이 튜플이 쿼리와 일치하지 않습니다. 다음의 TRUE 반환 값:*다시 확인거짓 보증으로 설정됨 힙 튜플이 쿼리와 일치하는지 확인합니다. 그리고 TRUE 수익 가치를 부여하다*다시 확인TRUE로 설정됨 이는 힙 튜플이 쿼리와 일치할 수 있음을 의미합니다. 쿼리를 평가하여 가져와서 다시 확인해야 합니다. 원래 색인이 생성된 항목에 대해 직접 연산자를 사용합니다.
선택적으로 다음에 대한 연산자 클래스진다섯 번째 메소드를 제공할 수 있습니다:
int ComparePartial(데이텀
부분 키, 데이텀 키, 전략 번호 n, 포인터
extra_data)부분 일치 쿼리 키를 인덱스 키와 비교하세요.
결과를 나타내는 부호가 있는 정수를 반환합니다.
0보다 크면 인덱스 키가 쿼리와 일치하지 않음을 의미하지만
인덱스 스캔은 계속되어야 합니다. 0은 인덱스를 의미합니다.
키가 쿼리와 일치합니다. 0보다 큰 것은 다음을 나타냅니다.
더 이상 일치하는 항목이 없으므로 인덱스 스캔이 중지되어야 합니다.
가능합니다. 전략 번호n의
부분 일치 쿼리를 생성한 연산자는 다음과 같습니다.
단, 의미론이 결정하기 위해 필요한 경우
스캔을 종료할 때. 또한,extra_data은 해당 요소입니다.
다음에 의해 만들어진 추가 데이터 배열추출배트맨 토토, 또는 없으면 NULL입니다. 널 키
이 함수에 전달되지 않습니다.
지원하기 위해"부분 일치"쿼리,
연산자 클래스는 다음을 제공해야 합니다.비교부분방법 및 해당추출배트맨 토토메서드는 다음을 설정해야 합니다.pmatch20033_2009554.3.2항자세한 내용은.
다양한 실제 데이터 유형데이텀위에 언급된 값은 다음에 따라 다릅니다.
운영자 클래스. 전달된 항목 값추출값항상 연산자 클래스에 속합니다.
입력 유형이며 모든 키 값은 클래스의 것이어야 합니다.저장유형. 의 유형질의인수 전달됨추출배트맨 토토그리고일관적인다음으로 지정된 것은 무엇이든
다음으로 식별되는 클래스 멤버 연산자의 오른쪽 입력 유형
전략 번호. 항목 유형과 동일할 필요는 없습니다.
올바른 유형의 키 값을 추출할 수 있는 한
그것.