표시된 바와 같이표 38.9, btree는 하나의 필수 사설 토토 사이트 기능과 네 가지 선택적 사설 토토 사이트 기능을 정의합니다. 5가지 사용자 정의 메서드는 다음과 같습니다.
주문btree 연산자 계열이 비교 연산자를 제공하는 데이터 유형의 각 조합에 대해 다음에 등록된 비교 사설 토토 사이트 기능을 제공해야 합니다.pg_amproc사설 토토 사이트 기능 번호 1 및amproclefttype/amprorighttype비교를 위한 왼쪽 및 오른쪽 데이터 유형과 같습니다(즉, 일치하는 연산자가 등록된 것과 동일한 데이터 유형pg_amop). 비교 함수는 null이 아닌 두 개의 값을 취해야 합니다.A그리고B그리고을 반환합니다.int32값은< 0, 0또는 0언제A < B, A = B또는A B입니다. Null 결과는 허용되지 않습니다. 데이터 유형의 모든 값은 비교할 수 있어야 합니다. 참조src/backend/access/nbtree/nbtcompare.c예를 들어.
비교된 값이 조합 가능한 데이터 유형인 경우 표준을 사용하여 적절한 조합 OID가 비교 사설 토토 사이트 함수에 전달됩니다.PG_GET_COLLATION()기계.
정렬사설 토토 사이트선택적으로 btree 운영자 제품군이 제공할 수 있음정렬 사설 토토 사이트함수, 사설 토토 사이트 함수 번호 2에 등록되어 있습니다. 이 함수를 사용하면 순진하게 비교 사설 토토 사이트 함수를 호출하는 것보다 더 효율적인 방법으로 정렬 목적으로 비교를 구현할 수 있습니다. 이에 관련된 API는 다음에서 정의됩니다.src/include/utils/sortsupport.h.
범위 내선택적으로 btree 운영자 제품군이 제공할 수 있음범위 내사설 토토 사이트 기능, 사설 토토 사이트 기능 번호 3에 등록되어 있습니다. 이는 btree 인덱스 작업 중에는 사용되지 않습니다. 오히려 연산자 계열의 의미를 확장하여를 포함하는 창 절을 사설 토토 사이트할 수 있습니다.범위 오프셋 이전그리고범위 오프셋 다음프레임 경계 유형(참조섹션 4.2.8). 기본적으로 제공되는 추가 정보는 를 더하거나 빼는 방법입니다.오프셋가족의 데이터 순서와 호환되는 방식으로 값을 지정합니다.
안범위 내함수에는 서명이 있어야 합니다
범위 내(발유형1,베이스유형1,오프셋유형2,하위부울,적음부울) 부울을 반환합니다
발그리고베이스연산자 계열에서 사설 토토 사이트하는 유형 중 하나인 동일한 유형이어야 합니다(즉, 순서를 제공하는 유형). 그러나오프셋다른 유형일 수 있으며, 이는 가족이 사설 토토 사이트하지 않는 유형일 수 있습니다. 예를 들어 내장된time_ops가족은 다음을 제공합니다범위 내함수오프셋유형간격. 가족이 제공할 수 있습니다.범위 내사설 토토 사이트되는 유형 및 하나 이상의 기능오프셋유형. 각각범위 내함수를 입력해야 합니다pg_amproc함께amproclefttype같음유형1그리고amprorighttype같음유형2.
an의 필수 의미론범위 내함수는 두 개의 부울 플래그 매개변수에 따라 달라집니다. 더하거나 빼야 합니다베이스그리고오프셋, 그런 다음 비교발결과에 다음과 같이 표시됩니다.
if!하위그리고!적음, 반환발 = (베이스 + 오프셋)
if!하위그리고적음, 복귀발 <= (베이스 + 오프셋)
if하위그리고!적음, 반환발 = (베이스 - 오프셋)
if하위그리고적음, 반환발 <= (베이스 - 오프셋)
그렇게 하기 전에 함수는 다음의 부호를 확인해야 합니다.오프셋: 0보다 작으면 오류 발생ERRCODE_INVALID_PRECEDING_OR_FOLLOWING_SIZE(22013) 다음과 같은 오류 텍스트 포함“창 함수의 이전 또는 다음 크기가 잘못되었습니다.”. (비표준 연산자 계열은 의미상 필요성이 거의 없어 이 제한을 무시할 수도 있지만 이는 SQL 표준에서 요구됩니다.) 이 요구 사항은 다음으로 위임됩니다.범위 내핵심 코드가 무엇을 이해할 필요가 없도록 함수“0보다 작음”특정 데이터 유형을 의미합니다.
추가적인 기대는 다음과 같습니다.범위 내함수는 가능하다면 오류 발생을 피해야 합니다.베이스 + 오프셋또는베이스 - 오프셋오버플로될 것입니다. 해당 값이 데이터 유형의 범위를 벗어나더라도 올바른 비교 결과를 확인할 수 있습니다. 데이터 유형에 다음과 같은 개념이 포함되어 있는 경우 주의하세요.“무한대”또는“NaN”, 이를 보장하려면 특별한 주의가 필요할 수 있습니다.범위 내의 결과는 연산자 계열의 일반적인 정렬 순서와 일치합니다.
의 결과범위 내함수는 연산자 계열이 적용한 정렬 순서와 일치해야 합니다. 정확하게 말하자면, 고정된 값이 주어지면오프셋그리고하위, 다음:
만약범위 내와적음= 일부에게는 true가 true임발1그리고베이스, 모든 경우에 해당되어야 합니다.발2 <= val1동일하게베이스.
만약범위 내와적음= 일부에게는 true가 false임val1그리고베이스, 모든 경우에 대해 false여야 합니다.발2 = 발1동일하게베이스.
만약in_range함께적음= 일부에게는 true가 true임발그리고베이스1, 모든 경우에 해당되어야 합니다.base2 = 베이스1동일하게발.
만약범위 내와적음= 일부에게는 true가 false임발그리고베이스1, 모든 경우에 대해 false여야 합니다.base2 <= 베이스1동일하게발.
역전된 조건을 가진 유사한 진술은 다음과 같은 경우에 유지됩니다.적음= 거짓.
주문되는 유형(유형1)이 조합 가능하면 적절한 조합 OID가에 전달됩니다.in_range함수, 표준 PG_GET_COLLATION() 메커니즘을 사용합니다.
범위 내함수는 NULL 입력을 처리할 필요가 없으며 일반적으로 엄격으로 표시됩니다.
equalimage선택적으로 btree 연산자 계열이 제공할 수 있습니다.equalimage (“동등성은 이미지 평등을 의미합니다”) 사설 토토 사이트 함수는 사설 토토 사이트 함수 번호 4에 등록되어 있습니다. 이러한 함수를 통해 핵심 코드는 btree 중복 제거 최적화를 적용하는 것이 안전한 시기를 결정할 수 있습니다. 현재,equalimage함수는 색인을 구축하거나 재구축할 때만 호출됩니다.
안equalimage함수에는 서명이 있어야 합니다
동일이미지(opcintypeoid)는 부울을 반환합니다.
반환 값은 연산자 클래스 및 데이터 정렬에 대한 정적 정보입니다. 돌아오는 중참다음을 나타냅니다.주문연산자 클래스에 대한 함수는 반환만 보장됩니다.0 (“인수는 동일합니다”) 언제A및B인수는 의미 정보의 손실 없이 상호 교환 가능합니다. 등록하지 않음균등이미지함수 또는 반환거짓이 조건이 유지될 수 없다고 가정할 수 없음을 나타냅니다.
그opcintype인수는연산자 클래스가 색인화하는 데이터 유형입니다. 이는 동일한 기본 요소를 재사용할 수 있는 편리함입니다.pg_type.oidequalimage연산자 클래스 전반에 걸쳐 함수를 사용합니다. 만일opcintype은 조합 가능한 데이터 유형이므로 적절한 조합 OID가equalimage함수, 표준 사용PG_GET_COLLATION()메커니즘.
연산자 클래스에 관한 한 반환참중복 제거가 안전함을 나타냅니다(또는 OID가 전달된 데이터 정렬에 대해 안전함을 나타냅니다.균등이미지함수). 그러나 핵심 코드는 다음 경우에만 인덱스에 대해 중복 제거가 안전한 것으로 간주합니다.모든인덱싱된 열은 다음을 등록하는 연산자 클래스를 사용합니다.equalimage함수, 그리고 각 함수는 실제로 반환됩니다.참호출될 때.
이미지 평등은거의간단한 비트 동등성과 동일한 조건입니다. 한 가지 미묘한 차이점이 있습니다. varlena 데이터 유형을 인덱싱할 때 두 이미지 동일 데이텀의 디스크상 표현은 일관되지 않은 적용으로 인해 비트 단위로 동일하지 않을 수 있습니다.토스트입력 시 압축. 공식적으로 연산자 클래스의equalimage함수 반환참, 다음과 같이 가정하는 것이 안전합니다.datum_image_eq()C 함수는 항상 연산자 클래스의 내용과 일치합니다.주문함수(동일한 데이터 정렬 OID가 두 가지 모두에 전달되는 경우equalimage그리고주문함수).
핵심 코드는 근본적으로 다음에 대해 아무것도 추론할 수 없습니다.“동일성은 이미지 평등을 의미합니다.”동일한 계열에 있는 다른 연산자 클래스의 세부정보를 기반으로 하는 다중 데이터 유형 계열 내 연산자 클래스의 상태입니다. 또한, 사업자군이 교차형을 등록하는 것은 타당하지 않습니다.equalimage함수를 실행하려고 시도하면 오류가 발생합니다. 그 이유는“동일성은 이미지 평등을 의미합니다.”상태는 연산자 계열 수준에서 다소 정의되는 정렬/동일성 의미에만 의존하지 않습니다. 일반적으로 하나의 특정 데이터 유형이 구현하는 의미는 별도로 고려해야 합니다.
코어에 포함된 연산자 클래스가 따르는 규칙PostgreSQL유통은 주식을 등록하는 것, 일반equalimage함수. 대부분의 연산자 클래스가 등록됩니다.bequalimage(), 이는 중복 제거가 무조건 안전함을 나타냅니다. 다음과 같은 조합 가능한 데이터 유형에 대한 연산자 클래스텍스트등록btvarstrequalimage(), 이는 결정적 데이터 정렬을 사용하면 중복 제거가 안전함을 나타냅니다. 타사 확장 프로그램의 모범 사례는 자체 맞춤 기능을 등록하여 제어권을 유지하는 것입니다.
옵션선택적으로 B-트리 연산자 제품군이 제공할 수 있습니다.옵션 (“연산자 클래스 특정 옵션”) 사설 토토 사이트 함수는 사설 토토 사이트 함수 번호 5에 등록되어 있습니다. 이 함수는 연산자 클래스 동작을 제어하는 사용자에게 표시되는 매개변수 집합을 정의합니다.
안옵션사설 토토 사이트 기능에는 서명이 있어야 합니다
옵션(재이동local_relopts *)은 void를 반환합니다.
함수는 a에 대한 포인터를 전달받습니다.local_reloptsstruct, 연산자 클래스별 옵션 세트로 채워져야 합니다. 옵션은를 사용하여 다른 사설 토토 사이트 기능에서 액세스할 수 있습니다.PG_HAS_OPCLASS_OPTIONS()그리고PG_GET_OPCLASS_OPTIONS()매크로.
현재 B-Tree 연산자 클래스에는 다음이 없습니다.옵션사설 토토 사이트 기능. B-트리는 GiST, SP-GiST, GIN 및 BRIN과 같은 키의 유연한 표현을 허용하지 않습니다. 그래서,옵션아마도 현재 B-트리 인덱스 액세스 방법에는 그다지 적용되지 않을 것입니다. 그럼에도 불구하고, 이 사설 토토 사이트 기능은 통일성을 위해 B-트리에 추가되었으며 아마도 다음 B-트리가 진화하는 동안 사용될 것입니다.PostgreSQL.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.