이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : F.10. 메이저 토토 사이트-다차원 메이저 토토 사이트 데이터 유형버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

F.8. 토토 꽁 머니

이 모듈은 데이터 유형을 구현합니다.토토 꽁 머니다차원 토토 꽁 머니를 표현하기 위한 것입니다.

F.8.1. 구문

표 F-3다음을 보여줍니다 에 대한 유효한 외부 표현토토 꽁 머니유형.x, y등은 부동 소수점 숫자를 나타냅니다.

표 F-3. 토토 꽁 머니 외부 표현

x 1차원 점(또는 길이가 0인 1차원 점) 간격)
(x) 위와 동일
x1,x2,...,xn n차원 공간의 점으로 내부적으로 다음과 같이 표현됩니다. 제로 볼륨 토토 꽁 머니
(x1,x2,...,xn) 위와 동일
(x),(y) 다음에서 시작하는 1차원 간격x그리고 종료 시간:y또는 그 반대로; 주문은 그렇지 않습니다 문제
[(x),(y)] 위와 동일
(x1,...,xn),(y1,...,yn) 대각선 쌍으로 표현되는 n차원 토토 꽁 머니 반대편 모서리
[(x1,...,xn),(y1,...,yn)] 위와 동일

토토 꽁 머니의 반대쪽 모서리의 순서는 중요하지 않습니다. 입력됩니다.토토 꽁 머니함수 유니폼을 만드는 데 필요한 경우 자동으로 값을 교환"왼쪽 하단 — 오른쪽 상단"내부 표현.

공백은 무시되므로[(x),(y)]다음과 같습니다[ ( x ), ( y ) ].

F.8.2. 정밀도

값은 내부적으로 64비트 부동 소수점 숫자로 저장됩니다. 이는 약 16자리 이상의 유효 숫자를 의미합니다. 잘립니다.

F.8.3. 사용법

토토 꽁 머니모듈에 GiST 색인이 포함되어 있습니다. 에 대한 연산자 클래스토토 꽁 머니값. 운영자 GiST 연산자 클래스에서 지원하는 내용은 다음과 같습니다.표 F-4.

표 F-4. Cube GiST 운영자

운영자 설명
a = b 토토 꽁 머니 a와 b는 동일합니다.
a && b 토토 꽁 머니 a와 b가 겹칩니다.
a @ b 토토 꽁 머니 a는 토토 꽁 머니 b를 포함합니다.
a <@ b 토토 꽁 머니 a는 토토 꽁 머니 b에 포함되어 있습니다.

(PostgreSQL 8.2 이전에는 격리 연산자@그리고<@이었어 각각 호출됨@그리고~. 이 이름은 여전히 사용 가능하지만 더 이상 사용되지 않으며 결국 폐기될 예정입니다. 주의할 점은 오래된 이름은 이전 규칙과 반대로 바뀌었습니다. 핵심 기하학적 데이터 유형!)

표준 B-트리 연산자도 제공됩니다. 예를 들면

운영자 설명
[a, b] < [c, d] 미만
[a, b] [c, d] 보다 큼
이 연산자는 실제적인 측면에서는 별로 의미가 없습니다. 목적은 있지만 정렬. 이들 연산자는 먼저 (a)를 (c)와 비교합니다. 이것이 동일하다면 (b)를 (d)와 비교하십시오. 그 결과 합리적으로 대부분의 경우 좋은 정렬 기능을 사용하려는 경우 유용합니다. 이 유형으로 ORDER BY하세요.

표 F-5다음을 보여줍니다 사용 가능한 기능입니다.

표 F-5. 토토 꽁 머니 함수

