67.3. B- 트리 사설 토토 사이트 기능#

표 38.9, Btree는 필요한 하나와 4 개의 선택적 사설 토토 사이트 기능을 정의합니다. 5 가지 사용자 정의 방법은 다음과 같습니다.

Order

BTREE 운영자 제품군이 비교 연산자에게 제공하는 데이터 유형의 각 조합에 대해 비교 사설 토토 사이트 기능을 제공해야합니다.PG_AMPROC사설 토토 사이트 기능 번호 1 및amproclefttype/amprocrighttype비교를 위해 왼쪽 및 오른쪽 데이터 유형과 동일합니다 (즉, 일치하는 연산자가 in에 등록되는 동일한 데이터 유형pg_amop). 비교 함수는 두 개의 null 값을 취해야합니다aandB그리고 반환int32그 값< 0, 0또는 0whena < B, a = B또는a B8466_8565src/backend/access/nbtree/nbtcompare.c예제.

비교 값이 Collatable 데이터 유형 인 경우 적절한 Collation OID는 표준을 사용하여 비교 사설 토토 사이트 기능으로 전달됩니다.pg_get_collation ()메커니즘.

SortsUpport

선택적으로 Btree 운영자 가족이 제공 할 수 있습니다정렬 사설 토토 사이트사설 토토 사이트 기능 번호 2에 등록 된 함수. 이것에 관련된 API는에 정의됩니다.src/include/utils/sortsupport.h.

in_Range

선택적으로 Btree 운영자 가족이 제공 할 수 있습니다in_Range사설 토토 사이트 기능 기능 번호 3에 등록 된 사설 토토 사이트 기능. BTREE 지수 작업 중에 사용되지 않습니다. 오히려, 그들은 운영자 가족의 의미를 확장하여을 포함하는 창 절을 사설 토토 사이트할 수 있습니다.범위 오프셋 선행and범위 오프셋 다음프레임 바운드 유형 (참조섹션 4.2.8). 기본적으로 제공된 추가 정보는 AD를 추가하거나 빼는 방법입니다.오프셋가족의 데이터 순서와 호환되는 방식으로 가치가 있습니다.

anin_Range함수는 서명이 있어야합니다

in_Range (valtype1,basetype1,오프셋type2,subbool,Lessbool)
반품 bool

valandbase동일한 유형이어야합니다.이 유형은 운영자 제품군이 사설 토토 사이트하는 유형 중 하나입니다 (즉, 주문을 제공하는 유형). 하지만,오프셋다른 유형 일 수 있으며, 그렇지 않으면 가족이 사설 토토 사이트하지 않을 수 있습니다. 예를 들어 내장time_ops가족 제공in_Range오프셋OF TYPE간격. 가족이 제공 할 수 있습니다in_Range사설 토토 사이트되는 유형의 기능 및 하나 이상의 기능오프셋유형. 각in_Range함수를 입력해야합니다pg_amprocwithamproclefttype동일type1andamprocrighttype동일type2.

in_Range함수는 두 부울 플래그 매개 변수에 따라 다릅니다. 추가하거나 빼야baseand오프셋, 그런 다음 비교val결과는 다음과 같이 :

  • if!sub!Less, returnval =(Base + 오프셋)

  • if!subandLess, returnval <=(Base + 오프셋)

  • ​​ifsuband!Less, returnval =(Base - 오프셋)

  • ifsubandLess, returnval <=(베이스 - 오프셋)

