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

32.3. 클라이언트 토토 핫

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

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

32.3.1. 대형 객체 생성

함수

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

32.3.2. 대형 개체 가져오기

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

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.

32.3.3. 대형 개체 내보내기

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

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

lobjId인수는 다음을 지정합니다. 내보낼 대형 객체의 OID 및파일 이름인수는 작동을 지정합니다. 파일의 시스템 이름입니다. 파일은 다음에서 작성되었습니다. 서버가 아닌 클라이언트 인터페이스 라이브러리. 1을 반환합니다. 성공, 실패 시 -1.

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

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

함수

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

쓴다len바이트buf대형 개체 설명자에fd.fd인수 이전에 반환되었음에 틀림없습니다.lo_open. 실제로 쓴 바이트 수 반환됩니다. 오류가 발생한 경우 반환 값은 다음과 같습니다. 부정.

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

함수

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

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

32.3.7. 대형 객체 탐색

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

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

이 함수는 현재 위치 포인터를 다음 위치로 이동시킵니다. 다음으로 식별되는 대형 객체 설명자fd다음이 지정한 새 위치로오프셋. 유효한 값은어디서아르SEEK_SET(개체 시작부터 탐색),SEEK_CUR(현재 위치에서 탐색) 및SEEK_END(객체 끝에서 탐색). 반환 값 새 위치 포토토 핫이거나 오류가 발생하면 -1입니다.

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

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

int lo_tell(PGconn *conn, int fd);

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

32.3.9. 대형 객체 자르기

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

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

대형 개체 설명자를 자릅니다.fd길이까지len.fd인수는 다음과 같아야 합니다. 이전에 반환됨lo_open. 만일len현재보다 큼 대형 객체 길이, 대형 객체는 null로 확장됩니다. 바이트('\0').

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

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

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

32.3.10. 대형 객체 설명자 닫기

큰 개체 설명자는 호출하여 닫을 수 있습니다.

int lo_close(PGconn *conn, int fd);

어디에서fd큰 개체입니다 에 의해 반환된 설명자lo_open. 성공하면,lo_close반환 제로. 오류가 발생하면 반환 값은 음수입니다.

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

32.3.11. 대형 개체 제거

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

int lo_unlink(PGconn *conn, Oid lobjId);

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