回答:
興味深い質問です!短い答え:いいえ。
長い答え:定義済みのセーブポイントのリストを取得する既存の方法はないようです。さらに悪いことに、あなたがこれをやらせるだろうPostgreSQLの拡張を作成することはできていないようだ。見てのsrc /バックエンド/アクセス/のTransAM / xact.c、あなたはどこノーように」ということであるRollbackToSavepoint(のようなその機能を見ることができます「savepoint」エラーメッセージは、xact.cに対して静的であると宣言されている変数CurrentTransactionStateに依存しています。つまり、拡張コードに対してグローバルに表示されません。
さて、あなたが大胆でサーバーサイドから定義されたセーブポイントのリストを生成することを切望している場合(単にクライアントに覚えさせるのではなく...)、これを表示するヘルパー関数をxact.cに追加することができますあなたのための情報。実際、ここにそのようなパッチがあります。これは、説明のみを目的とした非常に大まかなパッチであり、セーブポイント名を単にelogsします。実際には、これらの名前をsetofテキストとして返す必要があります。
この機能が欠落している理由については、サーバーから定義済みのセーブポイントのリストを取得する必要があるクライアントにとって、もっともらしいユースケースはないと推測します。クライアントはこのリストで何をしますROLLBACK
か?ランダムに1つを選んでください。ROLLBACK
盲目的に最後まで?AFAICTセーブポイントは、クライアントが定義したセーブポイントとそれらを使用できる場所を覚えている場合にのみ役立ちます。