이 장은 핵심 사이의 인터페이스를 설명합니다postgresql시스템 및테이블 액세스 무지개 토토8166_8379
각 테이블 액세스 무지개 토토은의 행으로 설명됩니다.PG_AM
시스템 카탈로그. 그만큼PG_AM
입력 이름과 A를 지정합니다핸들러 기능테이블 액세스 무지개 토토의 경우. 이 항목은를 사용하여 생성 및 삭제할 수 있습니다.PostgreSQL : 문서andPostgreSQL : 문서SQL 명령.
테이블 액세스 무지개 토토 핸들러 함수는 유형의 단일 인수를 수락하도록 선언해야합니다내부
그리고 의사 유형을 반환하려면table_am_handler
. 인수는 단순히 핸들러 기능이 SQL 명령에서 직접 호출되는 것을 방지하는 데 도움이되는 더미 값입니다.
확장자 SQL 스크립트 파일이 테이블 액세스 메소드 핸들러를 생성 할 수있는 무지개 토토 :
함수 생성 또는 교체 my_tableam_handler (내부) 'my_extension', 'my_tableam_handler'로 table_am_handler를 반환합니다. 언어 C 엄격한; 액세스 방법 생성 Myam 유형 테이블 핸들러 my_tableam_handler;
함수의 결과는 유형의 구조에 대한 포인터 여야합니다TableAmroutine
9853_10053정적 const
글로벌 범위의 변수.
테이블 액세스 메소드 핸들러가있는 소스 파일이 다음과 같은 무지개 토토은 다음과 같습니다.
#include "postgres.h" #include "access/tableam.h" #include "fmgr.h" PG_MODULE_MAGIC; 정적 const tableamroutine my_tableam_methods = .type = t_tableAmroutine, /* TableAmroutine의 방법을 예에서 생략 한 방법은 여기에 추가하십시오. */ ; pg_function_info_v1 (my_tableam_handler); 자료 my_tableam_handler (pg_function_args) pg_return_pointer (& my_tableam_methods);
theTableAmroutine
struct, Access Method 's라고도합니다api struct, 콜백을 사용하여 액세스 무지개 토토의 동작을 정의합니다. 이 콜백은 일반 C 기능으로의 포인터이며 SQL 레벨에서는 보이거나 호출 할 수 없습니다. 모든 콜백과 동작은에 정의됩니다.TableAmroutine
구조 (콜백 요구 사항을 정의하는 구조물 내부의 주석 포함). 대부분의 콜백에는 래퍼 함수가 있으며 테이블 액세스 무지개 토토의 구현자가 아닌 사용자의 관점에서 문서화됩니다. 자세한 내용은를 참조하십시오.src/include/access/tableam.h
파일.
액세스 무지개 토토을 구현하려면 구현자는 일반적으로 구현해야합니다am-특이 적 유형의 튜플 테이블 슬롯 (참조src/include/executor/tuptable.h
)는 액세스 무지개 토토 외부의 코드가 AM의 튜플에 대한 참조를 고정하고 튜플의 열에 액세스 할 수 있도록 허용합니다.
현재 AM이 실제로 데이터를 저장하는 방식은 상당히 제한되지 않습니다. 예를 들어 Postgres의 공유 버퍼 캐시를 사용하는 것이 가능하지만 필요하지는 않습니다. 사용되는 경우 사용하는 것이 합리적 일 것입니다postgresql의 표준 페이지 레이아웃에 설명 된대로PostgreSQL : 문서 : 18 : 66.6. 데이터베이스 토토 레이아웃.
테이블 액세스 무지개 토토 API의 상당히 큰 제약 조건 API는 현재 AM이 수정 및/또는 인덱스를 지원하려면 각 튜플이 튜플 식별자 (를 가질 필요가 있다는 것입니다.tid) 블록 번호와 항목 번호로 구성된 (참조PostgreSQL : 문서 : 18 : 66.6. 데이터베이스 토토 레이아웃). 의 하위 부분이 엄격히 필요하지 않습니다.tids예를 들어와 같은 의미를 갖습니다.힙
, 그러나 비트 맵 스캔 지원이 필요한 경우 (선택 사항) 블록 번호는 로컬을 제공해야합니다.
충돌 안전의 경우 AM은 Postgres '를 사용할 수 있습니다.Wal또는 사용자 정의 구현. 만약에Wal선택됩니다.제네릭 월 레코드사용 가능 또는 APostgreSQL : 문서 : 18 : 64.2구현 될 수 있습니다.
단일 트랜잭션 내에서 다른 테이블 액세스 무지개 토토에 액세스 할 수있는 방식으로 트랜잭션 지원을 구현하려면 기계와 밀접하게 통합해야 할 것입니다.src/backend/access/transam/xlog.c
.
새로운 개발자테이블 액세스 무지개 토토
기존을 참조 할 수 있습니다힙
src/backend/access/heap/heapam_handler.c
구현에 대한 자세한 내용.