RDS PostgreSQL提供pldebugger插件,用于调试存储过程。

背景信息

RDS PostgreSQL支持多种存储过程语言,例如plpgsql、plpython、plperl、pltcl等等。用户可以使用这些存储过程语言,创建对应的函数或存储过程。

前提条件

  • RDS PostgreSQL实例版本需要满足以下条件:
    • 实例大版本:10、11、12或13。
    • 内核小版本:大于等于20211130,如需升级内核小版本,请参见升级内核小版本
  • 使用该插件前,需要将plugin_debugger加入到shared_preload_libraries参数中。

    您可以使用RDS PostgreSQL参数设置功能,为shared_preload_libraries参数添加plugin_debugger。具体操作,请参见设置实例参数

  • 客户端pgAdmin4请确保使用版本大于pgAdmin 4 v4.19(包含pgAdmin 4 v4.19)。pgAdmin4下载链接请参见pgAdmin 4

使用方法

  • 创建插件
    CREATE EXTENSION pldbgapi;
    说明 仅高权限账号可以执行此命令。
  • 删除插件
    DROP EXTENSION pldbgapi;
    说明 仅高权限账号可以执行此命令。

调试示例

  1. 使用pgAdmin客户端连接RDS PostgreSQL数据库。连接方法,请参见连接PostgreSQL实例
  2. 创建测试数据库和存储过程。
    示例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;
  3. 右键选择待调试的函数。选择Debug
  4. 在pgAdmin界面右边的函数调试框中,您可以对目标函数进行单步调试,包含step into/over,continue,加设断点,停止等操作。底部有调试过程中显示的局部变量信息,调试结果与函数堆栈。调试按钮