~drizzle-trunk/drizzle/development

« back to all changes in this revision

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

  • Committer: Monty Taylor
  • Date: 2008-11-16 05:36:13 UTC
  • mto: (584.1.9 devel)
  • mto: This revision was merged to the branch mainline in revision 589.
  • Revision ID: monty@inaugust.com-20081116053613-bld4rqxhlkb49c02
Split out cache_row and type_holder.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*****************************************************************************
2
 
 
3
 
Copyright (C) 1997, 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/read0read.h
21
 
Cursor read
22
 
 
23
 
Created 2/16/1997 Heikki Tuuri
24
 
*******************************************************/
25
 
 
26
 
#ifndef read0read_h
27
 
#define read0read_h
28
 
 
29
 
#include "univ.i"
30
 
 
31
 
 
32
 
#include "ut0byte.h"
33
 
#include "ut0lst.h"
34
 
#include "trx0trx.h"
35
 
#include "read0types.h"
36
 
 
37
 
/*********************************************************************//**
38
 
Opens a read view where exactly the transactions serialized before this
39
 
point in time are seen in the view.
40
 
@return own: read view struct */
41
 
UNIV_INTERN
42
 
read_view_t*
43
 
read_view_open_now(
44
 
/*===============*/
45
 
        trx_id_t        cr_trx_id,      /*!< in: trx_id of creating
46
 
                                        transaction, or 0 used in purge */
47
 
        mem_heap_t*     heap);          /*!< in: memory heap from which
48
 
                                        allocated */
49
 
/*********************************************************************//**
50
 
Makes a copy of the oldest existing read view, or opens a new. The view
51
 
must be closed with ..._close.
52
 
@return own: read view struct */
53
 
UNIV_INTERN
54
 
read_view_t*
55
 
read_view_oldest_copy_or_open_new(
56
 
/*==============================*/
57
 
        trx_id_t        cr_trx_id,      /*!< in: trx_id of creating
58
 
                                        transaction, or 0 used in purge */
59
 
        mem_heap_t*     heap);          /*!< in: memory heap from which
60
 
                                        allocated */
61
 
/*********************************************************************//**
62
 
Closes a read view. */
63
 
UNIV_INTERN
64
 
void
65
 
read_view_close(
66
 
/*============*/
67
 
        read_view_t*    view);  /*!< in: read view */
68
 
/*********************************************************************//**
69
 
Closes a consistent read view for MySQL. This function is called at an SQL
70
 
statement end if the trx isolation level is <= TRX_ISO_READ_COMMITTED. */
71
 
UNIV_INTERN
72
 
void
73
 
read_view_close_for_mysql(
74
 
/*======================*/
75
 
        trx_t*  trx);   /*!< in: trx which has a read view */
76
 
/*********************************************************************//**
77
 
Checks if a read view sees the specified transaction.
78
 
@return TRUE if sees */
79
 
UNIV_INLINE
80
 
ibool
81
 
read_view_sees_trx_id(
82
 
/*==================*/
83
 
        const read_view_t*      view,   /*!< in: read view */
84
 
        trx_id_t                trx_id);/*!< in: trx id */
85
 
/*********************************************************************//**
86
 
Prints a read view to stderr. */
87
 
UNIV_INTERN
88
 
void
89
 
read_view_print(
90
 
/*============*/
91
 
        const read_view_t*      view);  /*!< in: read view */
92
 
/*********************************************************************//**
93
 
Create a consistent cursor view for mysql to be used in cursors. In this
94
 
consistent read view modifications done by the creating transaction or future
95
 
transactions are not visible. */
96
 
UNIV_INTERN
97
 
cursor_view_t*
98
 
read_cursor_view_create_for_mysql(
99
 
/*==============================*/
100
 
        trx_t*          cr_trx);/*!< in: trx where cursor view is created */
101
 
/*********************************************************************//**
102
 
Close a given consistent cursor view for mysql and restore global read view
103
 
back to a transaction read view. */
104
 