그렇게하기 전에 함수는의 부호를 확인해야합니다.오프셋: 0보다 작은 경우 오류를 올리십시오errcode_invalid_preceding_or_following_size(22013) 오류 텍스트와 같은창 함수의 이전 또는 다음 크기 전 또는 다음 크기. (비표준 운영자 패밀리는 아마도이 제한을 무시하기로 선택할 수 있지만 SQL 표준에 의해 필요합니다. 이에 대한 의미 론적 필요성이 거의 없기 때문에이 요구 사항은에 위임된다.in_Range핵심 코드가 무엇을 이해할 필요가 없도록 함수0보다 작음특정 데이터 유형을 의미합니다.

추가적인 기대는입니다.in_Range함수는 실용적이라면 오류를 던지지 않아야합니다.base + 오프셋또는Base - 오프셋오버플로. 해당 값이 데이터 유형 범위를 벗어난 경우에도 올바른 비교 결과를 결정할 수 있습니다. 데이터 유형에과 같은 개념이 포함 된 경우Infinity또는Nanin_Range의 결과는 운영자 제품군의 정상 정렬 순서에 동의합니다.

결과의 결과in_Range함수는 운영자 제품군이 부과하는 정렬 순서와 일치해야합니다. 고정 된 값이를 감안할 때 정확하게오프셋andsub, 다음 :

  • ifin_RangewithLess= 일부는 참입니다val1andBase, 모든 것에 대해 사실이어야합니다val2 <= val1같은베이스.

  • ifin_RangewithLess= true는 일부는 거짓입니다val1andBase, 모든 것에 대해 거짓이어야합니다val2 = val1같은base.

  • ifin_RangewithLess= 일부는 참입니다valandBase1, 모든 것에 대해 사실이어야합니다Base2 = Base1같은val.

  • ifin_RangewithLess= true는 일부는 거짓입니다valandBase1, 모든 것에 대해 거짓이어야합니다Base2 <= Base1같은val.

거꾸로 된 조건을 가진 유사한 진술은Less= false.

순서가있는 경우 (type1)는 Collatable입니다. 적절한 Collation OID가 전달됩니다in_range함수, 표준 PG_GET_COLLATION () 메커니즘을 사용한 함수.

in_Range함수는 널 입력을 처리 할 필요가 없으며 일반적으로 엄격하게 표시됩니다.

EqualImage

선택적으로 Btree 운영자 가족이 제공 할 수 있습니다EqualImage(평등은 이미지 평등을 암시합니다) 사설 토토 사이트 기능 번호 4에 등록 된 사설 토토 사이트 함수.이 기능을 사용하면 핵심 코드가 BTREE 중복 제거 최적화를 적용하는 것이 안전한시기를 결정할 수 있습니다. 현재,EqualImage기능은 색인을 구축하거나 재건 할 때만 호출됩니다.

anEqualImage함수는 서명이 있어야합니다

EqualImage (opcintype OID) BOOL을 반환

반환 값은 운영자 클래스 및 Collation에 대한 정적 정보입니다. 반환trueOrder운영자 클래스의 함수는 반품 만 보장됩니다0(인수는 동등합니다) 때aandB인수는 의미 정보의 손실 없이도 상호 교환 할 수 있습니다. 등록하지 않음EqualImage기능 또는 반환거짓이 조건을 보유 할 수 없음을 나타냅니다.

theopcintype인수는pg_type.Oid운영자 클래스 인덱스 인 데이터 유형의. 이것은 동일한 기본을 재사용 할 수있는 편의입니다EqualImage운영자 클래스에서 기능. 만약에opcintype는 Collatable Data Type입니다. 적절한 Collation OID가 전달됩니다.EqualImage표준 사용 함수pg_get_collation ()메커니즘.

운영자 클래스에 관한 한, 반환true중복 제거가 안전하다는 것을 나타냅니다 (또는 OID가 전달 된 Collation에 안전합니다EqualImage함수). 그러나 핵심 코드는 인덱스에 대한 중간 복제 만 안전하다고 간주합니다.Everyindexed 컬럼을 등록하는 연산자 클래스를 사용합니다EqualImage함수, 그리고 각 함수는 실제로 반환true전화 할 때.

이미지 평등은거의간단한 비트 평등과 동일한 조건. 한 가지 미묘한 차이가 있습니다 : Varlena 데이터 유형을 색인화 할 때, 두 이미지 동등한 기준의 온 디스크 표현은 일관되지 않은로 인해 약간 동일하지 않을 수 있습니다.토스트입력시 압축. 공식적으로 운영자 클래스의 경우EqualImage함수 반환truedatum_image_eq ()C 함수는 항상 운영자 클래스와 동의합니다Order22261_22333EqualImageandOrder함수).

핵심 코드는 근본적으로를 추론 할 수 없습니다평등은 이미지 평등을 암시합니다동일한 가족의 다른 운영자 클래스의 세부 사항을 기반으로 다중 데이터 유형 패밀리 내 운영자 클래스 상태. 또한 운영자 가족이 크로스 타입을 등록하는 것은 합리적이지 않습니다.EqualImage함수와 그렇게하려고 시도하면 오류가 발생합니다. 이건이기 때문입니다.평등은 이미지 평등을 암시합니다상태는 운영자 가족 수준에서 다소 정의되는 정렬/평등 의미에 의존하지 않습니다. 일반적으로 특정 데이터 유형이 구현하는 의미는 별도로 고려되어야합니다.

컨벤션과 핵심에 포함 된 운영자 클래스가 뒤 따릅니다PostgreSQL배포는 주식을 등록하는 것입니다EqualImage함수. 대부분의 운영자 클래스 레지스터btequalimage (), 이는 중복 제거가 무조건 안전하다는 것을 나타냅니다. 와 같은 협의 가능한 데이터 유형에 대한 운영자 클래스텍스트레지스터btvarstrequalimage (), 이는 중복 제거가 결정 론적 콜라이트로 안전하다는 것을 나타냅니다. 타사 확장에 대한 모범 사례는 제어를 유지하기 위해 자신의 사용자 지정 기능을 등록하는 것입니다.

옵션

선택적으로, B- 트리 운영자 제품군이 제공 할 수 있습니다옵션(운영자 클래스 특정 옵션) 사설 토토 사이트 기능 번호 5에 등록 된 사설 토토 사이트 함수.

an옵션사설 토토 사이트 함수는 서명이 있어야합니다

옵션 (Rekopts local_relopts *) 반환 void

함수는 a에 포인터가 전달됩니다.local_relopts구조물은 일련의 운영자 클래스 특정 옵션으로 채워야합니다. 옵션은를 사용하여 다른 사설 토토 사이트 기능에서 액세스 할 수 있습니다.pg_has_opclass_options ()andpg_get_opclass_options ()매크로

현재, B-Tree 운영자 클래스가 없음옵션사설 토토 사이트 기능. B-Tree는 Gist, SP-Gist, Gin 및 Brin과 같은 키를 유연하게 표현할 수 없습니다. 그래서,옵션현재 B-Tree 인덱스 액세스 방법에 많은 응용 프로그램이 없을 것입니다. 그럼에도 불구하고,이지지 함수는 균일 성을 위해 B- 트리에 추가되었으며, 아마도 B- 트리의 추가 진화 중에PostgreSQL.

수정 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면