web-dev-qa-db-fra.com

À Postgres, comment obtenir une liste de points de sauvegarde définis en cours?

J'utilise Postgres [~ # ~] sauvegarde) [~ # ~ ~] qui crée un nouveau point de sauvegarde dans la transaction en cours et souhaitez afficher la liste du point de sauvegarde actuellement défini dans une connexion.

Pour être plus précis: j'aimerais vérifier quel nom ne déclencherait pas l'erreur "Aucun de ce point de sauvegarde" dans une connexion.

13
vaab

Question interessante! Réponse courte: Non.

Réponse longue: Il n'existe pas de manière existante pour obtenir une liste de points de sauvegarde définie. Pire encore, il ne semble pas possible de créer une extension PostgreSQL qui vous permettrait de le faire: regarder SRC/Backend/Access/transam/xact.c , vous pouvez voir que les fonctions telles que RollBackTosavePoint ( Ce que "non de ce type de sauvegarde" "message d'erreur que vous avez mentionné provient de) s'appuie sur la variable courantTransactionState, qui est déclarée statique à Xact.c, c'est-à-dire ne serait pas visible à l'échelle mondiale au code de poste.

Maintenant, si vous avez osé et désespérément désespéré de générer une liste de points de sauvegarde définis du côté serveur (par opposition à juste avoir simplement votre client, souvenez-vous ...), vous pouvez ajouter une fonction d'assistance à Xact.chani qui afficherait cette informations pour vous. En fait, voici simplement un tel patch . C'est un patch très rugueux à des fins d'illustration uniquement et il suffit d'élire les noms de sauvegarde, il devrait vraiment renvoyer ces noms comme SETOF SMS.

En ce qui concerne la raison pour laquelle cette fonctionnalité est manquante, je suppose qu'il n'existe tout simplement pas de cas d'utilisation plausible pour un client qui a besoin d'une liste de points de sauvegarde définis à partir du serveur. Que ferait le client avec cette liste - il suffit de choisir un au hasard et ROLLBACK à cela? ROLLBACK au dernier aveugle? Les points de sauvegarde Afaict ne sont utiles que si un client se souvient des points de sauvegarde qu'il a définis et où ils devaient être en mesure de les utiliser.

8
Josh Kupershmidt