Puedes hacer esto en casa tomando un LOCK
en una mesa, configurando sus transacciones, luego liberando el bloqueo haciendo retroceder la transacción que obtuvo el bloqueo. Consulte esta respuesta anterior
y sus enlaces para obtener detalles sobre este enfoque. Mientras lo demostré usando tres psql
sesiones es igualmente viable hacerlo con bash co-procesos, un script de Python usando psycopg2
y el multiprocessing
o threading
módulos, etc. Bastante simple de hacer. Actualizar :De hecho aquí hay un ejemplo que acabo de escribir en python3 .
Para pruebas más sofisticadas, tome el código fuente de PostgreSQL y use la herramienta "isolationtester" en src/test/isolation
que le permite escribir recetas que hacen pedidos complejos de comandos. No es compatible con la compilación con PGXS
(aunque tal soporte probablemente sería bastante trivial de agregar), por lo que debe compilar todo el árbol fuente de PostgreSQL, pero eso es lo suficientemente rápido. Se ejecutará en su PostgreSQL existente, por lo que no es necesario instalar el que compiló.
Consulte src/test/isolation/README
para obtener más información sobre la herramienta de prueba de aislamiento. Los documentos son un poco escasos ya que es una herramienta de prueba interna, pero los casos de prueba existentes deberían ayudarlo a comenzar. Siéntase libre de mejorarlo para satisfacer sus necesidades y enviar parches :)