이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 토토 사이트지를 보고 싶을 수도 있습니다.현재버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

토토 사이트페이스

시설포스트그레백엔드의 대형 개체에 대한 액세스를 제공합니다. 사용자 정의 함수 또는 애플리케이션의 일부인 프런트 엔드 토토 사이트페이스를 사용하는 방법은 아래에 설명되어 있습니다. 다음 사항에 익숙한 사용자의 경우포스트그레스 4.2, 포스트그레SQL새로운 기능 세트가 있습니다 보다 일관된 토토 사이트페이스를 제공합니다.

참고:모든 대형 개체 조작반드시SQL 트랜잭션 내에서 발생합니다. 이 요구 사항은 Postgres v6.5부터 엄격하게 적용됩니다. 이전 버전에서는 암묵적인 요구 사항이었기 때문에 무시하면 잘못된 행동을 합니다.

포스트그레스대형 개체 토토 사이트페이스는 다음을 모델로 합니다.유닉스파일 시스템 토토 사이트페이스, 다음과 유사함열기(2), 읽기(2), 쓰기(2), lseek(2)등. 사용자 함수는 이러한 루틴을 호출합니다. 대형 객체에서 관심 있는 데이터만 검색합니다. 에 대한 예를 들어, Mugshot이라는 대형 개체 유형이 존재하는 경우 얼굴 사진을 찍으면 수염이라는 기능을 사용할 수 있습니다. 머그샷 데이터에 선언되었습니다. Beard는 아래쪽 1/3을 볼 수 있습니다. 사진을 찍고 나타난 수염의 색깔을 결정하십시오 거기, 있다면. 전체 대형 객체 값을 버퍼링할 필요는 없으며, 또는 수염 기능으로 검사하기도 합니다. 큰 물체는 다음과 같습니다. 동적으로 로드된 곳에서 액세스됨C라이브러리를 연결하는 함수 또는 데이터베이스 클라이언트 프로그램.포스트그레다음 세트를 제공합니다. 열기, 읽기, 쓰기, 닫기 등을 지원하는 루틴 큰 물체를 찾고 있습니다.

대형 생성 객체

루틴

Oid lo_creat(PGconn *, 정수모드)
새로운 대형 객체를 생성합니다.모드은 여러 가지를 설명하는 비트마스크입니다. 새 개체의 다른 속성. 기호 상수 여기에 나열된 내용은에 정의되어 있습니다.$PGROOT/src/backend/libpq/libpq-fs.h액세스 유형(읽기, 쓰기 또는 둘 다)은 OR을 함께 사용하여 제어됩니다. 비트INV_READ그리고INV_WRITE. 대형 객체를 아카이브해야 하는 경우 -- 즉, 이전 버전을 이동해야 하는 경우 주기적으로 특수 아카이브 관계에 연결합니다. 그런 다음INV_ARCHIVE비트가 설정되어야 합니다. 낮은 차수 마스크의 16비트는 대형 개체가 있어야 합니다. 버클리 이외의 사이트의 경우 다음과 같습니다. 비트는 항상 0이어야 합니다. 아래 명령은 (반전) 대형 객체:
inv_oid = lo_creat(INV_READ|INV_WRITE|INV_ARCHIVE);

가져오는 중 대형 객체

가져오려면유닉스파일을 대용량으로 객체, 호출

Oid lo_import(PGconn *, const char *파일 이름)
파일 이름다음을 지정합니다유닉스파일의 경로명 대형 개체로 가져왔습니다.

내보내는 중 대형 객체

큰 개체를 다음으로 내보내려면유닉스파일, 전화

int lo_export(PGconn *, 오이드lobjId, const char *파일 이름)
lobjId 인수는 대형 개체의 Oid를 지정합니다. 내보내기 및 파일 이름 인수는 다음을 지정합니다.유닉스파일의 경로 이름.

열기 기존 대형 객체

기존의 대형 개체를 열려면 다음을 호출하세요.

int lo_open(PGconn *conn, Oid lobjId, int 모드)
lobjId 인수는 대형 개체의 Oid를 지정합니다. 열다. 모드 비트는 객체가 다음에 대해 열릴지 여부를 제어합니다. INV_READ 읽기), 쓰기 또는 둘 다. 큰 개체를 열 수 없습니다. 생성되기 전에요.lo_open반환 나중에 사용하기 위한 대형 객체 설명자lo_read, lo_write, lo_lseek, lo_tell그리고lo_close.

데이터 쓰기 중 대형 객체

루틴

int lo_write(PGconn *conn, int fd, const char *buf, size_t len)
buf에서 대형 객체 fd로 len 바이트를 씁니다. fd 인수 이전에 반환되었음에 틀림없습니다.lo_open. 실제로 쓰여진 바이트 수는 다음과 같습니다. 돌아왔다. 오류가 발생한 경우 반환 값은 음수입니다.

데이터 읽기 대형 개체에서

루틴

int lo_read(PGconn *conn, int fd, char *buf, size_t len)
대형 객체 fd의 len 바이트를 byf로 읽습니다. fd 인수는 이전에 의해 반환되어야 합니다.lo_open. 실제로 읽은 바이트 수는 다음과 같습니다. 돌아왔다. 오류가 발생한 경우 반환 값은 음수입니다.

다음을 추구합니다 대형 객체

대형 개체의 현재 읽기 또는 쓰기 위치를 변경하려면, 전화

int lo_lseek(PGconn *conn, int fd, int offset, int whence)
이 루틴은 대형의 현재 위치 포인터를 이동합니다. fd에 의해 설명된 객체를 offset에 의해 지정된 새 위치로 이동합니다. 는 유효한 값은 SEEK_SET, SEEK_CUR 및 SEEK_END입니다.

대형 폐쇄 개체 설명자

큰 개체는 호출을 통해 닫힐 수 있습니다.

int lo_close(PGconn *conn, int fd)
여기서 fd는 다음에 의해 반환된 대형 객체 설명자입니다.lo_open. 성공하면,lo_close0을 반환합니다. 오류가 발생하면 반환 값 부정적이다.