- 论坛徽章:
- 0
|
http://www.wohedb.com/db_html_doc/libpq_api/libpq_5_cancel.htm
http://www.wohedb.com 中文数据库管理系统
1.5 终止正在执行的查询
客户端可以发送请求给服务器,要求终止正在被服务器执行的命令。本节介绍的函数就实现了这样的功能。
PQgetCancel
创建一个数据结构,这个数据结构包含终止正在被服务器执行的命令需要的所有信息。
PGcancel *PQgetCancel(PGconn *conn);
函数返回一个指向PQcancel对象的指针。如果参数conn的值是NULL或者指向一个非法的连接,函数将返回NULL。可以将函数返回的指针作为参数传给PQcancel和 PQfreeCancel。
PQfreeCancel
释放PQgetCancel创建的PQcancel对象占用的内存。
void PQfreeCancel(PGcancel *cancel);
PQcancel
要求服务器终止正在执行的命令。
int PQcancel(PGcancel *cancel, char *errbuf, int errbufsize);
返回值是1表示请求成功地传递给服务器。返回值是0表示请求没有被成功地传递给服务器。如果函数返回0,参数errbuf指向的缓冲区中将存有具体的错误信息。参数errbufsize指明errbuf指向的缓冲区的大小,单位是字节,推荐值是256。
即使请求被成功地发送给服务器,也不代表请求会生效。如果请求被成功地执行,正在执行的命令会被终止,并给客户端返回一个错误结果。如果请求没有被成功地执行(因为被终止的命令已经执行结束),服务器不会返回任何结果给客户端。
可以在信号处理程序(signal handler)内部调用PQcancel,errbuf必须是信号处理程序的局部变量。 |
|