이 섹션에서는 다음 시설에 대해 설명합니다.포스트그레SQL클라이언트 스포츠 토토 사이트 라이브러리
큰 개체에 대한 액세스를 제공합니다. 모든 대형 개체
이러한 기능을 사용한 조작반드시SQL 내에서 발생
거래 블록. (이 요구 사항은 현재 엄격하게 적용됩니다.포스트그레SQL 6.5, 하지만
이전 버전에서는 암묵적인 요구 사항이었으며, 그 결과
무시하면 잘못된 행동입니다.) The포스트그레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가 일부 대형 개체에 이미 사용 중인 경우. 만일lobjIdInvalidOid(0)입니다.
그럼lo_create미사용 할당
OID(이것은 다음과 동일한 동작입니다.lo_creat). 반환 값은 OID입니다.
새 대형 개체에 할당되었거나 InvalidOid(0)가
실패.
lo_create현재 최신임PostgreSQL8.1; 만약 이것이
함수가 이전 서버 버전에 대해 실행되면 실패합니다.
InvalidOid를 반환합니다.
예:
inv_oid = lo_create(conn, Desired_oid);
운영 체제 파일을 대형 개체로 가져오려면, 전화
Oid lo_import(PGconn *conn, const char *filename);
파일 이름운영 체제를 지정합니다. 대형 개체로 가져올 파일의 이름입니다. 반환 값은 새 대형 개체에 할당된 OID입니다. 실패 시 InvalidOid(0)입니다. 파일은 다음에서 읽혀집니다. 서버가 아닌 클라이언트 인터페이스 라이브러리; 그러니 반드시 존재해야 해 클라이언트 파일 시스템에 있고 클라이언트가 읽을 수 있음 신청합니다.
대형 개체를 운영 체제 파일로 내보내려면, 전화
int lo_export(PGconn *conn, Oid lobjId, const char *filename);
그lobjId인수는 대형 OID를 지정합니다. 내보낼 스포츠 토토 사이트 및파일 이름인수는 파일의 운영 체제 이름을 지정합니다. 참고 파일이 클라이언트 스포츠 토토 사이트 라이브러리에 의해 작성되는 것이 아니라 서버에 의해. 성공하면 1을, 실패하면 -1을 반환합니다.
읽거나 쓰기 위해 기존의 큰 개체를 열려면, 전화
int lo_open(PGconn *conn, Oid lobjId, int 모드);
그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_close(PGconn *conn, int fd);
어디에서fd는 다음에서 반환된 대형 개체 설명자입니다.lo_open. 성공하면,lo_close0을 반환합니다. 오류시 반품
값이 음수입니다.
끝에 열려 있는 대형 개체 설명자 거래가 자동으로 종료됩니다.
데이터베이스에서 대형 개체를 제거하려면 다음을 호출하세요.
int lo_unlink(PGconn *conn, Oid lobjId);
그lobjId인수는 대형 OID를 지정합니다. 제거할 개체입니다. 성공하면 1을, 실패하면 -1을 반환합니다.