Интересный вопрос! Краткий ответ: нет .
Длинный ответ: кажется, что не существует никакого существующего способа получить список определенных точек сохранения. Хуже того, кажется невозможным создать расширение PostgreSQL, которое позволило бы вам сделать это: глядя на src / backend / access / transam / xact.c , вы можете увидеть, что такие функции, как RollbackToSavepoint (где это «нет такого»). сообщение об ошибке «точка сохранения», о котором вы упомянули, полагается на переменную CurrentTransactionState, которая объявлена статической для xact.c, т.е. не будет видна глобально для кода расширения.
Теперь, если вы осмеливались и отчаянно пытались сгенерировать список определенных точек сохранения со стороны сервера (в отличие от простого запоминания вашего клиента ...), вы могли бы добавить вспомогательную функцию в xact.c, которая бы отображала это информация для вас. На самом деле вот такой вот патч . Это очень грубое исправление только для иллюстративных целей, и оно просто выдает имена точек сохранения, оно действительно должно возвращать эти имена в виде набора текста.
Относительно того, почему эта функция отсутствует, я предполагаю, что просто нет правдоподобного варианта использования для клиента, нуждающегося в получении списка определенных точек сохранения с сервера. Что бы клиент сделал с этим списком - просто выберите один наугад и ROLLBACK
к нему? ROLLBACK
до последнего слепо? Точки сохранения AFAICT полезны только в том случае, если клиент запоминает, какие точки сохранения он определил и где они были, чтобы иметь возможность использовать их.