~vlad-lesin/percona-server/mysql-5.0.33-original

« back to all changes in this revision

Viewing changes to innobase/include/trx0trx.ic

  • Committer: Vlad Lesin
  • Date: 2012-07-31 09:21:34 UTC
  • Revision ID: vladislav.lesin@percona.com-20120731092134-zfodx022b7992wsi
VirginĀ 5.0.33

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
}