Pertanyaan menarik! Jawaban singkat: tidak .
Jawaban panjang: tampaknya tidak ada cara yang ada untuk mendapatkan daftar savepoint yang ditentukan. Lebih buruk lagi, tampaknya tidak mungkin untuk membuat ekstensi PostgreSQL yang akan membiarkan Anda melakukan ini: melihat src / backend / access / transam / xact.c , Anda dapat melihat bahwa fungsi-fungsi seperti RollbackToSavepoint (di situlah "tidak seperti itu" savepoint "pesan kesalahan yang Anda sebutkan berasal) bergantung pada variabel CurrentTransactionState, yang dinyatakan statis untuk xact.c, yaitu tidak akan terlihat secara global ke kode ekstensi.
Sekarang, jika Anda berani dan sangat ingin membuat daftar savepoints yang ditentukan dari sisi server (bukan hanya mengingat klien Anda ...), Anda bisa menambahkan fungsi pembantu ke xact.c yang akan menampilkan ini informasi untuk Anda. Bahkan, di sini hanya tambalan seperti itu . Itu tambalan yang sangat kasar untuk tujuan ilustrasi saja, dan hanya elogs nama savepoint, itu harus benar-benar mengembalikan nama-nama tersebut sebagai setof teks.
Mengenai mengapa fitur ini hilang, saya menduga bahwa tidak ada use case yang masuk akal untuk klien yang perlu mengambil daftar savepoints yang ditentukan dari server. Apa yang akan dilakukan klien dengan daftar ini - cukup pilih satu saja dan secara acak ROLLBACK
? ROLLBACK
ke yang terakhir secara membabi buta? Savepoints AFAICT hanya berguna jika klien mengingat apa yang telah didefinisikan savepoint dan di mana mereka berada untuk dapat memanfaatkannya.