免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3003 | 回复: 0
打印 上一主题 下一主题

PostgreSQL-libpq-终止正在执行的查询 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-17 09:59 |只看该作者 |倒序浏览
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必须是信号处理程序的局部变量。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP