Możesz to zrobić w domu, wykonując LOCK
na stole, konfigurując swoje transakcje, a następnie zwalniając blokadę, cofając transakcję, która została zablokowana. Zobacz tę poprzednią odpowiedź
i jego linki, aby uzyskać szczegółowe informacje na temat tego podejścia. Podczas gdy zademonstrowałem to za pomocą trzech psql
sesje równie opłacalne jest robienie tego za pomocą koprocesów bash, skryptu Pythona używającego psycopg2
i wieloprzetwarzanie
lub wątkowość
moduły itp. Dość proste do zrobienia. Aktualizuj :W rzeczywistości oto przykład, który właśnie napisałem w python3 .
Dla bardziej zaawansowanych testów, pobierz kod źródłowy PostgreSQL i użyj narzędzia "isolationtester" w src/test/isolation
co pozwala pisać przepisy, które wykonują złożone porządkowanie poleceń. Nie obsługuje kompilacji z PGXS
(chociaż takie wsparcie byłoby prawdopodobnie dość trywialne do dodania), więc musisz skompilować całe drzewo źródłowe PostgreSQL, ale to wystarczająco szybkie. Będzie działać z istniejącym PostgreSQL, więc nie ma potrzeby instalowania tego, który skompilowałeś.
Zobacz src/test/isolation/README
aby dowiedzieć się więcej o narzędziu tester izolacji. Dokumentacja jest trochę cienka, ponieważ jest to wewnętrzne narzędzie testowe, ale istniejące przypadki testowe powinny pomóc Ci zacząć. Możesz go ulepszyć, aby spełnić Twoje potrzeby i przesłać poprawki :)