이 모듈은 데이터 유형을 구현합니다메이저 토토 사이트다차원 메이저 토토 사이트를 나타내는 것.
다음은에 대한 유효한 외부 표현입니다.메이저 토토 사이트타입.x, y등 부동 소수점 번호 표시 :
표 F-1. 메이저 토토 사이트 외부 표현
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 Opclass에서 지원하는 운영자는 다음과 같습니다.
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-2. 메이저 토토 사이트 기능
메이저 토토 사이트 (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)' |
Cube (Cube, 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 (메이저 토토 사이트 ( '(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 : //garcia.me.berkeley.edu/~adong/rtree. 그래요 또한 현재 및 과거의 모든 Postgres 개발자에게 감사합니다. 내 자신의 세상을 만들고 방해받지 않은 살 수 있습니다. 그것. Argonne Lab에 대한 감사를 인정하고 싶습니다. 그리고 수년간의 충실한 미국 에너지 부에 내 데이터베이스 연구 지원.
이 패키지에 대한 사소한 업데이트는 Bruno Wolff III에 의해 만들어졌습니다<bruno@wolff.to
in
2002 년 8 월/9 월. 여기에는 정확성 변경이 포함됩니다
단일 정밀에서 이중 정밀까지 및 새로운 추가
기능.
추가 업데이트는 Joshua Reich에 의해 만들어졌습니다<josh@root.net
7 월
2006. 여기에는메이저 토토 사이트 (float8 [],
float8 [])v1 통화를 사용하기 위해 코드 정리
더 이상 사용되지 않은 V0 프로토콜 대신 프로토콜.