Цікаве запитання! Коротка відповідь: ні .
Довга відповідь: не існує жодного існуючого способу визначення списку точок збереження. Ще гірше, здається, що неможливо створити розширення PostgreSQL, яке дозволило б вам це зробити: переглядаючи src / backend / access / transam / xact.c , ви можете побачити такі функції, як RollbackToSavepoint (саме там, де "немає такого savepoint "повідомлення про помилку, про яке ви згадали) покладається на змінну CurrentTransactionState, яка оголошена статичною для xact.c, тобто не була б видима глобально коду розширення.
Тепер, якщо ви були сміливими і дуже відчайдушно створювали список визначених точок збереження з боку сервера (на відміну від того, щоб ваш клієнт пам'ятав ...), ви можете додати допоміжну функцію до xact.c, яка відображатиме це інформація для вас. Насправді ось такий патч . Це дуже брутальний патч лише для ілюстрації, і він просто реєструє імена точок збереження, він справді повинен повертати ці імена як текст тексту.
Щодо того, чому ця функція відсутня, я вважаю, що просто не існує правдоподібного випадку використання для клієнта, який потребує отримання списку визначених точок збереження з сервера. Що б клієнт робив із цим списком - просто обрав його навмання і ROLLBACK
до нього? ROLLBACK
до останнього сліпо? Точки збереження AFAICT корисні лише в тому випадку, якщо клієнт пам’ятає, які точки збереження він визначив і де вони були, щоб мати можливість їх використовувати.