~drizzle-trunk/drizzle/development

1 by brian
clean slate
1
/******************************************************
2
The transaction
3
4
(c) 1996 Innobase Oy
5
6
Created 3/26/1996 Heikki Tuuri
7
*******************************************************/
8
9
/*****************************************************************
10
Starts the transaction if it is not yet started. */
11
UNIV_INLINE
12
void
13
trx_start_if_not_started(
14
/*=====================*/
15
	trx_t*	trx)	/* in: transaction */
16
{
17
	ut_ad(trx->conc_state != TRX_COMMITTED_IN_MEMORY);
18
19
	if (trx->conc_state == TRX_NOT_STARTED) {
20
21
		trx_start(trx, ULINT_UNDEFINED);
22
	}
23
}
24
25
/*****************************************************************
26
Starts the transaction if it is not yet started. Assumes we have reserved
27
the kernel mutex! */
28
UNIV_INLINE
29
void
30
trx_start_if_not_started_low(
31
/*=========================*/
32
	trx_t*	trx)	/* in: transaction */
33
{
34
	ut_ad(trx->conc_state != TRX_COMMITTED_IN_MEMORY);
35
36
	if (trx->conc_state == TRX_NOT_STARTED) {
37
38
		trx_start_low(trx, ULINT_UNDEFINED);
39
	}
40
}
41
42
/*****************************************************************
43
Resets the new record lock info in a transaction struct. */
44
UNIV_INLINE
45
void
46
trx_reset_new_rec_lock_info(
47
/*========================*/
48
	trx_t*	trx)	/* in: transaction struct */
49
{
50
	trx->new_rec_locks[0] = NULL;
51
	trx->new_rec_locks[1] = NULL;
52
}
53
54
/*****************************************************************
55
Registers that we have set a new record lock on an index. We only have space
56
to store 2 indexes! If this is called to store more than 2 indexes after
57
trx_reset_new_rec_lock_info(), then this function does nothing. */
58
UNIV_INLINE
59
void
60
trx_register_new_rec_lock(
61
/*======================*/
62
	trx_t*		trx,	/* in: transaction struct */
63
	dict_index_t*	index)	/* in: trx sets a new record lock on this
64
				index */
65
{
66
	if (trx->new_rec_locks[0] == NULL) {
67
		trx->new_rec_locks[0] = index;
68
69
		return;
70
	}
71
72
	if (trx->new_rec_locks[0] == index) {
73
74
		return;
75
	}
76
77
	if (trx->new_rec_locks[1] != NULL) {
78
79
		return;
80
	}
81
82
	trx->new_rec_locks[1] = index;
83
}
84
85
/*****************************************************************
86
Checks if trx has set a new record lock on an index. */
87
UNIV_INLINE
88
ibool
89
trx_new_rec_locks_contain(
90
/*======================*/
91
				/* out: TRUE if trx has set a new record lock
92
				on index */
93
	trx_t*		trx,	/* in: transaction struct */
94
	dict_index_t*	index)	/* in: index */
95
{
96
	return(trx->new_rec_locks[0] == index
97
	       || trx->new_rec_locks[1] == index);
98
}