Postgreql调试function的方法

来自软件实验室
跳转至: 导航搜索

pldbgapi的安装

能够单步调试function/trigger是非常重要的,尤其是逻辑比较复杂的function/trigger。实现这个功能有两个途径:

  1. 安装和使用enterpriseDB,内置了funtion/trigger的单步调试功能。
  2. 由于版权的限制,Linux各版本自己附带的postgresql是没有function/trigger功能的,需要从 http://git.postgresql.org/gitweb/?p=pldebugger.git;a=summary 下载pldebugger的源代码自己编译debugger模块。

下面重点说下第二种方法的具体步骤(base on debian jessie)。由于debian较为严格的版权限制,postgresql-9.4中并没有包含pgdebugger extension,但是有源代码呢,go on!

  1. 下载postgresql 9.4的源码先:http://www.postgresql.org/ftp/source/v9.4.4/
  2. 安装编译postgresql的依赖包:aptitude install libreadline-dev zlib1g-dev
  3. 下载pldebugger的源码:git clone git://git.postgresql.org/git/pldebugger.git ,然后把pldebugger的源码复制到postgresql源码的contrib目录下
  4. 在postgresql源码中执行./configure;make,然后在contrib/pldebugger中执行make
  5. 把contrib/pldebugger中生成的plugin_debugger.so文件复制到/usr/lib/postgresql/9.4/lib/目录下
  6. 把contrib/pldebugger中的extension control文件等复制到extension目录下:
cp pldbgapi.control pldbgapi--1.0.sql pldbgapi--unpackaged--1.0.sql /usr/share/postgresql/9.4/extension/

  1. 修改postgresql的配置文件/etc/postgresql/9.4/main/postgresql.conf,增加如下的行:
shared_preload_libraries = '$libdir/plugin_debugger.so' 

  1. restart postgresql server: service postgresql restart
  2. 登陆你的数据库中,比如test,创建pldbgapi extension:
psql test;
# create extension pldbgapi;

  1. 打开pgadmin3,右键点击一个函数或者触发器函数,如果出现如下的debug字样就表示成功了:

Pldebugger init.png

postgresql函数、触发器调试技术

参考