이 섹션에서는 다음 시설에 대해 설명합니다.포스트그레SQL클라이언트 토토 꽁 머니 라이브러리
큰 개체에 대한 액세스를 제공합니다. 모든 대형 개체
이러한 기능을 사용한 조작반드시SQL 내에서 발생
거래 블록. (이 요구 사항은 현재 엄격하게 적용됩니다.포스트그레SQL 6.5, 하지만
이전 버전에서는 암묵적인 요구 사항이었으며, 그 결과
무시하면 잘못된 행동입니다.) The포스트그레SQL대형 객체 토토 꽁 머니가 모델링되었습니다.
이후에유닉스파일 시스템
인터페이스, 다음과 유사함열기,
읽기, 쓰기, lseek,
등
대형 객체 토토 꽁 머니를 사용하는 클라이언트 애플리케이션libpq헤더를 포함해야 합니다 파일libpq/libpq-fs.h그리고 다음과 연결libpq도서관.
함수
Oid lo_creat(PGconn *conn, int 모드);
새로운 대형을 생성합니다 개체.모드비트 마스크입니다 새 객체의 여러 가지 다른 속성을 설명합니다. 는 여기에 사용된 기호 상수는 헤더 파일에 정의되어 있습니다.libpq/libpq-fs.h. 액세스 유형 (읽기, 쓰기 또는 둘 다)은 or'ing으로 제어됩니다. 비트INV_READ그리고INV_WRITE. 마스크의 하위 16비트 역사적으로 버클리에서는 다음을 지정하는 데 사용되었습니다. 대형 객체가 상주해야 하는 스토리지 관리자 번호입니다. 이제 이 비트는 항상 0이어야 합니다. (액세스 유형은 실제로 더 이상 아무것도 수행하지 않지만 플래그 비트 중 하나 또는 둘 다 오류가 발생하지 않도록 설정해야 합니다.) 반환 값은 OID입니다. 새로운 대형 객체에 할당된 것 또는 InvalidOid(영) 실패 시.
예:
inv_oid = lo_creat(conn, INV_READ|INV_WRITE);
운영 체제 파일을 대형 개체로 가져오려면, 전화
Oid lo_import(PGconn *conn, const 토토 꽁 머니ar *filename);
파일 이름운영 체제를 지정합니다. 대형 개체로 가져올 파일의 이름입니다. 반환 값은 새 대형 개체에 할당된 OID입니다. 실패 시 InvalidOid(0)입니다. 파일은 다음에서 읽혀집니다. 서버가 아닌 클라이언트 인터페이스 라이브러리; 그러니 반드시 존재해야 해 클라이언트 파일 시스템에 있고 클라이언트가 읽을 수 있음 신청합니다.
대형 개체를 운영 체제 파일로 내보내려면, 전화
int lo_export(PGconn *conn, Oid lobjId, const 토토 꽁 머니ar *filename);
그lobjId인수는 대형 OID를 지정합니다. 내보낼 객체 및파일 이름인수는 파일의 운영 체제 이름을 지정합니다. 참고 파일이 클라이언트 토토 꽁 머니 라이브러리에 의해 작성되는 것이 아니라 서버에 의해. 성공하면 1을, 실패하면 -1을 반환합니다.
읽거나 쓰기 위해 기존의 큰 개체를 열려면, 전화
int lo_open(PGconn *conn, Oid lobjId, int mode);
그lobjId인수는 대형 OID를 지정합니다.
열려는 개체입니다.모드비트
읽기 위해 객체를 열지 여부를 제어합니다(INV_READ), 쓰기(INV_WRITE) 또는 둘 다. 큰 물체는 있을 수 없다.
생성되기 전에 열립니다.lo_open(음수가 아닌) 대형 객체를 반환합니다.
나중에 사용할 설명자lo_read, lo_write, lo_lseek, lo_tell및lo_close. 설명자는 다음에만 유효합니다.
현재 거래 기간. 실패 시 -1은
돌아왔습니다.
함수
int lo_write(PGconn *conn, int fd, const char *buf, size_t len);
쓴다len바이트buf대형 개체 설명자에fd.fd인수가 반환되었음에 틀림없습니다
이전에 의해lo_open. 번호
실제로 쓰여진 바이트 수가 반환됩니다. 다음과 같은 경우
오류, 반환 값은 음수입니다.
함수
int lo_read(PGconn *conn, int fd, char *buf, size_t len);
읽기len대형 객체 설명자의 바이트fd속으로buf.fd인수는 이전에 의해 반환되었음에 틀림없습니다lo_open. 실제로 읽은 바이트 수는 다음과 같습니다.
돌아왔다. 오류가 발생한 경우 반환 값은 다음과 같습니다.
부정.
현재 읽기 또는 쓰기 위치를 변경하려면 대형 객체 설명자, 호출
int lo_lseek(PGconn *conn, int fd, int offset, int whence);
이 기능은 이동합니다 대형 객체 설명자의 현재 위치 포인터 다음으로 식별됨fd새 위치로 에 의해 지정됨오프셋. 유효한 에 대한 값어디서아르SEEK_SET(개체 시작부터 탐색),SEEK_CUR(현재 위치에서 탐색) 및SEEK_END(개체 끝에서 탐색). 는 반환 값은 새 위치 포인터이거나 오류 시 -1입니다.
큰 개체 설명자는 호출을 통해 닫힐 수 있습니다.
int lo_close(PGconn *conn, int fd);
어디에서fd은(는) 다음에 의해 반환된 대형 개체 설명자입니다.lo_open. 성공하면,lo_close0을 반환합니다. 오류시 반품
값이 음수입니다.
끝에 열려 있는 대형 개체 설명자 거래가 자동으로 종료됩니다.
데이터베이스에서 대형 개체를 제거하려면 다음을 호출하세요.
int lo_unlink(PGconn *conn, Oid lobjId);
그lobjId인수는 대형 OID를 지정합니다. 제거할 개체입니다. 성공하면 1을, 실패하면 -1을 반환합니다.