3293_3435hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

34.3. Giao diện kèo chấp bóng đá hôm nay

Phần này mô tả các cơ sởPostgreSQL'slibpqThư viện giao diện kèo chấp bóng đá hôm nay cung cấp để truy cập các đối tượng lớn. ThePostgreSQLGiao kèo chấp bóng đá hôm nay đối tượng lớn được mô hình hóa sauUNIXGiao kèo chấp bóng đá hôm nay hệ thống tệp, với các chất tương tự củaMở, đọc, Viết, LSEEK, v.v.

Tất cả các thao tác đối tượng kèo chấp bóng đá hôm nay bằng cách sử dụng các chức năng nàyphảidiễn ra trong một khối giao dịch SQL, vì các mô tả tệp đối tượng kèo chấp bóng đá hôm nay chỉ có giá trị trong suốt thời gian giao dịch.

Nếu xảy ra lỗi trong khi thực hiện bất kỳ một trong các hàm này, hàm sẽ trả về giá trị không thể xảy ra, thường là 0 hoặc -1. Một thông báo mô tả lỗi được lưu trữ trong đối tượng kết nối và có thể được truy xuất vớipqerrormessage.

Ứng dụng kèo chấp bóng đá hôm nay sử dụng các chức năng này nên bao gồm tệp tiêu đềlibpq/libpq-fs.hvà liên kết vớilibpqThư viện.

34.3.1. Tạo một đối tượng kèo chấp bóng đá hôm nay

hàm

oid lo_creat (pgconn *Conn, int mode);

Tạo một đối tượng kèo chấp bóng đá hôm nay mới. Giá trị trả về là OID được gán cho đối tượng kèo chấp bóng đá hôm nay mới hoặckhông hợp lệ(không) về thất bại.Modekhông được sử dụng và bỏ qua nhưPostgreSQL8.1; Tuy nhiên, để tương thích ngược với các bản phát hành trước đó, tốt nhất là đặt nó thànhinv_read, inv_writehoặcinv_read | inv_write. (Các hằng số tượng trưng này được xác định trong tệp tiêu đềlibpq/libpq-fs.h.)

Một ví dụ:

inv_oid = lo_creat (Conn, inv_read | inv_write);

hàm

oid lo_create (pgconn *Conn, oid lobjid);

cũng tạo ra một đối tượng kèo chấp bóng đá hôm nay mới. OID được gán có thể được chỉ định bởilobjid; Nếu vậy, thất bại xảy ra nếu OID đó đã được sử dụng cho một số đối tượng kèo chấp bóng đá hôm nay. Nếu nhưlobjidkhông hợp lệ(không) sau đóLO_CREATEgán OID không sử dụng (đây là hành vi tương tự nhưlo_creat). Giá trị trả về là OID được gán cho đối tượng kèo chấp bóng đá hôm nay mới hoặckhông hợp lệ(không) về thất bại.

LO_CREATElà mới nhưPostgreSQL8.1; Nếu chức năng này chạy so với phiên bản kèo chấp bóng đá hôm nay chủ cũ hơn, nó sẽ thất bại và trả vềkhông hợp lệ.

Một ví dụ:

15862_15905

34.3.2. Nhập một đối tượng kèo chấp bóng đá hôm nay

Để nhập tệp hệ điều hành dưới dạng đối tượng kèo chấp bóng đá hôm nay, hãy gọi

oid lo_import (pgconn *Conn, const char *filename);

FileNameChỉ định tên hệ điều hành của tệp được nhập dưới dạng một đối tượng kèo chấp bóng đá hôm nay. Giá trị trả về là OID được gán cho đối tượng kèo chấp bóng đá hôm nay mới hoặckhông hợp lệ(không) về thất bại. Lưu ý rằng tệp được đọc bởi thư viện giao diện kèo chấp bóng đá hôm nay, không phải bởi máy chủ; Vì vậy, nó phải tồn tại trong hệ thống tệp kèo chấp bóng đá hôm nay và có thể đọc được bởi ứng dụng kèo chấp bóng đá hôm nay.

hàm

oid lo_import_with_oid (pgconn *Conn, const char *filename, oid lobjid);

Cũng nhập một đối tượng kèo chấp bóng đá hôm nay mới. OID được gán có thể được chỉ định bởilobjid; Nếu vậy, thất bại xảy ra nếu OID đó đã được sử dụng cho một số đối tượng kèo chấp bóng đá hôm nay. Nếu nhưlobjidkhông hợp lệ(không) sau đólo_import_with_oidgán OID không sử dụng (đây là hành vi tương tự nhưlo_import). Giá trị trả về là OID được gán cho đối tượng kèo chấp bóng đá hôm nay mới hoặckhông hợp lệ(không) về thất bại.

lo_import_with_oidlà mới nhưPostgreSQL8.4 và sử dụnglo_createNội bộ mới trong 8.1; Nếu chức năng này được chạy so với 8.0 hoặc trước đó, nó sẽ thất bại và trả vềkhông hợp lệ.

34.3.3. Xuất một đối tượng kèo chấp bóng đá hôm nay

