RDS PostgreSQL提供pldebugger外掛程式,用於調試預存程序。
背景資訊
RDS PostgreSQL支援多種預存程序語言,例如plpgsql、plpython、plperl、pltcl等等。使用者可以使用這些預存程序語言,建立對應的函數或預存程序。
前提條件
RDS PostgreSQL執行個體版本需要滿足以下條件:
執行個體大版本:10、11、12或13。
執行個體核心小版本為20230830或以上。
重要20230830核心小版本之前已支援此外掛程式,但為了規範外掛程式管理,提升RDS PostgreSQL在外掛程式側的安全防護,RDS計劃在核心版本迭代中陸續對部分存在安全風險的外掛程式進行最佳化,部分外掛程式在低核心小版本無法建立,更多資訊,請參見【產品/功能變更】RDS PostgreSQL限制建立外掛程式說明。
如果您在20230830核心小版前已經使用了此外掛程式,則不影響使用。
如果您首次建立或重新建立此外掛程式,請升級核心小版本到最新。
使用該外掛程式前,需要將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;
說明僅高許可權帳號可以執行此命令。
調試樣本
使用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;
右鍵選擇待調試的函數。
在pgAdmin介面右邊的函數調試框中,您可以對目標函數進行單步調試,包含step into/over,continue,加設斷點,停止等操作。底部有調試過程中顯示的局部變數資訊,調試結果與函數堆棧。