• unknown's avatar
    - if table is not transactional, we don't create a transaction · e30e21f0
    unknown authored
    - 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
    e30e21f0
ma_create.c 34.9 KB