Du kan hjemmebrygge dette ved at tage en LOCK
på et bord, opsætning af dine transaktioner, og frigør derefter låsen ved at rulle den transaktion tilbage, der fik låsen. Se dette tidligere svar
og dens links for detaljer om denne tilgang. Mens jeg demonstrerede det ved hjælp af tre psql
sessioner, det er lige så levedygtigt at gøre det med bash co-processer, et Python-script, der bruger psycopg2
og multiprocessing
eller threading
moduler osv. Rimelig enkel at lave. Opdater :Faktisk her er et eksempel, jeg lige har skrevet i python3 .
For mere sofistikerede test, tag PostgreSQL-kildekoden og brug "isolationtester"-værktøjet i src/test/isolation
som lader dig skrive opskrifter, der udfører komplekse rækkefølger af kommandoer. Det understøtter ikke at blive bygget med PGXS
(selvom en sådan support nok ville være ret triviel at tilføje), så du skal kompilere hele PostgreSQL-kildetræet, men det er hurtigt nok. Det kører mod din eksisterende PostgreSQL, så der er ingen grund til at installere den, du kompilerede.
Se src/test/isolation/README
for mere om isolationstestværktøjet. Dokumenterne er lidt tynde på jorden, da det er et internt testværktøj, men de eksisterende testcases burde hjælpe dig i gang. Du er velkommen til at forbedre den for at imødekomme dine behov og indsende patches :)