이 섹션은 시설에 대해 설명합니다PostgreSQL클라이언트 토토 꽁 머니 라이브러리
큰 물체에 액세스 할 수 있도록 제공하십시오. 모든 큰 대상
이러한 기능을 사용한 조작필수SQL 내에서 발생합니다
거래 블록. (이 요구 사항은 엄격하게 시행됩니다.Postgresql 6.5이전 버전에서 암시 적 요구 사항이었으며 결과적으로 발생했습니다
무시할 경우 오작동.)PostgreSQL큰 객체 토토 꽁 머니가 모델링되었습니다
이후unix파일 시스템
토토 꽁 머니, 아날로그가있는Open
,
읽기
, 쓰기
, lseek
,
등.
큰 객체 토토 꽁 머니를 사용하는 클라이언트 응용 프로그램에서libpq헤더를 포함해야합니다 파일libpq/libpq-fs.h와 링크libpq도서관.
함수
OID lo_creat (pgconn *conn, int mode);
새로운 대형을 만듭니다 물체.모드조금 마스크입니다 새 개체의 여러 가지 속성을 설명합니다. 그만큼 여기에 사용 된 상징적 상수는 헤더 파일에 정의되어 있습니다libpq/libpq-fs.h. 액세스 유형 (읽기, 쓰기 또는 둘 다) 비트inv_readandinv_write. 마스크의 16 비트 역사적으로 버클리에서이를 지정하는 데 사용되었습니다 큰 객체가 상주 해야하는 스토리지 관리자 번호. 이 비트는 항상 0이어야합니다. (액세스 유형은 그렇지 않습니다 실제로 더 이상 무엇이든해야하지만 하나 또는 둘 다 플래그 비트 오류를 피하기 위해 설정해야합니다.) 반환 값은 OID입니다. 그것은 새로운 큰 대상 또는 Invalidoid (0)에 할당되었습니다. 실패에.
예 :
inv_oid = lo_creat (conn, inv_read | inv_write);
운영 체제 파일을 큰 개체로 가져 오려면 부르다
oid lo_import (pgconn *conn, const 토토 꽁 머니ar *filename);
filename운영 체제를 지정합니다 큰 개체로 가져올 파일의 이름. 반환 값은 새로운 큰 대상에 할당 된 OID입니다. 실패에 대한 Invalidoid (0). 파일은 다음에 의해 읽습니다 서버가 아닌 클라이언트 인터페이스 라이브러리; 그래서 그것은 존재해야합니다 클라이언트 파일 시스템에서 클라이언트가 읽을 수 있습니다. 애플리케이션.
큰 개체를 운영 체제 파일로 내보내려면 부르다
int lo_export (pgconn *conn, oid lobjid, const char *filename);
thelobjid인수 대형의 OID를 지정합니다 내보내기 및 개체filename인수 파일의 운영 체제 이름을 지정합니다. 메모 파일이 클라이언트 토토 꽁 머니 라이브러리가 작성했지만 서버에 의해. 성공시 1 회 반환, -1 실패.
읽기 또는 쓰기를위한 기존의 큰 물체를 열려면, 부르다
int lo_open (pgconn *conn, oid lobjid, int mode);
thelobjid인수는 대형의 OID를 지정합니다
열리는 개체. 그만큼모드비트
reading을 위해 개체가 열리는 지 제어 (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
. 숫자
실제로 작성된 바이트가 반환됩니다. an의 경우
오류, 반환 값은 음수입니다.
함수
int lo_read (pgconn *conn, int fd, char *buf, size_t len);
읽기Len큰 객체 디스크립터의 바이트FDinbuf. 그만큼FD인수는 이전에 의해 반환되었을 것입니다lo_open
. 실제로 읽은 바이트의 수는입니다
반환. 오류가 발생한 경우 반환 값은
부정적인.
와 관련된 현재 읽기 또는 쓰기 위치를 변경하려면 큰 객체 설명자, Call
int lo_lseek (pgconn *conn, int fd, int offset, int whence);
이 함수가 움직입니다 큰 객체 디스크립터의 현재 위치 포인터 식별FD새 위치로 지정오프셋. 유효한 에 대한 값WHENCEareseek_set(개체에서 시작),seek_cur(현재 위치에서 찾으십시오) 및seek_end(객체 끝에서 찾으십시오). 그만큼 반환 값은 새로운 위치 포인터 또는 오류의 -1입니다.
큰 객체 설명자가 호출하여 닫을 수 있습니다
18591_18630
여기서FD|lo_open
. 성공에,lo_close
0을 반환합니다. 오류가 발생하면 반환
가치는 음수입니다.
끝에 열려있는 큰 객체 설명 자 거래가 자동으로 닫힙니다.
데이터베이스에서 큰 객체를 제거하려면 전화
int lo_unlink (pgconn *conn, oid lobjid);
thelobjid인수는 대형의 OID를 지정합니다 제거 할 객체. 성공하면 1을 반환하고 -1은 실패시 -1