mirror of
https://github.com/MariaDB/server.git
synced 2025-01-23 07:14:17 +01:00
e49dee377b
This patch was created by running the following commands: for i in */*[ch]; do doxygenify.pl $i; done perl -i -pe 's#\*{3} \*/$#****/#' */*[ch] where doxygenify.pl is https://svn.innodb.com/svn/misc/trunk/tools/doxygenify.pl r510 Verified the consistency as follows: (0) not too many /* in: */ or /* out: */ comments left in the code: grep -l '/\*\s*\(in\|out\)[,:/]' */*[ch] (1) no difference when ignoring blank lines, after stripping all C90-style /* comments */, including multi-line ones, before and after applying this patch: perl -i -e 'undef $/;while(<ARGV>){s#/\*(.*?)\*/##gs;print}' */*[ch] diff -I'^\s*$' --exclude .svn -ru TREE1 TREE2 (2) after stripping @return comments and !<, generated a diff and omitted the hunks where /* out: */ function return comments were removed: perl -i -e'undef $/;while(<ARGV>){s#!<##g;s#\n\@return\t.*?\*/# \*/#gs;print}'\ */*[ch] svn diff| perl -e 'undef $/;$_=<>;s#\n-\s*/\* out[:,]([^\n]*?)(\n-[^\n]*?)*\*/##gs;print' Some unintended changes were left. These will be removed in a subsequent patch.
163 lines
4.3 KiB
Text
163 lines
4.3 KiB
Text
/*****************************************************************************
|
|
|
|
Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
|
|
|
|
This program is free software; you can redistribute it and/or modify it under
|
|
the terms of the GNU General Public License as published by the Free Software
|
|
Foundation; version 2 of the License.
|
|
|
|
This program is distributed in the hope that it will be useful, but WITHOUT
|
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License along with
|
|
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
|
Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
|
*****************************************************************************/
|
|
|
|
/******************************************************
|
|
The transaction
|
|
|
|
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);
|
|
}
|
|
}
|
|
|
|
/********************************************************************
|
|
Retrieves the error_info field from a trx.
|
|
@return the error info */
|
|
UNIV_INLINE
|
|
const dict_index_t*
|
|
trx_get_error_info(
|
|
/*===============*/
|
|
const trx_t* trx) /*!< in: trx object */
|
|
{
|
|
return(trx->error_info);
|
|
}
|
|
|
|
/***********************************************************************
|
|
Retrieves transacion's id, represented as unsigned long long.
|
|
@return transaction's id */
|
|
UNIV_INLINE
|
|
ullint
|
|
trx_get_id(
|
|
/*=======*/
|
|
const trx_t* trx) /*!< in: transaction */
|
|
{
|
|
return((ullint)ut_conv_dulint_to_longlong(trx->id));
|
|
}
|
|
|
|
/***********************************************************************
|
|
Retrieves transaction's que state in a human readable string. The string
|
|
should not be free()'d or modified.
|
|
@return string in the data segment */
|
|
UNIV_INLINE
|
|
const char*
|
|
trx_get_que_state_str(
|
|
/*==================*/
|
|
const trx_t* trx) /*!< in: transaction */
|
|
{
|
|
/* be sure to adjust TRX_QUE_STATE_STR_MAX_LEN if you change this */
|
|
switch (trx->que_state) {
|
|
case TRX_QUE_RUNNING:
|
|
return("RUNNING");
|
|
case TRX_QUE_LOCK_WAIT:
|
|
return("LOCK WAIT");
|
|
case TRX_QUE_ROLLING_BACK:
|
|
return("ROLLING BACK");
|
|
case TRX_QUE_COMMITTING:
|
|
return("COMMITTING");
|
|
default:
|
|
return("UNKNOWN");
|
|
}
|
|
}
|
|
|
|
/**************************************************************************
|
|
Determine if a transaction is a dictionary operation.
|
|
@return dictionary operation mode */
|
|
UNIV_INLINE
|
|
enum trx_dict_op
|
|
trx_get_dict_operation(
|
|
/*===================*/
|
|
const trx_t* trx) /*!< in: transaction */
|
|
{
|
|
enum trx_dict_op op = (enum trx_dict_op) trx->dict_operation;
|
|
|
|
#ifdef UNIV_DEBUG
|
|
switch (op) {
|
|
case TRX_DICT_OP_NONE:
|
|
case TRX_DICT_OP_TABLE:
|
|
case TRX_DICT_OP_INDEX:
|
|
return(op);
|
|
}
|
|
ut_error;
|
|
#endif /* UNIV_DEBUG */
|
|
return((enum trx_dict_op) UNIV_EXPECT(op, TRX_DICT_OP_NONE));
|
|
}
|
|
/**************************************************************************
|
|
Flag a transaction a dictionary operation. */
|
|
UNIV_INLINE
|
|
void
|
|
trx_set_dict_operation(
|
|
/*===================*/
|
|
trx_t* trx, /*!< in/out: transaction */
|
|
enum trx_dict_op op) /*!< in: operation, not
|
|
TRX_DICT_OP_NONE */
|
|
{
|
|
#ifdef UNIV_DEBUG
|
|
enum trx_dict_op old_op = trx_get_dict_operation(trx);
|
|
|
|
switch (op) {
|
|
case TRX_DICT_OP_NONE:
|
|
ut_error;
|
|
break;
|
|
case TRX_DICT_OP_TABLE:
|
|
switch (old_op) {
|
|
case TRX_DICT_OP_NONE:
|
|
case TRX_DICT_OP_INDEX:
|
|
case TRX_DICT_OP_TABLE:
|
|
goto ok;
|
|
}
|
|
ut_error;
|
|
break;
|
|
case TRX_DICT_OP_INDEX:
|
|
ut_ad(old_op == TRX_DICT_OP_NONE);
|
|
break;
|
|
}
|
|
ok:
|
|
#endif /* UNIV_DEBUG */
|
|
|
|
trx->dict_operation = op;
|
|
}
|