이 모듈은 데이터 유형을 구현합니다.메이저 토토 사이트다차원 메이저 토토 사이트를 표현하기 위한 것입니다.
다음은 유효한 외부 표현입니다.메이저 토토 사이트유형.x, y등 부동 소수점 숫자를 나타냅니다:
표 F-1. 메이저 토토 사이트 외부 표현
| 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 opclass에서 지원하는 연산자는 다음과 같습니다.
a = b 다음과 같음
메이저 토토 사이트 a와 b는 동일합니다.
a && b 중복
메이저 토토 사이트 a와 b가 겹칩니다.
a @ b 포함
메이저 토토 사이트 a는 메이저 토토 사이트 b를 포함합니다.
a <@ b 포함됨
메이저 토토 사이트 a는 메이저 토토 사이트 b에 포함되어 있습니다.
(PostgreSQL 8.2 이전에는 포함 연산자 @ 및 <@는 각각 @, ~라고 불렀습니다. 이 이름들은 아직도 사용할 수 있지만 더 이상 사용되지 않으며 결국 폐기될 예정입니다. 이전 이름은 규칙과 반대입니다. 이전에는 핵심 기하학적 데이터 유형이 뒤따랐습니다!)
표준 B-트리 연산자도 제공됩니다. 예
[a, b] < [c, d] 미만 [a, b] [c, d] 보다 큼
이 연산자는 실제적인 경우에는 별로 의미가 없습니다. 목적은 있지만 정렬. 이들 연산자는 먼저 (a)를 (c)와 비교합니다. 그리고 이것이 같다면 (b)와 (d)를 비교하세요. 그 결과 대부분의 경우 합리적으로 좋은 정렬입니다. 이는 다음과 같은 경우에 유용합니다. 이 유형에 ORDER BY를 사용하고 싶습니다.
다음 기능을 사용할 수 있습니다:
표 F-2. 메이저 토토 사이트 함수
| 메이저 토토 사이트(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://garcia.me.berkeley.edu/~adong/rtree. 나는 또한 현재와 과거의 모든 Postgres 개발자에게도 감사드립니다. 나만의 세계를 창조하고 방해받지 않고 살아갈 수 있도록 그것. 그리고 Argonne Lab에 감사의 말씀을 전하고 싶습니다. 그리고 수년 동안 충실한 미국 에너지부에 내 데이터베이스 연구를 지원합니다.
이 패키지에 대한 사소한 업데이트는 Bruno Wolff III에 의해 이루어졌습니다.<bruno@wolff.to에
2002년 8월/9월. 여기에는 정밀도 변경이 포함됩니다.
단정밀도에서 배정밀도로 변경하고 새로운 기능을 추가합니다.
기능.
Joshua Reich가 추가 업데이트를 했습니다.<josh@root.net7월
2006. 여기에는 다음이 포함됩니다.메이저 토토 사이트(float8[],
float8[])그리고 V1 호출을 사용하기 위한 코드 정리
더 이상 사용되지 않는 V0 프로토콜 대신 프로토콜을 사용합니다.