UNIV_INTERN
105
 
void
106
 
read_cursor_view_close_for_mysql(
107
 
/*=============================*/
108
 
        trx_t*          trx,            /*!< in: trx */
109
 
        cursor_view_t*  curview);       /*!< in: cursor view to be closed */
110
 
/*********************************************************************//**
111
 
This function sets a given consistent cursor view to a transaction
112
 
read view if given consistent cursor view is not NULL. Otherwise, function
113
 
restores a global read view to a transaction read view. */
114
 
UNIV_INTERN
115
 
void
116
 
read_cursor_set_for_mysql(
117
 
/*======================*/
118
 
        trx_t*          trx,    /*!< in: transaction where cursor is set */
119
 
        cursor_view_t*  curview);/*!< in: consistent cursor view to be set */
120
 
 
121
 
/** Read view lists the trx ids of those transactions for which a consistent
122
 
read should not see the modifications to the database. */
123
 
 
124
 
struct read_view_struct{
125
 
        ulint           type;   /*!< VIEW_NORMAL, VIEW_HIGH_GRANULARITY */
126
 
        undo_no_t       undo_no;/*!< 0 or if type is
127
 
                                VIEW_HIGH_GRANULARITY
128
 
                                transaction undo_no when this high-granularity
129
 
                                consistent read view was created */
130
 
        trx_id_t        low_limit_no;
131
 
                                /*!< The view does not need to see the undo
132
 
                                logs for transactions whose transaction number
133
 
                                is strictly smaller (<) than this value: they
134
 
                                can be removed in purge if not needed by other
135
 
                                views */
136
 
        trx_id_t        low_limit_id;
137
 
                                /*!< The read should not see any transaction
138
 
                                with trx id >= this value. In other words,
139
 
                                this is the "high water mark". */
140
 
        trx_id_t        up_limit_id;
141
 
                                /*!< The read should see all trx ids which
142
 
                                are strictly smaller (<) than this value.
143
 
                                In other words,
144
 
                                this is the "low water mark". */
145
 
        ulint           n_trx_ids;
146
 
                                /*!< Number of cells in the trx_ids array */
147
 
        trx_id_t*       trx_ids;/*!< Additional trx ids which the read should
148
 
                                not see: typically, these are the active
149
 
                                transactions at the time when the read is
150
 
                                serialized, except the reading transaction
151
 
                                itself; the trx ids in this array are in a
152
 
                                descending order. These trx_ids should be
153
 
                                between the "low" and "high" water marks,
154
 
                                that is, up_limit_id and low_limit_id. */
155
 
        trx_id_t        creator_trx_id;
156
 
                                /*!< trx id of creating transaction, or
157
 
                                0 used in purge */
158
 
        UT_LIST_NODE_T(read_view_t) view_list;
159
 
                                /*!< List of read views in trx_sys */
160
 
};
161
 
 
162
 
/** Read view types @{ */
163
 
#define VIEW_NORMAL             1       /*!< Normal consistent read view
164
 
                                        where transaction does not see changes
165
 
                                        made by active transactions except
166
 
                                        creating transaction. */
167
 
#define VIEW_HIGH_GRANULARITY   2       /*!< High-granularity read view where
168
 
                                        transaction does not see changes
169
 
                                        made by active transactions and own
170
 
                                        changes after a point in time when this
171
 
                                        read view was created. */
172
 
/* @} */
173
 
 
174
 
/** Implement InnoDB framework to support consistent read views in
175
 
cursors. This struct holds both heap where consistent read view
176
 
is allocated and pointer to a read view. */
177
 
 
178
 
struct cursor_view_struct{
179
 
        mem_heap_t*     heap;
180
 
                                /*!< Memory heap for the cursor view */
181
 
        read_view_t*    read_view;
182
 
                                /*!< Consistent read view of the cursor*/
183
 
};
184
 
 
185
 
#ifndef UNIV_NONINL
186
 
#include "read0read.ic"
187
 
#endif
188
 
 
189
 
#endif