• guilhem@gbichot3.local's avatar
    Fix for BUG#11151 "LOAD DATA INFILE commits transaction in 5.0". · e4d3595b
    guilhem@gbichot3.local authored
    In 5.0 we made LOAD DATA INFILE autocommit in all engines, while
    only NDB wanted that. Users and trainers complained that it affected
    InnoDB and was a change compared to 4.1 where only NDB autocommitted.
    To revert to the behaviour of 4.1, we move the autocommit logic out of mysql_load() into
    ha_ndbcluster::external_lock().
    The result is that LOAD DATA INFILE commits all uncommitted changes
    of NDB if this is an NDB table, its own changes if this is an NDB
    table, but does not affect other engines.
    Note: even though there is no "commit the full transaction at end"
    anymore, LOAD DATA INFILE stays disabled in routines (re-entrency
    problems per a comment of Pem).
    Note: ha_ndbcluster::has_transactions() does not give reliable results
    because it says "yes" even if transactions are disabled in this engine...
    e4d3595b
sql_load.cc 35.3 KB