RDS PostgreSQL提供pldebugger插件,用于调试存储过程。
背景信息
RDS PostgreSQL支持多种存储过程语言,例如plpgsql、plpython、plperl、pltcl等等。用户可以使用这些存储过程语言,创建对应的函数或存储过程。
前提条件
安装和卸载插件
-
设置实例参数,在shared_preload_libraries的运行参数值中添加plugin_debugger。例如,将运行参数值改为
'pg_stat_statements,auto_explain,plugin_debugger'。 -
使用高权限账号连接需要安装插件的数据库,执行以下SQL管理插件。
-
创建插件
CREATE EXTENSION pldbgapi; -
删除插件
DROP EXTENSION pldbgapi;
-
调试示例
-
使用pgAdmin客户端连接RDS PostgreSQL数据库。连接方法,请参见连接PostgreSQL实例。
-
创建测试数据库和存储过程。
示例SQL如下:
CREATE TABLE test( id int, name VARCHAR(50)); CREATE OR REPLACE FUNCTION public.testcount() RETURNS integer AS $$ DECLARE postgres text; counts integer; BEGIN INSERT INTO test VALUES(1, 'a'); postgres:='SELECT COUNT(*) FROM test'; EXECUTE postgres INTO counts; IF counts > 100 THEN RETURN counts; ELSE RETURN 0; END IF; END; $$ language plpgsql; -
右键选择待调试的函数。在左侧 Browser 面板中展开 Functions,选中 testcount() 函数,右键单击并选择 Debugging > Debug,进入函数调试模式。
-
在pgAdmin界面右边的函数调试框中,您可以对目标函数进行单步调试,包含step into/over,continue,加设断点,停止等操作。底部有调试过程中显示的局部变量信息,调试结果与函数堆栈。进入调试界面后,顶部调试工具栏提供 Step Into、Step Over、Continue、Stop、Toggle breakpoint 和 Clear all breakpoints 按钮,用于控制函数的单步执行、断点管理等调试操作。代码编辑器中当前执行行会以高亮显示,底部包含 Parameters、Local variables、Messages、Results、Stack 选项卡,可查看调试过程中的变量值和执行结果。