이 섹션은 코어 사이의 인터페이스를 설명합니다.포스트그레SQL확장 기능을 직접 통합할 수 있는 시스템 및 사용자 정의 롤 토토 리소스 관리자롤 토토.
확장, 특히 aPostgreSQL : 문서 : 18 : 62 장. 테이블 액세스 무지개 토토 인터페이스 정의또는PostgreSQL : 문서 : 18 : 63 장 색인 액세스 방법 범퍼카 토토 정의, 복구, 복제 및/또는를 위해 롤 토토을 사용해야 할 수도 있습니다.PostgreSQL : 문서 : 18 : 47 장. 윈 토토 디코딩.
새로운 사용자 정의 롤 토토 리소스 관리자를 생성하려면 먼저 다음을 정의하십시오.RmgrData7592_7669src/백엔드/액세스/transam/README그리고src/include/access/xlog_internal.h에서포스트그레SQL출처.
/*
* 리소스 관리자를 위한 메소드 테이블.
*
* 이 구조체는 PG_RMGR 정의와 동기화를 유지해야 합니다.
* rmgr.c.
*
* rm_identify는 xl_info를 기반으로 레코드 이름을 반환해야 합니다.
* rmid 참조). 예를 들어 XLOG_BTREE_VACUUM의 이름은 다음과 같습니다.
* "진공". 그런 다음 rm_desc를 호출하여 해당 항목에 대한 추가 세부 정보를 얻을 수 있습니다.
* 가능한 경우 기록합니다(예: 마지막 블록).
*
* rm_mask는 리소스 관리자와 마스크에 의해 수정된 페이지를 입력으로 사용합니다.
* wal_consistency_checking에 의해 플래그 지정되어서는 안 되는 비트를 출력합니다.
*
* RmgrTable[]은 RmgrId 값으로 인덱싱됩니다(rmgrlist.h 참조). rm_name이 다음과 같은 경우
* NULL, 해당 RmgrTable 항목이 유효하지 않은 것으로 간주됩니다.
*/
typedef 구조체 RmgrData
const char *rm_name;
void (*rm_redo) (XLogReaderState *record);
void (*rm_desc) (StringInfo buf, XLogReaderState *record);
const char *(*rm_identify) (uint8 정보);
무효 (*rm_startup) (무효);
무효 (*rm_cleanup) (무효);
void (*rm_mask) (char *pagedata, BlockNumber blkno);
무효 (*rm_decode) (구조 LogicalDecodingContext *ctx,
struct XLogRecordBuffer *buf);
RmgrData;
그src/test/modules/test_custom_rmgrs모듈에는 사용자 정의 롤 토토 리소스 관리자의 사용법을 보여주는 작업 예제가 포함되어 있습니다.
그런 다음 새로운 자원 관리자를 등록하십시오.
/* * 새로운 사용자 정의 롤 토토 리소스 관리자를 등록합니다. * * 리소스 관리자 ID는 모든 확장 프로그램에서 전역적으로 고유해야 합니다. 참조 * 예약하려면 https://wiki.postgresql.org/wiki/Custom롤 토토ResourceManagers로 * 다른 확장과의 충돌을 방지하기 위해 확장에 대한 고유한 RmgrId * 개발자. 개발 중에는 RM_EXPERIMENTAL_ID를 사용하여 불필요한 작업을 방지하세요. * 새로운 아이디를 예약합니다. */ extern void RegisterCustomRmgr(RmgrId rmid, const RmgrData *rmgr);
RegisterCustomRmgr확장 모듈에서 호출되어야 합니다._PG_init함수. 새로운 확장을 개발하는 동안 다음을 사용하세요.RM_EXPERIMENTAL_IDforrmid. 사용자에게 확장 프로그램을 출시할 준비가 되면 다음 위치에서 새 리소스 관리자 ID를 예약하세요.맞춤형 롤 토토 리소스 관리자페이지.
사용자 정의 리소스 관리자를 구현하는 확장 모듈을 다음 위치에 배치shared_preload_libraries다음 중에 일찍 로드되도록PostgreSQL시작.
확장 프로그램은 다음에 남아 있어야 합니다.shared_preload_libraries사용자 정의 롤 토토 레코드가 시스템에 존재할 수 있는 한. 그렇지 않으면PostgreSQL사용자 정의 롤 토토 레코드를 적용하거나 디코딩할 수 없으므로 서버가 시작되지 않을 수 있습니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.