![]()  | 
  
    MySQL 8.0.44
    
   Source Code Documentation 
   | 
 
This class abstracts some functionality used by XA statements involved in the second phase of the the XA two-phase commit, specifically, XA COMMIT and XA ROLLBACK SQL statements.  
 More...
#include <sql_xa_second_phase.h>
Public Member Functions | |
| Sql_cmd_xa_second_phase (xid_t *xid_arg) | |
| Class constructor.  More... | |
| virtual | ~Sql_cmd_xa_second_phase () override=default | 
  Public Member Functions inherited from Sql_cmd | |
| virtual enum_sql_command | sql_command_code () const =0 | 
| Return the command code for this statement.  More... | |
| bool | needs_explicit_preparation () const | 
| bool | is_regular () const | 
| bool | is_prepared () const | 
| virtual bool | prepare (THD *) | 
| Prepare this SQL statement.  More... | |
| virtual bool | execute (THD *thd)=0 | 
| Execute this SQL statement.  More... | |
| virtual bool | reprepare_on_execute_required () const | 
| Some SQL commands currently require re-preparation on re-execution of a prepared statement or stored procedure.  More... | |
| virtual void | cleanup (THD *) | 
| Command-specific reinitialization before execution of prepared statement.  More... | |
| void | set_owner (Prepared_statement *stmt) | 
| Set the owning prepared statement.  More... | |
| Prepared_statement * | owner () const | 
| Get the owning prepared statement.  More... | |
| void | set_as_part_of_sp () | 
| Mark statement as part of procedure.  More... | |
| bool | is_part_of_sp () const | 
| virtual bool | is_dml () const | 
| virtual bool | is_single_table_plan () const | 
| virtual bool | accept (THD *, Select_lex_visitor *) | 
| virtual const MYSQL_LEX_CSTRING * | eligible_secondary_storage_engine () const | 
| Is this statement of a type and on a form that makes it eligible for execution in a secondary storage engine?  More... | |
| void | disable_secondary_storage_engine () | 
| Disable use of secondary storage engines in this statement.  More... | |
| bool | secondary_storage_engine_disabled () const | 
| Has use of secondary storage engines been disabled for this statement?  More... | |
| void | use_secondary_storage_engine (const handlerton *hton) | 
| Mark the current statement as using a secondary storage engine.  More... | |
| bool | using_secondary_storage_engine () const | 
| Is this statement using a secondary storage engine?  More... | |
| const handlerton * | secondary_engine () const | 
| Get the handlerton of the secondary engine that is used for executing this statement, or nullptr if a secondary engine is not used.  More... | |
| void | set_optional_transform_prepared (bool value) | 
| bool | is_optional_transform_prepared () | 
Protected Member Functions | |
| bool | find_and_initialize_xa_context (THD *thd) | 
Tries to find and initialize the Transaction_ctx for the underlying detached XA transaction.  More... | |
| bool | acquire_locks (THD *thd) | 
| Tries to acquire the locks necessary to finalize the underlying detached XA transaction.  More... | |
| void | release_locks () const | 
Release any locks acquires in acquire_locks still needing to be released.  More... | |
| void | setup_thd_context (THD *thd) | 
Initializes the necessary parts of the thd parameter, transferring some of the detached XA transaction context to the active session.  More... | |
| bool | enter_commit_order (THD *thd) | 
| For replica applier threads, enters the wait on the commit order.  More... | |
| void | assign_xid_to_thd (THD *thd) const | 
| Sets the XID_STATE of the THD session object parameter as in detached state and copies into it the XID of the detached XA transaction.  More... | |
| void | exit_commit_order (THD *thd) const | 
| For replica applier threads, finishes the wait on the commit order and allows other threads to proceed.  More... | |
| void | cleanup_context (THD *thd) const | 
| Cleans up the THD context in order to prepare it for re-use.  More... | |
| void | dispose () | 
Disposes of member variables that need it, because destructors for Sql_cmd classes aren't invoked (since they are created in the internal memory pool, memory is disposed as a all block).  More... | |
  Protected Member Functions inherited from Sql_cmd | |