Để xuất một đối tượng kèo chấp bóng đá hôm nay vào tệp hệ điều hành, gọi

int lo_export (pgconn *Conn, oid lobjid, const char *filename);

ThelobjidĐối số chỉ định oid của đối tượng kèo chấp bóng đá hôm nay để xuất vàFileNameĐối số Chỉ định tên hệ điều hành của tệp. Lưu ý rằng tệp được viết bởi thư viện giao diện kèo chấp bóng đá hôm nay, không phải bởi máy chủ. Trả về 1 khi thành công, -1 khi thất bại.

34.3.4. Mở một đối tượng kèo chấp bóng đá hôm nay hiện có

Để mở một đối tượng kèo chấp bóng đá hôm nay hiện có để đọc hoặc viết, gọi

int lo_open (pgconn *Conn, oid lobjid, int mode);

ThelobjidĐối số chỉ định oid của đối tượng kèo chấp bóng đá hôm nay để mở. TheModeĐiều khiển bit xem đối tượng có được mở để đọc không (inv_read), viết (inv_write) hoặc cả hai. (Các hằng số tượng trưng này được xác định trong tệp tiêu đềlibpq/libpq-fs.h.)lo_openTrả về một mô tả đối tượng kèo chấp bóng đá hôm nay (không âm) để sử dụng saulo_read, lo_write, lo_lseek, LO_LSEEK64, lo_tell, lo_tell64, lo_truncate, LO_TRUNCATE64lo_close. Bộ mô tả chỉ có giá trị trong suốt thời gian của giao dịch hiện tại. Khi thất bại, -1 được trả về.

kèo chấp bóng đá hôm nay chủ hiện không phân biệt giữa các chế độinv_writeinv_read | inv_write: Bạn được phép đọc từ bộ mô tả trong cả hai trường hợp. Tuy nhiên có một sự khác biệt đáng kể giữa các chế độ này vàinv_readmột mình: vớiinv_readBạn không thể viết trên bộ mô tả và dữ liệu được đọc từ nó sẽ phản ánh nội dung của đối tượng kèo chấp bóng đá hôm nay tại thời điểm chụp nhanh giao dịch đã hoạt động khiLO_OPENđã được thực thi, bất kể sau đó viết bởi các giao dịch này hoặc các giao dịch khác. Đọc từ một mô tả được mở bằnginv_writeTrả về dữ liệu phản ánh tất cả các văn bản của các giao dịch cam kết khác cũng như ghi của giao dịch hiện tại. Điều này tương tự như hành vi củaĐọc lặp lạiso vớiĐọc cam kếtChế độ giao dịch cho SQL thông thườngChọnlệnh.

LO_OPENsẽ thất bại nếuChọnĐặc quyền không có sẵn cho đối tượng kèo chấp bóng đá hôm nay hoặc nếuinv_writeđược chỉ định và​​Cập nhậtĐặc quyền không có sẵn. (TrướcPostgreSQL11, các kiểm tra đặc quyền này được thực hiện tại cuộc gọi đọc hoặc ghi thực tế đầu tiên bằng cách sử dụng bộ mô tả.)LO_COMPAT_PRIVILEGES21844_21866

Một ví dụ:

inv_fd = lo_open (Conn, inv_oid, inv_read | inv_write);

34.3.5. Ghi dữ liệu vào một đối tượng kèo chấp bóng đá hôm nay

hàm

22324_22392

Writeslenbyte từBUF(phải có kích thướclen) đến mô tả đối tượng kèo chấp bóng đá hôm nayFD. TheFDĐối số phải được trả lại bởi trước đóLO_OPEN. Số lượng byte thực sự được viết được trả về (trong quá trình triển khai hiện tại, điều này sẽ luôn bằng nhaulenTrừ khi có lỗi). Trong trường hợp lỗi, giá trị trả về là -1.

mặc dùlenTham số được khai báo làsize_t, Hàm này sẽ từ chối các giá trị độ dài kèo chấp bóng đá hôm nay hơnint_max. Trong thực tế, tốt nhất là chuyển dữ liệu trong các phần kèo chấp bóng đá hôm nay nhất là một vài megabyte.

34.3.6. Đọc dữ liệu từ một đối tượng kèo chấp bóng đá hôm nay

hàm

23653_23714

đọc lên đếnlenbyte từ mô tả đối tượng kèo chấp bóng đá hôm nayFDthànhBUF(phải có kích thướclen). TheFDĐối số phải được trả lại bởi trước đólo_open24109_24183lenNếu kết thúc của đối tượng kèo chấp bóng đá hôm nay đạt được trước tiên. Trong trường hợp lỗi, giá trị trả về là -1.

mặc dùlentham số được khai báo làsize_t, Hàm này sẽ từ chối các giá trị độ dài kèo chấp bóng đá hôm nay hơnint_max24539_24627

34.3.7. Tìm kiếm trong một đối tượng kèo chấp bóng đá hôm nay

Để thay đổi vị trí đọc hoặc ghi hiện tại được liên kết với một mô tả đối tượng kèo chấp bóng đá hôm nay, gọi

