Postgresql 9.1.24 문서화 | ||||
---|---|---|---|---|
토토 핫 : 문서 : 9.1 : citext | up | 부록 F. 추가 제공된 모듈 | 토토 사이트 : 문서 : 9.1 : DBLINK |
이 모듈은 데이터 유형을 구현합니다롤 토토다차원 롤 토토를 나타내는 것.
표 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)].
값은 내부적으로 64 비트 플로팅 포인트로 저장됩니다 숫자. 이것은 약 16 개 이상의 숫자를 의미합니다 상당한 숫자가 잘릴 것입니다.
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) ~ (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). 추가 좌표의 기반. |
나는이 연합을 믿는다 :
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 행)
사용의 예는 회귀 테스트를 참조하십시오SQL/Cube.sql.
사람들이 물건을 깨기 어렵게 만들기 위해 롤 토토의 치수 수에서 100의 한계. 이것은 설정되었습니다 안에Cubedata.h필요한 것이 있다면 더 큰.
원래 저자 : Gene Selkov, Jr.<selkovjr@mcs.anl.gov
,
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에 의해 만들어졌습니다<bruno@wolff.to
in
2002 년 8 월/9 월. 여기에는 정확성 변경이 포함됩니다
단일 정밀에서 이중 정밀까지 및 새로운 추가
기능.
추가 업데이트는 Joshua Reich에 의해 만들어졌습니다<josh@root.net
7 월
2006. 여기에는롤 토토 (float8 [],
float8 [])v1 통화를 사용하기 위해 코드 정리
더 이상 사용되지 않은 V0 프로토콜 대신 프로토콜.