Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-20335

Extra trans_commit_stmt after rollback caused by incorrect fix of MDEV-14401

    XMLWordPrintable

    Details

      Description

      commit ba576c5b787de0b2218843d83f4524279ae7848b

        if (thd->is_error() || (thd->variables.option_bits & OPTION_MASTER_SQL_ERROR))
            trans_rollback_stmt(thd);
      #ifdef WITH_WSREP
          if (thd->spcont &&
                   (thd->wsrep_conflict_state == MUST_ABORT ||
                    thd->wsrep_conflict_state == ABORTED    ||
                    thd->wsrep_conflict_state == CERT_FAILURE))
          {
            /*
              The error was cleared, but THD was aborted by wsrep and
              wsrep_conflict_state is still set accordingly. This
              situation is expected if we are running a stored procedure
              that declares a handler that catches ER_LOCK_DEADLOCK error.
              In which case the error may have been cleared in method
              sp_rcontext::handle_sql_condition().
            */
            trans_rollback_stmt(thd);
            thd->wsrep_conflict_state= NO_CONFLICT;
            thd->killed= NOT_KILLED;
          }
      #endif /* WITH_WSREP */
          else
          {
            /* If commit fails, we should be able to reset the OK status. */
            thd->get_stmt_da()->set_overwrite_status(true);
            trans_commit_stmt(thd);
            thd->get_stmt_da()->set_overwrite_status(false);
          }
      

        Attachments

          Activity

            People

            Assignee:
            jplindst Jan Lindström
            Reporter:
            jplindst Jan Lindström
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: