調(diào)試存儲過程(pldebugger)
RDS PostgreSQL提供pldebugger插件,用于調(diào)試存儲過程。
您可以加入RDS PostgreSQL插件交流釘釘群(103525002795),進行咨詢、交流和反饋,獲取更多關(guān)于插件的信息。
背景信息
RDS PostgreSQL支持多種存儲過程語言,例如plpgsql、plpython、plperl、pltcl等等。用戶可以使用這些存儲過程語言,創(chuàng)建對應(yīng)的函數(shù)或存儲過程。
前提條件
RDS PostgreSQL實例版本需要滿足以下條件:
實例大版本:10、11、12或13。
實例內(nèi)核小版本為20230830或以上。
重要20230830內(nèi)核小版本之前已支持此插件,但為了規(guī)范插件管理,提升RDS PostgreSQL在插件側(cè)的安全防護,RDS計劃在內(nèi)核版本迭代中陸續(xù)對部分存在安全風(fēng)險的插件進行優(yōu)化,部分插件在低內(nèi)核小版本無法創(chuàng)建,更多信息,請參見【產(chǎn)品/功能變更】RDS PostgreSQL限制創(chuàng)建插件說明。
如果您的實例內(nèi)核小版本低于20230830,且已經(jīng)使用了此插件,則不影響使用。
如果您首次創(chuàng)建或重新創(chuàng)建此插件,請升級內(nèi)核小版本到最新。
使用該插件前,需要將plugin_debugger加入到shared_preload_libraries參數(shù)中。
您可以使用RDS PostgreSQL參數(shù)設(shè)置功能,為shared_preload_libraries參數(shù)添加plugin_debugger。具體操作,請參見設(shè)置實例參數(shù)。
客戶端pgAdmin4請確保使用版本大于pgAdmin 4 v4.19(包含pgAdmin 4 v4.19)。pgAdmin4下載鏈接請參見pgAdmin 4。
使用方法
創(chuàng)建插件
CREATE EXTENSION pldbgapi;
說明僅高權(quán)限賬號可以執(zhí)行此命令。
刪除插件
DROP EXTENSION pldbgapi;
說明僅高權(quán)限賬號可以執(zhí)行此命令。
調(diào)試示例
使用pgAdmin客戶端連接RDS PostgreSQL數(shù)據(jù)庫。連接方法,請參見連接PostgreSQL實例。
創(chuàng)建測試數(shù)據(jù)庫和存儲過程。
示例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;
右鍵選擇待調(diào)試的函數(shù)。
在pgAdmin界面右邊的函數(shù)調(diào)試框中,您可以對目標(biāo)函數(shù)進行單步調(diào)試,包含step into/over,continue,加設(shè)斷點,停止等操作。底部有調(diào)試過程中顯示的局部變量信息,調(diào)試結(jié)果與函數(shù)堆棧。