このトピックでは、pldebugger拡張機能を使用して、ApsaraDB RDS for PostgreSQLインスタンスのストアドプロシージャをデバッグする方法について説明します。
背景情報
ApsaraDB RDS for PostgreSQLは、PL/pgSQL、PL/Python、PL/Perl、PL/Tclなどのさまざまなストアドプロシージャ言語をサポートしています。 これらの言語を使用して、関数またはストアドプロシージャを作成できます。
前提条件
RDSインスタンスは、次のいずれかのデータベースエンジンバージョンを実行します。
メジャーエンジンのバージョン: PostgreSQL 10、PostgreSQL 11、PostgreSQL 12、またはPostgreSQL 13。
RDSインスタンスは、20230830以降のマイナーエンジンバージョンを実行します。
重要拡張機能は、20230830より前のマイナーエンジンバージョンでサポートされています。 ApsaraDB RDS for PostgreSQLの拡張機能管理を標準化し、拡張機能のセキュリティを強化するために、ApsaraDB RDSはマイナーエンジンバージョンのイテレーションで脆弱な拡張機能を最適化する予定です。 その結果、以前のマイナーエンジンバージョンを実行するRDSインスタンスに対して、一部の拡張機能を作成できなくなりました。 詳細については、「 [製品の変更 /機能の変更] ApsaraDB RDS For PostgreSQLインスタンスの拡張機能作成の制限」をご参照ください。
20230830より前のマイナーエンジンバージョンを実行するRDSインスタンスの拡張機能を作成した場合、その拡張機能は影響を受けません。
RDSインスタンスの拡張機能を初めて作成する場合、または拡張機能を再作成する場合は、RDSインスタンスのマイナーエンジンバージョンを最新バージョンに更新する必要があります。 詳細については、「マイナーエンジンバージョンの更新」をご参照ください。
plugin_debuggerは、RDSインスタンスのshared_preload_librariesパラメーターの値に追加されます。
shared_preload_librariesパラメーターの値にplugin_debuggerを追加する方法の詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのパラメーターの変更」をご参照ください。
データベースクライアントのpgAdmin4のバージョンが4.19以降です。 pgAdmin4はpgAdmin4からダウンロードできます。
拡張機能を使用するUse the extension
エクステンションを作成します。
拡張pldbgapiを作成します。
説明特権アカウントのみがステートメントを実行する権限を持っています。
拡張を削除します。
ドロップ延長pldbgapi;
説明特権アカウントのみがステートメントを実行する権限を持っています。
例
pgAdminを使用してRDSインスタンスに接続します。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスへの接続」をご参照ください。
テストに使用するデータベースとストアドプロシージャを作成します。
サンプルSQL文:
CREATE TABLEテスト ( id int, 名前VARCHAR(50); CREATE OR REPLACE FUNCTION public.testcount() RETURNS整数AS $$ DECLARE postgresテキスト; 整数をカウントします。開始 テスト値 (1、'a') に挿入します。postgres:='SELECT COUNT(*) FROM test'; EXECUTE postgres INTOカウント; IFカウント> 100 THEN リターンカウント; エルセ リターン0; エンドIF; エンド; $$ language plpgsql;
デバッグする関数を右クリックし、[デバッグ]> [デバッグ] を選択します。
ページの右側のデバッグセクションで、段階的な操作を実行して関数をデバッグします。 これらの操作には、ステップイン /オーバー、続行、チェックポイント、および停止が含まれます。 ページの下部では、ローカル変数、デバッグ結果、および関数スタックを表示できます。