이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : F.10. 메이저 토토 사이트-다차원 메이저 토토 사이트 데이터 유형버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

F.8. 입방체

이 모듈은 데이터 유형을 구현합니다롤 토토다차원 롤 토토를 나타내는 것.

F.8.1. 통사론

표 F-3표시 에 대한 유효한 외부 표현롤 토토타입.x, y등. 부동 소수점을 나타냅니다 숫자.

표 F-3. 롤 토토 외부 표현

x 1 차원 지점 (또는 제로 길이 1 차원 간격)
(x) 위와 동일
x1,x2,...,xn n 차원 공간의 점, 표현 내부적으로 제로 볼륨 롤 토토로
(x1,x2,...,xn) 위와 동일
(x), (y) 1에서 시작하는 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. 용법

the롤 토토모듈에는 요점이 포함되어 있습니다 에 대한 색인 연산자 클래스롤 토토값. 그만큼 GIST 연산자 클래스에서 지원하는 연산자가에 표시됩니다.표 F-4.

표 F-4. 롤 토토 GIST 연산자

운영자 설명
a = b 롤 토토 A와 B는 동일합니다.
a && b 롤 토토 A와 B 중첩.
a @ b 롤 토토 A는 롤 토토를 포함합니다.
a <@ b 롤 토토 A는 롤 토토에 포함되어 있습니다.

(Postgresql 8.2 이전, 격리 연산자@<@각각 호출@~. 이 이름은 여전히 사용 가능하지만 그렇습니다 감가 상각되고 결국 은퇴 할 것이다. 노인을 주목하십시오 이름은 이전에 컨벤션에서 반전 된 후 핵심 기하학적 데이터 유형!)

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

운영자 설명
[a, b] <[c, d] 보다 작음
[a, b] [c, d] 보다
이 연산자는 어떤 의미가 없습니다. 실제적인 목적이지만 정렬. 이 연산자들은 먼저 비교합니다 (a) ~ (c), 이들이 같으면 (b)와 (d)를 비교하십시오. 저것 대부분의 경우 합리적으로 좋은 정렬을합니다. 이 유형으로 주문을 사용하려면 유용합니다.

표 F-5쇼 사용 가능한 기능.

표 F-5. 롤 토토 기능

롤 토토 (float8) 반환 입방체 두 좌표로 1 차원 롤 토토를 만듭니다 같은.롤 토토 (1) == '(1)'
롤 토토 (float8, float8) 반환 입방체 1 차원 롤 토토를 만듭니다.롤 토토 (1,2) == '(1), (2)'
롤 토토 (float8 []) 반환 입방체 좌표를 사용하여 제로 볼륨 롤 토토를 만듭니다 배열에 의해 정의 됨.롤 토토 (배열 [1,2]) == '(1,2)'
롤 토토 (float8 [], float8 []) 롤 토토 반환 오른쪽 위와 아래쪽으로 롤 토토를 만듭니다 두 배열로 정의 된 좌표, 이는 같은 길이의.롤 토토 ( '1,2':: float [], '3,4':: float []) == '(1,2), (3,4)'
롤 토토 (롤 토토, float8) 반환 입방체 두 부분 모두에 대해 동일한 값을 가진 기존 롤 토토 새로운 좌표. 이것은 롤 토토를 만드는 데 유용합니다 계산 된 값에서 조각별로 조각.롤 토토 ( '(1)', 2) == '(1,2), (1,2)'
롤 토토 (Cube, Float8, Float8) 롤 토토 반환 기존 롤 토토. 이것은 롤 토토 조각을 만드는 데 유용합니다 계산 된 값에서 조각으로.롤 토토 ( '(1,2)', 3,4) == '(1,3), (2,4)'
Cube_dim (Cube) 반환 int 롤 토토의 치수 수를 반환합니다
Cube_ll_Coord (Cube, Int) 이중 반환 하부에 대한 N'th 좌표 값을 반환합니다 롤 토토의 왼쪽 구석
Cube_ur_Coord (Cube, Int) 이중 반환 상단에 대한 n'th 좌표 값을 반환합니다 롤 토토의 오른쪽 구석
cube_is_point (롤 토토) 반환 bool 롤 토토가 포인트 인 경우 true를 반환합니다. 코너를 정의하는 것은 동일합니다.
Cube_distance (롤 토토, 롤 토토) 이중 반환 두 롤 토토 사이의 거리를 반환합니다. 둘 다 롤 토토는 점입니다. 이것은 정상 거리입니다 기능.
Cube_Subset (롤 토토, int []) 롤 토토 반환 기존 롤 토토에서 새 롤 토토를 만듭니다. 배열의 치수 인덱스 목록. 사용될 수 있습니다 단일의 LL과 UR 좌표를 모두 찾으십시오. 치수, 예 :cube_subset (롤 토토 ( '(1,3,5), (6,7,8)), 배열 [2]) = '(3), (7)'. 또는 떨어지는 데 사용될 수 있습니다 치수 또는 원하는대로 재정렬하십시오 (예 :Cube_Subset (Cube ( '(1,3,5), (6,7,8)), 배열 [3,2,1,1]) = '(5, 3, 1, 1), (8, 7, 6, 6) '.
Cube_union (Cube, Cube) 반환 입방체 두 개의 롤 토토의 연합 제작
Cube_inter (롤 토토, 롤 토토) 반환 입방체 두 롤 토토의 교차점을 생산
Cube_enlarge (Cube C, Double R, int n) 롤 토토 반환 지정된 반경만큼 롤 토토 크기를 증가시킵니다. 적어도 n 치수에서. 반경이 음수 인 경우 대신 롤 토토가 줄어 듭니다. 이것은 생성에 유용합니다 근처를 검색하기위한 지점 주위의 경계 상자 전철기. 정의 된 모든 치수는 반경 r. ll 좌표는 R과 ur에 의해 감소된다 좌표는 R만큼 증가합니다. ll 좌표 인 경우 해당 UR보다 크게 증가했습니다 좌표 (이것은 r <0 일 때만 발생할 수 있음) 두 좌표 모두 평균으로 설정됩니다. n이라면 정의 된 치수의 수보다 더 큽니다 롤 토토가 증가하고 있습니다 (R = 0). 추가 좌표의 기반.

