VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

PQgetCopyData

功能描述

在COPY_OUT状态下从服务器接收数据。

接口原型

int PQgetCopyData(PGconn *conn,       
                  char **buffer,     
                  int async);

参数说明

参数 描述
conn 建立连接时返回的连接结构体指针,该指针用于标识某个特定连接。
buffer 在一个COPY的过程中试图从服务器获取另外一行数据。数据总是每次返回一个数据行; 如果只有一部分行可用,那么它不会被返回。成功返回一个数据行包括分配一个内存块来保存这些数据。 buffer参数必须是非NULL。*buffer 设置为指向分配出来的内存的指针,或者是如果没有返回缓冲区,那么为NULL。 一个非NULL的结果缓冲区在不再需要的时候必须用PQfreemem释放。
async 在async为真时(非零),PQgetCopyData将不会阻塞住等待输入; 如果该COPY仍在处理过程中并且没有可用的完整行,那么它将返回零。 (在这种情况下它等待读准备好,然后在再次调用PQgetCopyData之前, 调用PQconsumeInput。)在async为假时(零), PQgetCopyData将阻塞住,直到数据可用或者操作完成。

返回值

在成功返回一行之后,那么返回的值就是该数据行里数据的字节数(这个将总是大于零)。 返回的字串总是空结尾的,虽然可能只是对文本的COPY有用。 一个零的结果表示该COPY仍然在处理中,但是还没有可以用的行 (这个只有在async为真的时候才可能)。一个结果为 -1 的值表示 COPY已经结束。结果为 -2 表示发生了错误(参考PQerrorMessage获取原因)。

其他

在PQgetCopyData返回 -1 之后,调用PQgetResult获取 COPY命令的最后结果状态。我们可以用通常的方法等待这个结果可用。然后返回到正常操作。