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

30.3. 클라이언트 토토 베이

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

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

30.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현재 새로운 내용토토 베이8.1; 만약 이것이 함수가 이전 서버 버전에 대해 실행되면 실패합니다. 그리고 돌아오다InvalidOid.

예:

inv_oid = lo_create(conn, Desired_oid);

30.3.2. 대형 개체 가져오기

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

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

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

30.3.3. 대형 개체 내보내기

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

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

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

30.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);

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

함수

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

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

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

함수

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

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

30.3.7. 대형 객체 탐색

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

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

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

30.3.8. 대형 객체의 탐색 위치 획득

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

int lo_tell(PGconn *conn, int fd);

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

30.3.9. 대형 객체 설명자 닫기

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

int lo_close(PGconn *conn, int fd);

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

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

30.3.10. 대형 개체 제거

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

int lo_unlink(PGconn *conn, Oid lobjId);

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