F.8.4. 기본값

나는이 연합을 믿는다 :

cube_union을 선택하십시오 ( '(0,5,2), (2,3,1)', '0');
Cube_union
--------------------
(0, 0, 0), (2, 5, 2)
(1 행)

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

Cube_inter ( '(0, -1), (1,1)', '(-2), (2)');
Cube_inter
-------------
(0, 0), (1, 0)
(1 행)

다르게 차원 된 롤 토토의 모든 이진 작업에서 i 저차원이 직교 계획이라고 가정하고, 나. 예를 들어, 좌표 대신 제로가 생략됩니다. 문자열 표현. 위의 예는 동일합니다 에게:

Cube_union ( '(0,5,2), (2,3,1)', '(0,0,0), (0,0,0)');
cube_inter ( '(0, -1), (1,1)', '(-2,0), (2,0)';

다음 격리 술어는 포인트 구문을 사용합니다. 실제로 두 번째 주장은 내부적으로 상자. 이 구문은 별도를 정의 할 필요가 없습니다 (박스, 포인트)의 포인트 유형 및 함수.

cube_contains ( '(0,0), (1,1)', '0.5,0.5');
cube_contains
--------------
티
(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/) 설명을위한 요지의 요지 (http : //gist.cs.berkeley.edu/), 그리고 그의 전 학생, Andy Dong (http : //best.me.berkeley.edu/~adong/), 그의 일러스트라를 위해 작성된 예제,http : //best.berkeley.edu/~adong/rtree/index.html. 나 또한 모든 Postgres 개발자, 현재 및 과거에 감사합니다. 내 자신의 세상을 만들고 방해받지 않은 살 수 있도록 그것에. 그리고 나는 아르곤에게 감사를 인정하고 싶습니다 실험실 및 미국 에너지 부에 수년간 내 데이터베이스 연구의 충실한 지원.

이 패키지에 대한 사소한 업데이트는 Bruno Wolff III에 의해 만들어졌습니다in 2002 년 8 월/9 월. 여기에는 정확성 변경이 포함됩니다 단일 정밀에서 이중 정밀까지 및 새로운 추가 기능.

추가 업데이트는 Joshua Reich에 의해 만들어졌습니다7 월 2006. 여기에는롤 토토 (float8 [], float8 [])v1 통화를 사용하기 위해 코드 정리 더 이상 사용되지 않은 V0 프로토콜 대신 프로토콜.