토토 꽁 머니(float8)는 토토 꽁 머니를 반환합니다. 두 좌표가 동일한 1차원 토토 꽁 머니를 만듭니다.토토 꽁 머니(1) == '(1)'
토토 꽁 머니(float8, float8)는 토토 꽁 머니를 반환합니다. 1차원 토토 꽁 머니를 만듭니다.토토 꽁 머니(1,2) == '(1),(2)'
토토 꽁 머니(float8[])는 토토 꽁 머니를 반환합니다. 다음에 의해 정의된 좌표를 사용하여 부피가 0인 토토 꽁 머니를 만듭니다. 배열.토토 꽁 머니(ARRAY[1,2]) == '(1,2)'
토토 꽁 머니(float8[], float8[]) 반환 토토 꽁 머니 오른쪽 위 좌표와 왼쪽 아래 좌표가 있는 토토 꽁 머니를 만듭니다. 길이가 같아야 하는 두 배열로 정의됩니다.토토 꽁 머니('1,2'::float[], '3,4'::float[]) == '(1,2),(3,4)'
토토 꽁 머니(토토 꽁 머니, float8)는 토토 꽁 머니를 반환합니다. 기존 토토 꽁 머니에 차원을 추가하여 새 토토 꽁 머니를 만듭니다. 새 좌표의 두 부분에 대해 동일한 값을 사용합니다. 이것은 계산된 값을 바탕으로 토토 꽁 머니를 하나씩 만드는 데 유용합니다.토토 꽁 머니('(1)',2) == '(1,2),(1,2)'
토토 꽁 머니(토토 꽁 머니, float8, float8) 반환 토토 꽁 머니 기존 토토 꽁 머니에 차원을 추가하여 새 토토 꽁 머니를 만듭니다. 이는 계산된 토토 꽁 머니를 하나씩 만드는 데 유용합니다. 값.토토 꽁 머니('(1,2)',3,4) == '(1,3),(2,4)'
cube_dim(토토 꽁 머니)은 int를 반환합니다. 토토 꽁 머니의 차원 수를 반환합니다.
cube_ll_coord(cube, int)가 반환됩니다. 더블 왼쪽 하단 모서리의 n번째 좌표 값을 반환합니다. 토토 꽁 머니
cube_ur_coord(cube, int)가 반환됩니다. 더블 의 오른쪽 상단 모서리에 대한 n번째 좌표 값을 반환합니다. 토토 꽁 머니
cube_is_point(cube)는 bool을 반환합니다. 토토 꽁 머니가 점, 즉 두 정의하는 점인 경우 참을 반환합니다. 모서리는 동일합니다.
cube_distance(토토 꽁 머니, 토토 꽁 머니)가 반환됩니다. 더블 두 토토 꽁 머니 사이의 거리를 반환합니다. 두 토토 꽁 머니가 모두 있는 경우 포인트, 이는 일반적인 거리 함수입니다.
cube_subset(cube, int[])는 다음을 반환합니다. 토토 꽁 머니 다음 목록을 사용하여 기존 토토 꽁 머니에서 새 토토 꽁 머니를 만듭니다. 배열의 차원 인덱스. LL을 모두 찾는 데 사용할 수 있습니다. 단일 차원의 UR 좌표(예:cube_subset(토토 꽁 머니('(1,3,5),(6,7,8)'), ARRAY[2]) = '(3),(7)'. 또는 차원을 삭제하거나 재정렬하는 데 사용할 수 있습니다. 원하는 대로, 예:cube_subset(토토 꽁 머니('(1,3,5),(6,7,8)'), ARRAY[3,2,1,1]) = '(5, 3, 1, 1),(8, 7, 6, 6)'.
cube_union(토토 꽁 머니, 토토 꽁 머니)가 반환됩니다. 토토 꽁 머니 두 토토 꽁 머니의 합집합 생성
cube_inter(토토 꽁 머니, 토토 꽁 머니)가 반환됩니다. 토토 꽁 머니 두 토토 꽁 머니의 교차점 생성
cube_enlarge(토토 꽁 머니 c, 더블 r, int n) 토토 꽁 머니를 반환합니다 적어도 지정된 반경만큼 토토 꽁 머니의 크기를 증가시킵니다. n 차원. 반지름이 음수이면 토토 꽁 머니가 대신 축소됩니다. 이는 점 주위에 경계 상자를 만드는 데 유용합니다. 주변 지점을 검색합니다. 정의된 모든 치수는 다음에 의해 변경됩니다. 반경 r. LL 좌표는 r 및 UR 좌표만큼 감소됩니다. r만큼 증가합니다. LL 좌표가 다음보다 크게 증가하면 해당 UR 좌표(이것은 r < 0) 두 좌표 모두 평균으로 설정됩니다. n이 더 큰 경우 정의된 차원 수보다 토토 꽁 머니가 증가하면(r = 0) 0이 추가 항목의 기준으로 사용됩니다. 좌표.

F.8.4. 기본값

나는 이 결합을 믿습니다:

select Cube_union('(0,5,2),(2,3,1)', '0');
토토 꽁 머니_유니온
------
(0, 0, 0),(2, 5, 2)
(1행)

상식과 모순되지 않으며, 교차로

select Cube_inter('(0,-1),(1,1)', '(-2),(2)');
토토 꽁 머니_인터
-------------
(0, 0),(1, 0)
(1행)

다른 차원의 토토 꽁 머니에 대한 모든 이진 연산에서 나는 저차원 차원이 데카르트 투영이라고 가정합니다. 즉, 즉, 문자열에서 생략된 좌표 대신 0이 있는 경우 표현. 위의 예는 다음과 같습니다.

cube_union('(0,5,2),(2,3,1)','(0,0,0),(0,0,0)');
Cube_inter('(0,-1),(1,1)','(-2,0),(2,0)');

다음 포함 조건자는 포인트 구문을 사용하지만 실제로 두 번째 인수는 내부적으로 상자로 표시됩니다. 이 구문을 사용하면 별도의 포인트 유형을 정의할 필요가 없습니다. (box,point) 술어에 대한 함수입니다.

select Cube_contains('(0,0),(1,1)', '0.5,0.5');
토토 꽁 머니_포함
--------------
티
(1행)

F.8.5. 참고

사용 예는 회귀 테스트를 참조하세요.sql/cube.sql.

사람들이 일을 깨뜨리는 것을 더 어렵게 만들기 위해서는 한계가 있습니다 토토 꽁 머니의 차원 수는 100입니다. 이것은에서 설정됩니다.cubedata.h필요한 것이 있으면 더 크다.

F.8.6. 크레딧

원저자: Gene Selkov, Jr., Argonne National 수학 및 컴퓨터 공학부 연구실.

주로 Joe Hellerstein 교수에게 감사드립니다. (http://db.cs.berkeley.edu/jmh/)의 요점을 설명하기 위한 것입니다. GiST의 (http://gist.cs.berkeley.edu/), 그리고 그의 전직 학생, 앤디 동 (http://best.me.berkeley.edu/~adong/), 그를 위해 Illustra를 위해 작성된 예http://best.berkeley.edu/~adong/rtree/index.html. 나는 또한 현재와 과거의 모든 Postgres 개발자에게도 감사드립니다. 나 자신만의 세계를 창조하고 그 안에서 방해받지 않고 살아갈 수 있게 해줍니다. 그리고 Argonne Lab에 감사의 말씀을 전하고 싶습니다. 미국 에너지부는 수년간 충실한 지원을 해왔습니다. 내 데이터베이스 조사.

이 패키지에 대한 사소한 업데이트는 Bruno Wolff III에 의해 이루어졌습니다.에 2002년 8월/9월. 여기에는 정밀도 변경이 포함됩니다. 단정밀도에서 배정밀도로 변경하고 새로운 기능을 추가합니다. 기능.

Joshua Reich가 추가 업데이트를 했습니다2006년 7월. 여기에는 다음이 포함됩니다.토토 꽁 머니(float8[], float8[])그리고 대신 V1 호출 프로토콜을 사용하도록 코드를 정리합니다. 더 이상 사용되지 않는 V0 프로토콜입니다.