앞에서 언급했듯이 두 가지 종류의 스포츠 토토 사이트이 있습니다.Postgres: 기본 스포츠 토토 사이트 (a 프로그래밍 언어) 및 복합 스포츠 토토 사이트 (인스턴스). 예제 이 섹션에서 인터페이스 지수까지 찾을 수 있습니다.complex.sqlandcomplex.c. 복합 예제가funcs.sql.
사용자 정의 유형에는 항상 입력 및 출력 기능이 있어야합니다. 이러한 기능은 유형이 문자열에 어떻게 나타나는지 결정합니다 ( 사용자가 입력하고 사용자에게 출력) 및 유형의 방법 메모리로 구성되었습니다. 입력 함수는 널 지정됩니다 문자열은 입력으로서의 문자열과 내부를 반환합니다 (메모리) 유형의 표현. 출력 기능은 내부를 취합니다 유형의 표현 및 널리시 된 문자를 반환합니다. 끈. 우리가 나타내는 복잡한 유형을 정의하고 싶다고 가정합니다. 복소수. 당연히, 우리는 단지를 대표하기로 선택합니다 다음과 같은 메모리C구조 :
typedef struct complex 더블 X; 이중 Y; 복잡한;그리고 외부 문자열로 양식 (x, y)의 문자열 (x, y) 문자열 대표. 이러한 기능은 일반적으로 쓰기가 어렵지 않습니다. 특히 출력 기능. 그러나 여러 가지가 있습니다 기억해야 할 사항 :
외부 (문자열) 표현을 정의 할 때, 결국 완전하고 강력한 글을 써야한다는 것을 기억하십시오. 입력 기능으로 해당 표현을위한 파서!
복잡한 * complex_in (char *str) 더블 X, y; 복잡한 *결과; if (sscanf (str, "( %lf, %lf)", & x, & y)! = 2) elog (warn, "complex_in : 구문 분석 오류 널 리턴; 결과 = (복합 *) palloc (sizeof (complex)); 결과- x = x; 결과- y = y; 반환 (결과);출력 함수는 단순히 다음과 같습니다.
char * complex_out (complex *complex) char *결과; if (complex == null) 반환 (null); 결과 = (char *) palloc (60); sprintf (결과, "(%g,%g)", 복합체- x, 복합- y); 반환 (결과);
입력 및 출력 함수를 만들어야합니다. 서로의 역전. 그렇지 않다면, 당신은 심각하게 될 것입니다 데이터를 파일에 덤프해야 할 때 문제가 발생한 다음 다시 읽으십시오 (다른 사람의 다른 사람의 데이터베이스에 컴퓨터). 이것은 특히 일반적인 문제입니다 부동 소수점 숫자가 관련되어 있습니다.
정의하려면복잡한타이핑, 우리는 필요합니다 두 개의 사용자 정의 함수를 생성하려면 complex_in 및 complex_out 스포츠 토토 사이트을 만들기 전에 :
CREATENT COMPLET_IN (OPAQUE) 복잡한 반환 'pgroot/튜토리얼/obj/complex.so'로 언어 'c'; 함수 만들기 complex_out (opaque) 불투명 한 반환 'pgroot/튜토리얼/obj/complex.so'로 언어 'c'; 유형 complex 생성 ( 내부 길이 = 16, 입력 = complex_in, 출력 = complex_out );
앞에서 논의한대로Postgres기본 유형의 배열을 완전히 지원합니다. 또한,Postgres사용자 정의 유형의 배열을 지원합니다 또한. 유형을 정의 할 때Postgres자동으로 지원을 제공합니다 해당 유형의 배열. 역사적 이유로 배열 유형은 다음과 같습니다 밑줄 문자가있는 사용자 정의 유형과 동일한 이름 _ 선불. 복합 유형은 정의 된 기능이 필요하지 않습니다 시스템은 이미 자신의 모습을 이해하기 때문에 내부에.
이 시점에 대해 논의 된 스포츠 토토 사이트은 모두 "작은"객체입니다. 즉, 크기가 8KB보다 작습니다.
문서 검색 시스템 또는 비트 맵 저장을 위해서는 사용Postgres큰 물체 인터페이스.참고 :1024 longwords == 8192 바이트. 사실, 스포츠 토토 사이트 이므로 8192 바이트보다 상당히 작아야합니다.Postgres튜플 및 페이지 오버 헤드 이 8KB 제한에도 적합해야합니다. 실제 가치 적합은 기계 아키텍처에 따라 다릅니다.