Postgresql 9.3.25 문서 | ||||
---|---|---|---|---|
이전 | PostgreSQL : 문서 : 9.3 : 추가 제공 배트맨 토토 | 부록 F. 추가 제공된 모듈 | 다음 |
이 모듈은 데이터 유형을 구현합니다토토 꽁 머니다차원 토토 꽁 머니를 나타내는 것.
표 F-3표시를 표시합니다 에 대한 유효한 외부 표현토토 꽁 머니타입.x, y등. 부동 소수점 번호를 나타냅니다.
표 F-3. 토토 꽁 머니 외부 표현
x | 1 차원 지점 (또는 제로 길이의 1 차원 간격) |
(x) | 위와 동일 |
x1,x2,...,xn | 내 차원 공간의 점은 내부적으로 표현됩니다 제로 볼륨 토토 꽁 머니 |
(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 인덱스가 포함되어 있습니다 운영자 클래스토토 꽁 머니값. 연산자 GIST 연산자 클래스에서 지원하는 것은에 표시됩니다.표 F-4.
표 F-4. 토토 꽁 머니 GIST 연산자
운영자 | 설명 |
---|---|
a = b | 토토 꽁 머니 A와 B는 동일합니다. |
a && b | 토토 꽁 머니 A와 B 중첩. |
a @ b | 토토 꽁 머니 a에는 토토 꽁 머니가 포함되어 있습니다. |
a <@ b | 토토 꽁 머니 A는 토토 꽁 머니에 포함되어 있습니다. |
(Postgresql 8.2 이전, 격리 연산자@and<@각각 호출@및~. 이 이름은 여전히 사용 가능하지만 그렇습니다 감가 상각되고 결국 은퇴 할 것이다. 노인을 주목하십시오 이름은 이전에 컨벤션에서 반전 된 후 핵심 기하학적 데이터 유형!)
표준 B- 트리 연산자도 제공됩니다 (예 :
이 연산자들은 실용적으로 많은 의미가 없습니다. 목적이지만 정렬. 이 연산자들은 먼저 (a)와 (c)를 비교하고 이것들이 같으면 (b)와 (d)를 비교하십시오. 그 결과 합리적으로 발생합니다 대부분의 경우 양호한 분류, 사용하려는 경우 유용합니다. 이 유형으로 주문하십시오.표 F-5사용 가능한 기능.
표 F-5. 토토 꽁 머니 기능
Cube (float8) 토토 꽁 머니를 반환 | 두 좌표로 1 차원 토토 꽁 머니를 만듭니다.토토 꽁 머니 (1) == '(1)' |
Cube (float8, float8) 토토 꽁 머니를 반환합니다 | 1 차원 토토 꽁 머니를 만듭니다.토토 꽁 머니 (1,2) == '(1), (2)' |
토토 꽁 머니 (float8 []) 토토 꽁 머니를 반환합니다 | 정렬.토토 꽁 머니 (배열 [1,2]) == '(1,2)' |
토토 꽁 머니 (float8 [], float8 []) 리턴 입방체 | 오른쪽 상단 및 하단 좌표가있는 토토 꽁 머니를 만듭니다. 두 배열로 정의되며 길이가 같은 길이 여야합니다.토토 꽁 머니 ( '1,2':: float [], '3,4':: float []) == '(1,2), (3,4)' |
Cube (Cube, Float8)는 토토 꽁 머니를 반환합니다 | 기존 토토 꽁 머니에 치수를 추가하여 새 토토 꽁 머니를 만듭니다. 새 좌표의 두 부분에 대해 동일한 값을 갖습니다. 이것은 계산 된 값에서 토토 꽁 머니를 조각으로 구축하는 데 유용합니다.토토 꽁 머니 ( '(1)', 2) == '(1,2), (1,2)' |
Cube (Cube, Float8, Float8) 반환 입방체 | 기존 토토 꽁 머니에 치수를 추가하여 새 토토 꽁 머니를 만듭니다. 이것은 계산에서 토토 꽁 머니 토토 꽁 머니를 조각하는 데 유용합니다. 값.토토 꽁 머니 ( '(1,2)', 3,4) == '(1,3), (2,4)' |
Cube_dim (Cube) RECINGS int | 토토 꽁 머니의 치수 수를 반환합니다 |
Cube_ll_Coord (Cube, int) 반환 더블 | 토토 꽁 머니 |
Cube_ur_Coord (Cube, int) 반환 더블 | 오른쪽 상단 코너의 N'th 좌표 값을 반환합니다. 토토 꽁 머니 |
Cube_is_point (Cube) 반환 bool | 토토 꽁 머니가 포인트 인 경우, 즉 두 정의 코너는 동일합니다. |
Cube_distance (토토 꽁 머니, 토토 꽁 머니) 반환 더블 | 두 토토 꽁 머니 사이의 거리를 반환합니다. 두 토토 꽁 머니가 있으면 포인트, 이것은 정상 거리 함수입니다. |
cube_subset (토토 꽁 머니, int []) 리턴 입방체 | 기존 토토 꽁 머니에서 새 토토 꽁 머니를 만듭니다. 배열의 치수 인덱스. LL을 모두 찾는 데 사용할 수 있습니다 그리고 단일 차원의 좌표 (예 :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) 그런 다음 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 저차원이 직교 계획이라고 가정합니다. 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 개발자에게 감사합니다. 내 자신의 세상을 만들고 그 안에 세상을 방해받지 못하게 할 수 있습니다. 그리고 Argonne Lab에 대한 감사를 인정하고 싶습니다. 수년간의 충실한 지원을위한 미국 에너지 부서 내 데이터베이스 연구.
이 패키지에 대한 사소한 업데이트는 Bruno Wolff III에 의해 만들어졌습니다<bruno@wolff.to
21081_21222
추가 업데이트는 Joshua Reich<josh@root.net
2006 년 7 월.
여기에는 포함토토 꽁 머니 (float8 [], float8 [])및
대신 V1 Call 프로토콜을 사용하기 위해 코드 정리
감가 상각 된 V0 프로토콜.