이 섹션에서는 다음 시설에 대해 설명합니다.포스트그레SQL클라이언트 토토 핫 라이브러리
큰 개체에 대한 액세스를 제공합니다. 모든 대형 개체
이러한 기능을 사용한 조작반드시SQL 내에서 발생
거래 블록.토토 핫대형 객체 토토 핫가 모델링되었습니다.
이후에유닉스파일 시스템
인터페이스, 다음과 유사함열기,
읽기, 쓰기, lseek,
등
대형 객체 토토 핫를 사용하는 클라이언트 애플리케이션libpq헤더를 포함해야 합니다 파일libpq/libpq-fs.h그리고 다음과 연결libpq도서관.
함수
Oid lo_creat(PGconn *conn, int 모드);
새 대형 개체를 생성합니다. 반환 값은 OID입니다. 새로운 대형 개체에 할당되었습니다. 또는InvalidOid실패 시 (0).모드현재 사용되지 않으며 무시됩니다.포스트그레SQL8.1; 그러나, 이전 릴리스와의 하위 호환성을 설정하는 것이 가장 좋습니다. 그것을INV_READ, INV_WRITE또는INV_READ | INV_WRITE. (이러한 기호 상수는 헤더 파일에 정의되어 있습니다.libpq/libpq-fs.h.)
예:
inv_oid = lo_creat(conn, INV_READ|INV_WRITE);
함수
Oid lo_create(PGconn *conn, Oid lobjId);
또한 새로운 대형 개체를 생성합니다. 할당할 OID는
다음으로 지정됨lobjId; 그렇다면,
해당 OID가 이미 대규모 용도로 사용 중인 경우 오류가 발생합니다.
개체. 만일lobjIdisInvalidOid(제로) 다음lo_create사용되지 않은 OID를 할당합니다(이것은
와 같은 행동lo_creat). 는
반환 값은 새 대형 데이터베이스에 할당된 OID입니다.
객체 또는InvalidOid(제로) 켜짐
실패.
lo_create현재 새로운 내용입니다포스트그레SQL8.1; 만약 이것이
함수가 이전 서버 버전에 대해 실행되면 실패합니다.
그리고 돌아오다InvalidOid.
예:
inv_oid = lo_create(conn, Desired_oid);
운영 체제 파일을 대형 개체로 가져오려면, 전화
Oid lo_import(PGconn *conn, const char *filename);
파일 이름다음을 지정합니다. 큰 파일로 가져올 파일의 운영 체제 이름 개체. 반환 값은 할당된 OID입니다. 새로운 대형 객체 또는InvalidOid(제로) 실패시. 파일은 클라이언트 토토 핫에서 읽혀집니다. 서버가 아닌 라이브러리; 따라서 클라이언트 파일에 있어야 합니다. 시스템이며 클라이언트 애플리케이션에서 읽을 수 있습니다.
함수
Oid lo_import_with_oid(PGconn *conn, const char *filename, Oid lobjId);
또한 새로운 대형 개체를 가져옵니다. 할당할 OID는
다음으로 지정됨lobjId; 그렇다면,
해당 OID가 이미 대규모 용도로 사용 중인 경우 오류가 발생합니다.
개체. 만일lobjIdisInvalidOid(제로) 그럼lo_import_with_oid미사용 OID 할당
(이것은 다음과 같은 동작입니다.lo_import). 반환 값은 OID입니다.
새로운 대형 객체에 할당되었습니다. 또는InvalidOid실패 시 (0).
lo_import_with_oid새로운 기능
의포스트그레SQL8.4 및 용도lo_create내부적으로는 새로운 기능입니다
8.1에서; 이 함수를 8.0 이하 버전에서 실행하면
실패하고 돌아옴InvalidOid.
대형 개체를 운영 체제 파일로 내보내려면, 전화
int lo_export(PGconn *conn, Oid lobjId, const char *filename);
그lobjId인수는 다음을 지정합니다. 내보낼 대형 객체의 OID 및파일 이름인수는 작동을 지정합니다. 파일의 시스템 이름입니다. 파일은 다음에서 작성되었습니다. 서버가 아닌 클라이언트 인터페이스 라이브러리. 1을 반환합니다. 성공, 실패 시 -1.
읽거나 쓰기 위해 기존의 큰 개체를 열려면, 전화
int lo_open(PGconn *conn, Oid lobjId, int mode);
그lobjId인수는 다음을 지정합니다.
열려는 대형 개체의 OID입니다.모드비트는 개체가 열리는지 여부를 제어합니다.
읽기용(INV_READ), 쓰기
(INV_WRITE) 또는 둘 다. (이러한 상징적
상수는 헤더 파일에 정의되어 있습니다.libpq/libpq-fs.h.) 대형 객체는
생성되기 전에 열립니다.lo_open(음수가 아닌) 대형 객체를 반환합니다.
나중에 사용할 설명자lo_read, lo_write, lo_lseek, lo_tell및lo_close. 설명자는 다음에만 유효합니다.
현재 거래 기간. 실패 시 -1은
돌아왔습니다.
서버는 현재 모드를 구분하지 않습니다.INV_WRITE그리고INV_READ | INV_WRITE: 다음에서 읽을 수 있습니다.
두 경우 모두 설명자입니다. 그러나 중요한 것이 있습니다
이 모드의 차이점과INV_READ혼자: 함께INV_READ설명자에는 쓸 수 없으며,
여기에서 읽은 데이터는 큰 내용을 반영합니다.
활성 상태였던 트랜잭션 스냅샷 당시의 객체
언제lo_open실행되었으며,
이 트랜잭션이나 다른 트랜잭션에 의한 나중에 쓰기와 관계없이.
로 열린 설명자에서 읽기INV_WRITE모든 쓰기를 반영하는 데이터를 반환합니다.
다른 커밋된 트랜잭션 및 쓰기
현재 거래. 이는 다음의 동작과 유사합니다.직렬화 가능대읽어 커밋됨일반 거래 모드
SQL선택명령.
예:
inv_fd = lo_open(conn, inv_oid, INV_READ|INV_WRITE);
함수
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_tell(PGconn *conn, int fd);
오류가 있는 경우 반환 값은 음수입니다.
큰 객체를 주어진 길이로 자르려면 다음을 호출하세요.
int lo_truncate(PGcon *conn, int fd, size_t len);
대형 개체 설명자를 자릅니다.fd길이까지len.fd인수는 다음과 같아야 합니다.
이전에 반환됨lo_open.
만일len현재보다 큼
대형 객체 길이, 대형 객체는 null로 확장됩니다.
바이트('\0').
파일 오프셋은 변경되지 않습니다.
성공 시lo_truncate반환
제로. 오류가 발생하면 반환 값은 음수입니다.
lo_truncate현재 새로운 내용포스트그레SQL8.3; 만약 이것이
함수가 이전 서버 버전에 대해 실행되면 실패합니다.
음수 값을 반환합니다.
큰 개체 설명자는 호출하여 닫을 수 있습니다.
int lo_close(PGconn *conn, int fd);
어디에서fd큰 개체입니다
에 의해 반환된 설명자lo_open.
성공하면,lo_close반환
제로. 오류가 발생하면 반환 값은 음수입니다.
끝에 열려 있는 대형 개체 설명자 거래가 자동으로 종료됩니다.
데이터베이스에서 대형 개체를 제거하려면 다음을 호출하세요.
int lo_unlink(PGconn *conn, Oid lobjId);
그lobjId인수는 다음을 지정합니다. 제거할 대형 개체의 OID입니다. 성공하면 1을 반환하고, -1을 반환합니다. 실패 시.