이 모듈은 데이터 유형을 구현합니다.배트맨 토토다차원 배트맨 토토를 표현하기 위한 것입니다.
표 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 ) ].
값은 내부적으로 64비트 부동 소수점으로 저장됩니다 숫자. 이는 약 16개 이상의 숫자를 의미합니다. 유효 숫자는 잘립니다.
그배트맨 토토모듈에는 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)와 (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(배트맨 토토)이 반환됩니다. 정수 | 배트맨 토토의 차원 수를 반환합니다. | 
| cube_ll_coord(배트맨 토토, 정수) 두 배를 반환합니다 | 낮은 위치에 대한 n번째 좌표 값을 반환합니다. 배트맨 토토의 왼쪽 모서리 | 
| cube_ur_coord(배트맨 토토, 정수) 두 배를 반환합니다 | 상위의 n번째 좌표값을 반환합니다. 배트맨 토토의 오른쪽 모서리 | 
| cube_is_point(배트맨 토토)가 반환됩니다. 부울 | 배트맨 토토가 점, 즉 두 점인 경우 참을 반환합니다. 모서리 정의는 동일합니다. | 
| cube_distance(배트맨 토토, 배트맨 토토) 두 배를 반환합니다 | 두 배트맨 토토 사이의 거리를 반환합니다. 둘 다라면 배트맨 토토는 점입니다. 이것이 정상적인 거리입니다. 기능. | 
| 배트맨 토토_하위 집합(배트맨 토토, 정수[]) 배트맨 토토를 반환합니다 | 다음을 사용하여 기존 배트맨 토토에서 새 배트맨 토토를 만듭니다. 배열의 차원 인덱스 목록입니다. 다음에 사용할 수 있습니다. 단일의 LL 및 UR 좌표를 모두 찾습니다. 측정기준(예:배트맨 토토_하위 집합(배트맨 토토('(1,3,5),(6,7,8)'), ARRAY[2]) = '(3),(7)'. 아니면 떨어뜨리는 데 사용할 수도 있습니다. 크기를 조정하거나 원하는 대로 순서를 변경합니다. 예:배트맨 토토_하위 집합(배트맨 토토('(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이 다음과 같이 사용됩니다. 추가 좌표의 기준입니다. | 
나는 이 조합을 믿습니다:
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행)
  사용 예는 회귀 테스트를 참조하세요.sql/cube.sql.
사람들이 일을 깨뜨리는 것을 더 어렵게 만들기 위해 다음이 있습니다. 배트맨 토토의 차원 수는 100개로 제한됩니다. 이 설정 에서cubedata.h필요한 것이 있으면 더 크다.
원저자: Gene Selkov, Jr.<selkovjr@mcs.anl.gov,
    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 개발자들에게도 감사드립니다. 나만의 세계를 창조하고 방해받지 않고 살아갈 수 있게 해주셔서 그 안에. 그리고 아르곤에게 감사의 인사를 전하고 싶습니다. 연구소와 미국 에너지부에 수년간 내 데이터베이스 연구를 충실히 지원합니다.
이 패키지에 대한 사소한 업데이트는 Bruno Wolff III에 의해 이루어졌습니다.<bruno@wolff.to에
    2002년 8월/9월. 여기에는 정밀도 변경이 포함됩니다.
    단정밀도에서 배정밀도로 변경하고 새로운 기능을 추가합니다.
    기능.
Joshua Reich가 추가 업데이트를 했습니다.<josh@root.net7월
    2006. 여기에는 다음이 포함됩니다.배트맨 토토(float8[],
    float8[])그리고 V1 호출을 사용하기 위한 코드 정리
    더 이상 사용되지 않는 V0 프로토콜 대신 프로토콜을 사용합니다.