- if table is not transactional, we don't create a transaction
- if table is temporary it's not crash-safe so we declare it non-transactional (saves trnman calls, REDO/UNDO log writing, and fixes the assertion failure at the first line of trnman_destroy()). storage/maria/ha_maria.cc: if table is not transactional, no need to create a transaction: - it saves trnman calls (mutex locks etc) - it saves REDO and UNDO log writing - it closes a bug: if this is a temporary table, external_lock(F_RD|WRLCK) is not always paired with external_lock(F_UNLCK), which confuses the transaction logic in external_lock. As temp tables are not crash-safe and so not transactional in this Maria version, we skip transactions and de-confuse. Note that maria_lock_database(F_UNLCK) is properly called, so if the transaction logic moves from external_lock() to maria_lock_database() (probably TODO), transactional temp tables will be possible. storage/maria/ma_create.c: temporary tables cannot be crash-safe as they are dropped at restart storage/maria/maria_def.h: comment
Showing
Please register or sign in to comment