/****************************************************** The transaction (c) 1996 Innobase Oy Created 3/26/1996 Heikki Tuuri *******************************************************/ /***************************************************************** Starts the transaction if it is not yet started. */ UNIV_INLINE void trx_start_if_not_started( /*=====================*/ trx_t* trx) /* in: transaction */ { ut_ad(trx->conc_state != TRX_COMMITTED_IN_MEMORY); if (trx->conc_state == TRX_NOT_STARTED) { trx_start(trx, ULINT_UNDEFINED); } } /***************************************************************** Starts the transaction if it is not yet started. Assumes we have reserved the kernel mutex! */ UNIV_INLINE void trx_start_if_not_started_low( /*=========================*/ trx_t* trx) /* in: transaction */ { ut_ad(trx->conc_state != TRX_COMMITTED_IN_MEMORY); if (trx->conc_state == TRX_NOT_STARTED) { trx_start_low(trx, ULINT_UNDEFINED); } } /***************************************************************** Resets the new record lock info in a transaction struct. */ UNIV_INLINE void trx_reset_new_rec_lock_info( /*========================*/ trx_t* trx) /* in: transaction struct */ { trx->new_rec_locks[0] = NULL; trx->new_rec_locks[1] = NULL; } /***************************************************************** Registers that we have set a new record lock on an index. We only have space to store 2 indexes! If this is called to store more than 2 indexes after trx_reset_new_rec_lock_info(), then this function does nothing. */ UNIV_INLINE void trx_register_new_rec_lock( /*======================*/ trx_t* trx, /* in: transaction struct */ dict_index_t* index) /* in: trx sets a new record lock on this index */ { if (trx->new_rec_locks[0] == NULL) { trx->new_rec_locks[0] = index; return; } if (trx->new_rec_locks[0] == index) { return; } if (trx->new_rec_locks[1] != NULL) { return; } trx->new_rec_locks[1] = index; } /***************************************************************** Checks if trx has set a new record lock on an index. */ UNIV_INLINE ibool trx_new_rec_locks_contain( /*======================*/ /* out: TRUE if trx has set a new record lock on index */ trx_t* trx, /* in: transaction struct */ dict_index_t* index) /* in: index */ { return(trx->new_rec_locks[0] == index || trx->new_rec_locks[1] == index); }