| 롤 토토 : 문서 : 9.5 : 롤 토토 | |||
|---|---|---|---|
| 토토 캔 PostgreSQL : 문서 : 9.5 : Citext | PostgreSQL : 문서 : 9.5 : 추가 제공 윈 토토 | 부록 F. 추가 제공 모듈 | PostgreSQL : 문서 : 9.5 : 롤 토토 |
이 모듈은 데이터 유형을 구현합니다.사설 토토다차원 사설 토토를 표현하기 위한 것입니다.
표 F-3에 대한 유효한 외부 표현을 보여줍니다.사설 토토유형.x, y등은 부동 소수점 숫자를 나타냅니다.
표 F-3. 사설 토토 외부 표현
| x | 1차원 점(또는 길이가 0인 1차원 간격) |
| (x) | 위와 동일 |
| x1,x2,...,xn | n차원 공간의 점, 내부적으로 부피가 0인 사설 토토로 표현됨 |
| (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 연산자 클래스에서 지원하는 연산자는 다음과 같습니다.표 F-4.
표 F-4. Cube GiST 운영자
| 운영자 | 설명 |
|---|---|
| a = b | 사설 토토 a와 b는 동일합니다. |
| a && b | 사설 토토 a와 b가 겹칩니다. |
| a @ b | 사설 토토 a는 사설 토토 b를 포함합니다. |
| a <@ b | 사설 토토 a는 사설 토토 b에 포함되어 있습니다. |
(PostgreSQL 8.2 이전에는 격리 연산자@그리고<@각각 호출되었습니다@그리고~. 이러한 이름은 계속 사용할 수 있지만 더 이상 사용되지 않으며 결국 사용 중지됩니다. 이전 이름은 이전에 핵심 기하학적 데이터 유형이 뒤따랐던 규칙과 반대입니다!)
표준 B-트리 연산자도 제공됩니다. 예를 들면
이 연산자는 정렬 외에는 실용적인 목적으로는 별로 의미가 없습니다. 이들 연산자는 먼저 (a)를 (c)와 비교하고, 둘이 같으면 (b)를 (d)와 비교합니다. 그러면 대부분의 경우 합리적으로 좋은 정렬이 이루어지며, 이는 이 유형에 ORDER BY를 사용하려는 경우 유용합니다.표 F-5사용 가능한 기능을 보여줍니다.
표 F-5. 사설 토토 함수
| 사설 토토(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)은 int를 반환합니다. | 사설 토토의 차원 수를 반환합니다. |
| cube_ll_coord(cube, int)는 double을 반환합니다. | 사설 토토의 왼쪽 하단 모서리에 대한 n번째 좌표 값을 반환합니다. |
| cube_ur_coord(cube, int)는 double을 반환합니다. | 사설 토토의 오른쪽 상단 모서리에 대한 n번째 좌표 값을 반환합니다. |
| cube_is_point(cube)는 bool을 반환합니다. | 사설 토토가 점인 경우, 즉 정의하는 두 모서리가 동일한 경우 참을 반환합니다. |
| cube_distance(사설 토토, 사설 토토)는 double을 반환합니다. | 두 사설 토토 사이의 거리를 반환합니다. 두 사설 토토가 모두 점인 경우 이는 일반적인 거리 함수입니다. |
| cube_subset(cube, int[])는 사설 토토를 반환합니다. | 배열의 차원 인덱스 목록을 사용하여 기존 사설 토토에서 새 사설 토토를 만듭니다. 단일 차원의 LL 및 UR 좌표를 모두 찾는 데 사용할 수 있습니다(예:cube_subset(사설 토토('(1,3,5),(6,7,8)'), ARRAY[2]) = '(3),(7)'. 또는 차원을 삭제하거나 원하는 대로 순서를 변경하는 데 사용할 수 있습니다. 예:cube_subset(사설 토토('(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, 아르곤 국립 연구소 수학과 컴퓨터 공학부.
저는 주로 Joe Hellerstein 교수에게 감사드립니다. (https://dsf.berkeley.edu/jmh/) GiST의 요점을 설명하기 위해 (http://gist.cs.berkeley.edu/), Illustra에 예시를 제공한 그의 전 학생인 Andy Dong에게도 감사드립니다. 또한 나만의 세계를 만들고 그 안에서 방해받지 않고 살아갈 수 있도록 도와준 현재와 과거의 모든 Postgres 개발자들에게도 감사드립니다. 그리고 수년 동안 내 데이터베이스 연구를 충실하게 지원해 준 Argonne Lab과 미국 에너지부에 감사의 말씀을 전하고 싶습니다.
이 패키지에 대한 사소한 업데이트는 Bruno Wolff III에 의해 이루어졌습니다.<bruno@wolff.to2002년 8월/9월. 여기에는 정밀도를 단정밀도에서 배정밀도로 변경하고 몇 가지 새로운 기능을 추가하는 것이 포함됩니다.
Joshua Reich가 추가 업데이트를 수행했습니다.<josh@root.net2006년 7월. 여기에는 다음이 포함됩니다.사설 토토(float8[], float8[])그리고 더 이상 사용되지 않는 V0 프로토콜 대신 V1 호출 프로토콜을 사용하도록 코드를 정리합니다.