이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.스포츠 토토 베트맨 : 문서 : 17 : 33.3. 스포츠 토토 베트맨 인터페이스버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

31.3. 클라이언트 젠 토토페이스

이 섹션에서는 다음 시설에 대해 설명합니다.포스트그레SQL클라이언트 젠 토토페이스 라이브러리 큰 개체에 대한 액세스를 제공합니다. 모든 대형 개체 이러한 기능을 사용한 조작반드시SQL 내에서 발생 거래 블록.PostgreSQL대형 객체 젠 토토페이스가 모델링되었습니다. 이후에유닉스파일 시스템 인터페이스, 다음과 유사함열기, 읽기, 쓰기, lseek, 등

대형 객체 젠 토토페이스를 사용하는 클라이언트 애플리케이션libpq헤더를 포함해야 합니다 파일libpq/libpq-fs.h그리고 다음과 연결libpq도서관.

31.3.1. 대형 젠 토토 생성

함수

Oid lo_creat(PGconn *conn, int 모드);

새로운 대형을 생성합니다 개체. 반환 값은 할당된 OID입니다. 새로운 대형 젠 토토 또는InvalidOid(제로) 실패 시.모드미사용이며 현재 무시됨포스트그레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현재 새로운 내용PostgreSQL8.1; 만약 이것이 함수가 이전 서버 버전에 대해 실행되면 실패합니다. 그리고 돌아오다InvalidOid.

예:

inv_oid = lo_create(conn, Desired_oid);

31.3.2. 대형 개체 가져오기

운영 체제 파일을 대형 개체로 가져오려면, 전화

Oid lo_import(PGconn *conn, const char *filename);

파일 이름운영 체제를 지정합니다. 대형 개체로 가져올 파일의 이름입니다. 반환 value는 새 대형 객체에 할당된 OID입니다. 또는InvalidOid14295_14493

함수

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새로운 기능 의PostgreSQL8.4 및 용도lo_create내부적으로는 새로운 기능입니다 8.1에서; 이 함수를 8.0 이하 버전에서 실행하면 실패하고 돌아옴InvalidOid.

31.3.3. 대형 개체 내보내기

대형 개체를 운영 체제 파일로 내보내려면, 전화

int lo_export(PGconn *conn, Oid lobjId, const char *filename);

lobjId인수는 대형 OID를 지정합니다. 내보낼 젠 토토 및파일 이름인수는 파일의 운영 체제 이름을 지정합니다. 참고 파일이 클라이언트 젠 토토페이스 라이브러리에 의해 작성되는 것이 아니라 서버에 의해. 성공하면 1을, 실패하면 -1을 반환합니다.

31.3.4. 기존 대형 개체 열기

읽거나 쓰기 위해 기존의 큰 개체를 열려면, 전화

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_telllo_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);

31.3.5. 대형 객체에 데이터 쓰기

함수

int lo_write(PGconn *conn, int fd, const char *buf, size_t len);

쓴다len바이트buf대형 개체 설명자에fd.fd인수가 반환되었음에 틀림없습니다 이전에 의해lo_open. 숫자 실제로 쓰여진 바이트 수가 반환됩니다. 다음과 같은 경우 오류, 반환 값은 음수입니다.

31.3.6. 대형 객체에서 데이터 읽기

함수

int lo_read(PGconn *conn, int fd, char *buf, size_t len);

읽기len대형 개체 설명자의 바이트fd속으로buf.fd인수는 이전에 의해 반환되었음에 틀림없습니다lo_open. 실제로 읽은 바이트 수는 다음과 같습니다. 돌아왔다. 오류가 발생한 경우 반환 값은 다음과 같습니다. 부정.

31.3.7. 대형 젠 토토 탐색

현재 읽기 또는 쓰기 위치를 변경하려면 대형 객체 설명자, 호출

int lo_lseek(PGconn *conn, int fd, int offset, int whence);

이 기능은 이동합니다 대형 객체 설명자의 현재 위치 포인터 다음으로 식별됨fd새 위치로 에 의해 지정됨오프셋. 유효한 에 대한 값어디에서아르SEEK_SET(개체 시작부터 탐색),SEEK_CUR(현재 위치에서 탐색) 및SEEK_END(개체 끝에서 검색). 는 반환 값은 새 위치 포젠 토토이거나 오류 시 -1입니다.

31.3.8. 대형 젠 토토의 탐색 위치 획득

대규모 파일의 현재 읽기 또는 쓰기 위치를 얻으려면 객체 설명자, 호출

int lo_tell(PGconn *conn, int fd);

오류가 있는 경우, 반환 값은 음수입니다.

31.3.9. 대형 젠 토토 자르기

큰 객체를 주어진 길이로 자르려면 다음을 호출하세요.

int lo_truncate(PGcon *conn, int fd, size_t len);

큰 부분을 자릅니다. 젠 토토 설명자fd길이까지len.fd인수는 다음에 의해 반환되어야 합니다. 이전lo_open. 만일len현재 대형 개체보다 큽니다. 길이가 길면 대형 객체가 널 바이트로 확장됩니다. ('\0').

파일 오프셋은 변경되지 않습니다.

성공시lo_truncate반환 제로. 오류가 발생하면 반환 값은 음수입니다.

lo_truncate현재 새로운 기능입니다포스트그레SQL8.3; 만약 이것이 함수가 이전 서버 버전에 대해 실행되면 실패합니다. 음수 값을 반환합니다.

31.3.10. 대형 젠 토토 설명자 닫기

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

int lo_close(PGconn *conn, int fd);

어디에서fd는 다음에서 반환된 대형 개체 설명자입니다.lo_open. 성공하면,lo_close0을 반환합니다. 오류시 반품 값이 음수입니다.

끝에 열려 있는 대형 개체 설명자 거래가 자동으로 종료됩니다.

31.3.11. 대형 개체 제거

데이터베이스에서 대형 개체를 제거하려면 다음을 호출하세요.

int lo_unlink(PGconn *conn, Oid lobjId);

lobjId인수는 대형 OID를 지정합니다. 제거할 개체입니다. 성공하면 1을, 실패하면 -1을 반환합니다.