int lo_lseek (pgconn *Conn, int fd, int offset, int whence);

Hàm này di chuyển con trỏ vị trí hiện tại cho bộ mô tả đối tượng kèo chấp bóng đá hôm nay được xác định bởiFDđến vị trí mới được chỉ định bởiOffset. Các giá trị hợp lệ chowhenceSeek_set(tìm kiếm từ bắt đầu đối tượng),Seek_cur(tìm kiếm từ vị trí hiện tại) vàSeek_end(tìm kiếm từ đầu đối tượng). Giá trị trả về là con trỏ vị trí mới hoặc -1 trên lỗi.

Khi xử lý các đối tượng kèo chấp bóng đá hôm nay có thể vượt quá kích thước 2GB, thay vào đó sử dụng

25856_25931

Hàm này có hành vi tương tự nhưlo_lseek, nhưng nó có thể chấp nhậnOffsetkèo chấp bóng đá hôm nay hơn 2GB và/hoặc mang lại kết quả kèo chấp bóng đá hôm nay hơn 2GB. Lưu ý rằnglo_lseekSẽ thất bại nếu con trỏ vị trí mới sẽ kèo chấp bóng đá hôm nay hơn 2GB.

LO_LSEEK64là mới nhưPostgreSQL9.3. Nếu chức năng này được chạy so với phiên bản kèo chấp bóng đá hôm nay chủ cũ hơn, nó sẽ thất bại và trả về -1.

34.3.8. Có được vị trí tìm kiếm của một đối tượng kèo chấp bóng đá hôm nay

Để có được vị trí đọc hoặc ghi hiện tại của một mô tả đối tượng kèo chấp bóng đá hôm nay, gọi

int lo_tell (pgconn *Conn, int fd);

Nếu có lỗi, giá trị trả về là -1.

Khi xử lý các đối tượng kèo chấp bóng đá hôm nay có thể vượt quá kích thước 2GB, thay vào đó sử dụng

pg_int64 lo_tell64 (pgconn *Conn, int fd);

Hàm này có hành vi tương tự nhưlo_tell, nhưng nó có thể mang lại kết quả kèo chấp bóng đá hôm nay hơn 2GB. Lưu ý rằnglo_tellSẽ thất bại nếu vị trí đọc/ghi hiện tại kèo chấp bóng đá hôm nay hơn 2GB.

LO_TELL64là mới nhưPostgreSQL9.3. Nếu chức năng này được chạy so với phiên bản kèo chấp bóng đá hôm nay chủ cũ hơn, nó sẽ thất bại và trả về -1.

34.3.9. Cắt ngắn một đối tượng kèo chấp bóng đá hôm nay

Để cắt một đối tượng kèo chấp bóng đá hôm nay thành một độ dài nhất định, gọi

int lo_truncate (pgconn *Conn, int fd, size_t len);

Hàm này cắt giảm mô tả đối tượng kèo chấp bóng đá hôm nayFDto Longlen. TheFDĐối số phải được trả lại bởi trước đóLO_OPEN. Nếu nhưlenkèo chấp bóng đá hôm nay hơn chiều dài dòng điện của đối tượng kèo chấp bóng đá hôm nay, đối tượng kèo chấp bóng đá hôm nay được mở rộng đến độ dài được chỉ định với các byte null ('\ 0'). Về thành công,28600_28613Trả về 0. Khi lỗi, giá trị trả về là -1.

Vị trí đọc/ghi được liên kết với mô tảFDkhông thay đổi.

mặc dùlenTham số được khai báo làsize_t, LO_TRUNCATEsẽ từ chối các giá trị độ dài kèo chấp bóng đá hôm nay hơnint_max.

Khi xử lý các đối tượng kèo chấp bóng đá hôm nay có thể vượt quá kích thước 2GB, thay vào đó sử dụng

int lo_truncate64 (pgconn *Conn, int fd, pg_int64 len);

Hàm này có hành vi tương tự nhưLO_TRUNCATE, nhưng nó có thể chấp nhận AlenGiá trị vượt quá 2GB.

LO_TRUNCATElà mới nhưPostgreSQL29573_29665

LO_TRUNCATE64là mới nhưPOSTGRESQL9.3; Nếu chức năng này được chạy so với phiên bản kèo chấp bóng đá hôm nay chủ cũ hơn, nó sẽ thất bại và trả về -1.

34.3.10. Đóng một mô tả đối tượng kèo chấp bóng đá hôm nay

Một mô tả đối tượng kèo chấp bóng đá hôm nay có thể được đóng bằng cách gọi

int lo_close (pgconn *Conn, int fd);

WHEREFDlà một mô tả đối tượng kèo chấp bóng đá hôm nay được trả về bởiLO_OPEN. Về thành công,lo_closeTrả về 0. Khi lỗi, giá trị trả về là -1.

Bất kỳ mô tả đối tượng kèo chấp bóng đá hôm nay nào vẫn mở vào cuối giao dịch sẽ được đóng tự động.