이 문서는 메이저 토토 사이트되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다현재버전 또는 위에 나열된 다른 메이저 토토 사이트 버전 중 하나입니다.

63.3. B- 트리 메이저 토토 사이트 기능

표 38.8, Btree는 필요한 하나와 2 개의 선택적 메이저 토토 사이트 기능을 정의합니다.

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

비교 값이 Collatable Data Type 인 경우 적절한 Collation OID가 표준을 사용하여 비교 메이저 토토 사이트 기능으로 전달됩니다pg_get_collation ()메커니즘.

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

선택적으로 Btree 운영자 가족이 제공 할 수 있습니다in_Range메이저 토토 사이트 기능 기능 번호 3에 등록 된 메이저 토토 사이트 기능. BTREE 지수 작업 중에 사용되지 않습니다. 오히려, 그들은 운영자 가족의 의미를 확장하여을 포함하는 창 절을 메이저 토토 사이트할 수 있습니다.범위 오프셋 선행범위 오프셋 다음프레임 바운드 유형 (참조섹션 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.

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

  • if!suband!Less, returnval =(베이스 + 오프셋)

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

  • ifsuband!Less, returnval =(베이스 - 오프셋)

  • ifsubandLess, returnval <=(Base - 오프셋)

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

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

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

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

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

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

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

반전 된 조건을 가진 유사한 진술은Less= false.

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

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