Postgres データベースの保守作業を行っています。特定のテーブルに 2 つのステータス列があり、それらを 1 つのビットマスク列に変換したいと考えています。このデータベースは、悲しいことに単体テストでカバーされていないデータ操作にさまざまなストアド プロシージャを使用します。
このテーブルがストアド プロシージャによってクエリ内で使用されているかどうかを確認する方法はありますか? \df+
内部のスイッチを使用して、各プロシージャの本体を手動で処理することは別としてpsql
。
Postgres データベースの保守作業を行っています。特定のテーブルに 2 つのステータス列があり、それらを 1 つのビットマスク列に変換したいと考えています。このデータベースは、悲しいことに単体テストでカバーされていないデータ操作にさまざまなストアド プロシージャを使用します。
このテーブルがストアド プロシージャによってクエリ内で使用されているかどうかを確認する方法はありますか? \df+
内部のスイッチを使用して、各プロシージャの本体を手動で処理することは別としてpsql
。
残念ながらありません。plpgsql 関数の本体は、呼び出し時に保存および実行される単なる文字列です。関数を作成すると、表面的な構文チェックのみが実行されます。
時々これは祝福です。それ以外の場合は、呪いです。
このような場合に私が行うこと: スキーマをダンプし、ダンプを vim (または grep または選択したツール) で検索します。
pg_dump $DB -p $PORT -s -f filename.pgsql
すべての関数が特定のスキーマに存在する場合 (同じ単語でも別の意味です!)、以下を追加します。-n $SCHEMA