PL/Python ストアド プロシージャのセットに取り組んでいます。私は PostgreSQL 9.3 ( apt.postgresql.org からインストール) と Python 2.7 インタープリターを使用しています。Ubuntu 13.04 で実行されています。
このエラーは、大規模な操作の途中で発生します (300,000 行を超えるソース テーブルのデータを使用するマテリアライズド ビューを作成し、PL/Python ストアド プロシージャを使用していくつかのフィールドを計算します)。
私が得るエラー出力は次のとおりです。
ERROR: could not convert SPI error to Python exception
CONTEXT: PL/Python function "get_first_level_parent"
********** Error **********
ERROR: could not convert SPI error to Python exception
SQL state: XX000
Context: PL/Python function "get_first_level_parent"
(「get_first_level_parent」はストアド プロシージャの 1 つの名前です)。
PostgreSQL サーバーのログは、それ以上の情報を提供しません (私は PostgreSQL と PL/Python の内部に精通していません)。詳細なエラー ログを使用して実行すると、次のようになります。
2013-10-18 12:56:43 EAT ERROR: XX000: could not convert SPI error to Python exception
2013-10-18 12:56:43 EAT CONTEXT: PL/Python function "get_first_level_parent"
2013-10-18 12:56:43 EAT LOCATION: PLy_spi_exception_set, plpy_spi.c:576
PostgreSQL エラー コードのドキュメントによると、これXX000
は のエラー コードですinternal_error
。ストアド プロシージャへの呼び出しを分離し、独自のステートメントで実行するとSELECT get_first_level_parent(373673007)
、エラーは発生しません。
私の質問は、この種のエラーをデバッグするために使用できるツール/テクニックは何ですか? 私の現在の問題については、ストアドプロシージャを書き直すことで問題を「解決」する可能性があります(ゆっくりと、一度に1つの小さな部分をテストします)。それが唯一の方法ですか?