| Sql_cmd () | |
| virtual | ~Sql_cmd () | 
| void | set_prepared () | 
| Set this statement as prepared.  More... | |
Protected Attributes | |
| xid_t * | m_xid {nullptr} | 
| The XID associated with the underlying XA transaction.  More... | |
| MDL_savepoint | m_mdl_savepoint | 
| The MDL savepoint used to rollback the MDL context when transient errors occur.  More... | |
| std::shared_ptr< Transaction_ctx > | m_detached_trx_context {nullptr} | 
| The detached transaction context, retrieved from the transaction cache.  More... | |
| bool | m_gtid_error {false} | 
| Whether or not the initialization of GTIDs returned an error.  More... | |
| bool | m_need_clear_owned_gtid {false} | 
| Whether or not the OWNED_GTID related structures need to be cleaned.  More... | |
| bool | m_result {false} | 
| The incremental success of the several initialization and deinitialization steps.  More... | |
This class abstracts some functionality used by XA statements involved in the second phase of the the XA two-phase commit, specifically, XA COMMIT and XA ROLLBACK SQL statements. 
Common usage of the available methods target the process of detached XA transactions, code pattern looks like:
bool Sql_cmd_xa_statement::process_detached_xa_statement(THD *thd) {
  DBUG_TRACE;
  if (this->find_and_initialize_xa_context(thd)) return true;
  if (this->acquire_locks(thd)) return true;
  raii::Sentry<> xa_lock_guard{
      [this]() -> void { this->release_locks(); }};
  this->setup_thd_context(thd);
  if (this->enter_commit_order(thd)) return true;
  this->assign_xid_to_thd(thd);
SPECIFIC STATEMENT EXECUTION HERE this->m_result = exec_statement(thd);
this->exit_commit_order(thd); this->cleanup_context(thd);
return this->m_result; }
| Sql_cmd_xa_second_phase::Sql_cmd_xa_second_phase | ( | xid_t * | xid_arg | ) | 
Class constructor.
| xid_arg | XID of the XA transacation about to be committed | 
      
  | 
  overridevirtualdefault | 
      
  | 
  protected | 
Tries to acquire the locks necessary to finalize the underlying detached XA transaction.
By function exit, all locks have been acquired or none.
Execution is as follows:
| thd | The THD session object used to process the detached XA transaction. | 
      
  | 
  protected | 
Sets the XID_STATE of the THD session object parameter as in detached state and copies into it the XID of the detached XA transaction.
| thd | The THD session object used to process the detached XA transaction. | 
      
  | 
  protected | 
Cleans up the THD context in order to prepare it for re-use.
Execution is as follows:
| thd | The THD session object used to process the detached XA transaction. | 
      
  | 
  protected | 
Disposes of member variables that need it, because destructors for Sql_cmd classes aren't invoked (since they are created in the internal memory pool, memory is disposed as a all block). 
      
  | 
  protected | 
For replica applier threads, enters the wait on the commit order.
Execution is as follows:
| thd | The THD session object used to process the detached XA transaction. | 
      
  | 
  protected | 
For replica applier threads, finishes the wait on the commit order and allows other threads to proceed.
| thd | The THD session object used to process the detached XA transaction. | 
      
  | 
  protected | 
Tries to find and initialize the Transaction_ctx for the underlying detached XA transaction. 
Execution is as follows:
| thd | The THD session object used to process the detached XA transaction. | 
      
  | 
  protected | 
Release any locks acquires in acquire_locks still needing to be released. 
      
  | 
  protected | 
Initializes the necessary parts of the thd parameter, transferring some of the detached XA transaction context to the active session. 
This is necessary to use other parts of the infra-structure that rely on having the active THD session properly initialized.
Execution is as follows:
| thd | The THD session object used to process the detached XA transaction. | 
      
  | 
  protected | 
The detached transaction context, retrieved from the transaction cache.
      
  | 
  protected | 
Whether or not the initialization of GTIDs returned an error.
      
  | 
  protected | 
The MDL savepoint used to rollback the MDL context when transient errors occur.
      
  | 
  protected | 
Whether or not the OWNED_GTID related structures need to be cleaned.
      
  | 
  protected | 
The incremental success of the several initialization and deinitialization steps.
Is mainly used to steer some of the deinitialization calls
The XID associated with the underlying XA transaction.