~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/innobase/include/lock0priv.h

  • Committer: Daniel Nichter
  • Date: 2011-10-23 16:01:37 UTC
  • mto: This revision was merged to the branch mainline in revision 2448.
  • Revision ID: daniel@percona.com-20111023160137-7ac3blgz8z4tf8za
Add Administration Getting Started and Logging.  Capitalize SQL clause keywords.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*****************************************************************************
 
2
 
 
3
Copyright (C) 2007, 2009, Innobase Oy. All Rights Reserved.
 
4
 
 
5
This program is free software; you can redistribute it and/or modify it under
 
6
the terms of the GNU General Public License as published by the Free Software
 
7
Foundation; version 2 of the License.
 
8
 
 
9
This program is distributed in the hope that it will be useful, but WITHOUT
 
10
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 
11
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
 
12
 
 
13
You should have received a copy of the GNU General Public License along with
 
14
this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
 
15
St, Fifth Floor, Boston, MA 02110-1301 USA
 
16
 
 
17
*****************************************************************************/
 
18
 
 
19
/**************************************************//**
 
20
@file include/lock0priv.h
 
21
Lock module internal structures and methods.
 
22
 
 
23
Created July 12, 2007 Vasil Dimov
 
24
*******************************************************/
 
25
 
 
26
#pragma once
 
27
#ifndef lock0priv_h
 
28
#define lock0priv_h
 
29
 
 
30
#ifndef LOCK_MODULE_IMPLEMENTATION
 
31
/* If you need to access members of the structures defined in this
 
32
file, please write appropriate functions that retrieve them and put
 
33
those functions in lock/ */
 
34
#error Do not include lock0priv.h outside of the lock/ module
 
35
#endif
 
36
 
 
37
#include "univ.i"
 
38
#include "dict0types.h"
 
39
#include "hash0hash.h"
 
40
#include "trx0types.h"
 
41
#include "ut0lst.h"
 
42
 
 
43
/** A table lock */
 
44
typedef struct lock_table_struct        lock_table_t;
 
45
/** A table lock */
 
46
struct lock_table_struct {
 
47
        dict_table_t*   table;          /*!< database table in dictionary
 
48
                                        cache */
 
49
        UT_LIST_NODE_T(lock_t)
 
50
                        locks;          /*!< list of locks on the same
 
51
                                        table */
 
52
};
 
53
 
 
54
/** Record lock for a page */
 
55
typedef struct lock_rec_struct          lock_rec_t;
 
56
/** Record lock for a page */
 
57
struct lock_rec_struct {
 
58
        ulint   space;                  /*!< space id */
 
59
        ulint   page_no;                /*!< page number */
 
60
        ulint   n_bits;                 /*!< number of bits in the lock
 
61
                                        bitmap; NOTE: the lock bitmap is
 
62
                                        placed immediately after the
 
63
                                        lock struct */
 
64
};
 
65
 
 
66
/** Lock struct */
 
67
struct lock_struct {
 
68
        trx_t*          trx;            /*!< transaction owning the
 
69
                                        lock */
 
70
        UT_LIST_NODE_T(lock_t)
 
71
                        trx_locks;      /*!< list of the locks of the
 
72
                                        transaction */
 
73
        ulint           type_mode;      /*!< lock type, mode, LOCK_GAP or
 
74
                                        LOCK_REC_NOT_GAP,
 
75
                                        LOCK_INSERT_INTENTION,
 
76
                                        wait flag, ORed */
 
77
        hash_node_t     hash;           /*!< hash chain node for a record
 
78
                                        lock */
 
79
        dict_index_t*   index;          /*!< index for a record lock */
 
80
        union {
 
81
                lock_table_t    tab_lock;/*!< table lock */
 
82
                lock_rec_t      rec_lock;/*!< record lock */
 
83
        } un_member;                    /*!< lock details */
 
84
};
 
85
 
 
86
/*********************************************************************//**
 
87
Gets the type of a lock.
 
88
@return LOCK_TABLE or LOCK_REC */
 
89
UNIV_INLINE
 
90
ulint
 
91
lock_get_type_low(
 
92
/*==============*/
 
93
        const lock_t*   lock);  /*!< in: lock */
 
94
 
 
95
/*********************************************************************//**
 
96
Gets the previous record lock set on a record.
 
97
@return previous lock on the same record, NULL if none exists */
 
98
UNIV_INTERN
 
99
const lock_t*
 
100
lock_rec_get_prev(
 
101
/*==============*/
 
102
        const lock_t*   in_lock,/*!< in: record lock */
 
103
        ulint           heap_no);/*!< in: heap number of the record */
 
104
 
 
105
#ifndef UNIV_NONINL
 
106
#include "lock0priv.ic"
 
107
#endif
 
108
 
 
109
#endif /* lock0priv_h */