Vous pouvez homebrew ceci en prenant un LOCK
sur une table, en configurant vos transactions, puis en libérant le verrou en annulant la transaction qui a obtenu le verrou. Voir cette réponse précédente
et ses liens pour plus de détails sur cette approche. Alors que je l'ai démontré en utilisant trois psql
sessions, il est également viable de le faire avec des co-processus bash, un script Python utilisant psycopg2
et le multiprocessing
ou threading
modules, etc. Assez simple à faire. Mettre à jour :En fait voici un exemple que je viens d'écrire en python3 .
Pour des tests plus sophistiqués, récupérez le code source PostgreSQL et utilisez l'outil "isolationtester" dans src/test/isolation
qui vous permet d'écrire des recettes qui effectuent des commandes complexes de commandes. Il ne prend pas en charge la construction avec PGXS
(bien qu'un tel support serait probablement assez simple à ajouter) vous devez donc compiler l'ensemble de l'arbre source de PostgreSQL, mais c'est assez rapide. Il s'exécutera sur votre PostgreSQL existant, il n'est donc pas nécessaire d'installer celui que vous avez compilé.
Voir src/test/isolation/README
pour en savoir plus sur l'outil isolationtester. La documentation est un peu mince sur le terrain puisqu'il s'agit d'un outil de test interne, mais les cas de test existants devraient vous aider à démarrer. N'hésitez pas à l'améliorer pour répondre à vos besoins et soumettre des correctifs :)