• unknown's avatar
    Bug #27395 OPTION_STATUS_NO_TRANS_UPDATE is not preserved at the end of SF() · 4a76ac5f
    unknown authored
    thd->options' OPTION_STATUS_NO_TRANS_UPDATE bit was not restored at the end of SF() invocation, where
    SF() modified non-ta table.
    As the result of this artifact it was not possible to detect whether there were any side-effects when
    top-level query ends. 
    If the top level query table was not modified and the bit is lost there would be no binlogging.
    
    Fixed with preserving the bit inside of thd->no_trans_update struct. The struct agregates two bool flags
    telling whether the current query and the current transaction modified any non-ta table.
    The flags stmt, all are dropped at the end of the query and the transaction.
    
    
    mysql-test/r/sp_trans.result:
      results will be changed once again after bug#23333 will be fixed.
    mysql-test/t/sp_trans.test:
      regression test added
    sql/ha_ndbcluster.cc:
      replacing thd->options' OPTION_STATUS_NO_TRANS_UPDATE bit and bool thd->no_trans_update
      with thd->no_trans_update as struct
    sql/handler.cc:
      replacing operations with thd->options' OPTION_STATUS_NO_TRANS_UPDATE bit
      with the member thd->no_trans_update.all;
      converting thd->no_trans_update into struct of bools.
    sql/log.cc:
      replacing operations with thd->options' OPTION_STATUS_NO_TRANS_UPDATE bit
      with the member thd->no_trans_update.all;
      converting thd->no_trans_update into struct of bools.
    sql/set_var.cc:
      replacing operations with thd->options' OPTION_STATUS_NO_TRANS_UPDATE bit
      with the member thd->no_trans_update.all;
      converting thd->no_trans_update into struct of bools.
    sql/sp_head.cc:
      replacing operations with thd->options' OPTION_STATUS_NO_TRANS_UPDATE bit
      with the member thd->no_trans_update.all;
      converting thd->no_trans_update into struct of bools.
    sql/sql_class.h:
      replacing operations with thd->options' OPTION_STATUS_NO_TRANS_UPDATE bit
      with the member thd->no_trans_update.all;
      converting thd->no_trans_update into struct of bools.
    sql/sql_delete.cc:
      replacing operations with thd->options' OPTION_STATUS_NO_TRANS_UPDATE bit
      with the member thd->no_trans_update.all;
      converting thd->no_trans_update into struct of bools.
    sql/sql_insert.cc:
      replacing operations with thd->options' OPTION_STATUS_NO_TRANS_UPDATE bit
      with the member thd->no_trans_update.all;
      converting thd->no_trans_update into struct of bools.
    sql/sql_load.cc:
      replacing operations with thd->options' OPTION_STATUS_NO_TRANS_UPDATE bit
      with the member thd->no_trans_update.all;
      converting thd->no_trans_update into struct of bools.
    sql/sql_parse.cc:
      replacing operations with thd->options' OPTION_STATUS_NO_TRANS_UPDATE bit
      with the member thd->no_trans_update.all;
      converting thd->no_trans_update into struct of bools.
    sql/sql_table.cc:
      replacing operations with thd->options' OPTION_STATUS_NO_TRANS_UPDATE bit
      with the member thd->no_trans_update.all;
      converting thd->no_trans_update into struct of bools.
    sql/sql_update.cc:
      replacing operations with thd->options' OPTION_STATUS_NO_TRANS_UPDATE bit
      with the member thd->no_trans_update.all;
      converting thd->no_trans_update into struct of bools.
    4a76ac5f
sql_update.cc 45.2 KB