В Postgres, как получить список текущей определенной точки сохранения?

Я использую postgres SAVEPOINT , которые создают новую точку сохранения в текущей транзакции , и хотел бы отобразить список текущей заданной точки сохранения в соединении.

Чтобы быть более точным: я хотел бы проверить, какое имя НЕ будет запускать ошибку «нет такой точки сохранения» в соединении.

11 голосов | спросил vaab 2 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 02 Sep 2014 13:49:44 +0400 2014, 13:49:44

1 ответ


6

Интересный вопрос! Короткий ответ: нет .

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

Теперь, если вы были смелы и отчаянно пытались создать список определенных точек сохранения с серверной стороны (в отличие от того, что ваш клиент помнит ...), вы можете добавить вспомогательную функцию к xact.c, чтобы будет отображать эту информацию для вас. Фактически, вот только такой патч . Это очень грубый патч только для иллюстративных целей, и просто вызывает имена точек сохранения, он должен действительно возвращать эти имена как набор текста.

Что касается того, почему эта функция отсутствует, я предполагаю, что просто нет правдоподобного варианта использования для клиента, который должен получить список определенных точек сохранения с сервера. Что клиент сделал бы с этим списком - просто выберите один случайным образом и ROLLBACK к нему? ROLLBACK до последнего вслепую? Точки сохранения AFAICT полезны только в том случае, если клиент помнит, какие точки сохранения он определил и где они были, чтобы иметь возможность использовать их.

ответил Josh Kupershmidt 13 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 13 Sep 2014 02:47:04 +0400 2014, 02:47:04

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132