官方源码分发包在 src/test/examples/testlo64.c 中提供了基于 C 语言 libpq API 操作 64 位大对象的完整端到端示例程序,演示了如何创建、按偏移量寻道写入并安全读取大对象。
Example 33.1. libpq 中大对象操作完整示例
/* 使用 libpq 操作大对象的标准流程示例 */
#include "libpq-fe.h"
#include "libpq/libpq-fs.h"
void demo(PGconn *conn) {
Oid lobjId;
int lobj_fd;
char buf[1024];
/* 大对象操作必须在显式事务块内部执行 */
PQexec(conn, "BEGIN");
lobjId = lo_creat(conn, INV_READ | INV_WRITE);
lobj_fd = lo_open(conn, lobjId, INV_WRITE);
lo_write(conn, lobj_fd, "Hello PostgreSQL", 16);
lo_close(conn, lobj_fd);
PQexec(conn, "COMMIT");
}