K tomu dotazu:
1) vycerpani pameti, nejaka vyjimka, atd. pocas transakce: Tucniak obsahuje implementaci CSEH (cleanup stack structured exception handling), takze kdyz mam otevrenou transakci a neco se stane, mam handler, ktery ji uzavre (teda zatim ne, ale budu, kdyz bude hotov aspon zakladni libtucniak a budu mit trochu casu se na to podivat).
2) segfault uprostred transakce
No, tohle nevim. V prvni rade by se nic takoveho stat nemelo. Kdyz se stane, mame nasledujici stav: Zamknuty radek, mozna neuplna data. Ten zamknuty radek je problem, ale tucniak by mel bez vetsich problemu akceptovat mirne rozsypanou db (myslim neexistujici reference a podobne, a nic horsiho by se nejspis pri padu stat nemelo). Krom toho ten sigsegv muze dostat i db server, a to je ponekud horsi situace :).
Mozne reseni by bylo pouzit transakci (MySQL-max, PostgreSQL, ...) nebo timestamp a expiraci zamku.
Minimalne ja chci, aby tucniak umoznoval beh i s netransakcni databazi, pripadna podpora transakci by mela byt v databazove zavislem modulu. Neco jako M (cnt, lock, ...) by zamklo radek a otevrelo transakci, M (cnt, unlock, ...) by radek odemklo a zavrelo transakci. Jenze to znamena i nekolik hodin otevrenou transakci, co nepovazuji za prave dobry napad. Jine navrhy? Rad se necham poucit...