mySQL 5.0.11 sources for tomato
[tomato.git] / release / src / router / mysql / storage / innodb_plugin / include / row0purge.h
blobef13fe61579d442969bef1a76db8dd1dbcccd366
1 /*****************************************************************************
3 Copyright (c) 1997, 2009, Innobase Oy. All Rights Reserved.
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.
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.
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.,
15 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17 *****************************************************************************/
19 /**************************************************//**
20 @file include/row0purge.h
21 Purge obsolete records
23 Created 3/14/1997 Heikki Tuuri
24 *******************************************************/
26 #ifndef row0purge_h
27 #define row0purge_h
29 #include "univ.i"
30 #include "data0data.h"
31 #include "btr0types.h"
32 #include "btr0pcur.h"
33 #include "dict0types.h"
34 #include "trx0types.h"
35 #include "que0types.h"
36 #include "row0types.h"
38 /********************************************************************//**
39 Creates a purge node to a query graph.
40 @return own: purge node */
41 UNIV_INTERN
42 purge_node_t*
43 row_purge_node_create(
44 /*==================*/
45 que_thr_t* parent, /*!< in: parent node, i.e., a thr node */
46 mem_heap_t* heap); /*!< in: memory heap where created */
47 /***********************************************************//**
48 Does the purge operation for a single undo log record. This is a high-level
49 function used in an SQL execution graph.
50 @return query thread to run next or NULL */
51 UNIV_INTERN
52 que_thr_t*
53 row_purge_step(
54 /*===========*/
55 que_thr_t* thr); /*!< in: query thread */
57 /* Purge node structure */
59 struct purge_node_struct{
60 que_common_t common; /*!< node type: QUE_NODE_PURGE */
61 /*----------------------*/
62 /* Local storage for this graph node */
63 roll_ptr_t roll_ptr;/* roll pointer to undo log record */
64 trx_undo_rec_t* undo_rec;/* undo log record */
65 trx_undo_inf_t* reservation;/* reservation for the undo log record in
66 the purge array */
67 undo_no_t undo_no;/* undo number of the record */
68 ulint rec_type;/* undo log record type: TRX_UNDO_INSERT_REC,
69 ... */
70 btr_pcur_t pcur; /*!< persistent cursor used in searching the
71 clustered index record */
72 ibool found_clust;/* TRUE if the clustered index record
73 determined by ref was found in the clustered
74 index, and we were able to position pcur on
75 it */
76 dict_table_t* table; /*!< table where purge is done */
77 ulint cmpl_info;/* compiler analysis info of an update */
78 upd_t* update; /*!< update vector for a clustered index
79 record */
80 dtuple_t* ref; /*!< NULL, or row reference to the next row to
81 handle */
82 dtuple_t* row; /*!< NULL, or a copy (also fields copied to
83 heap) of the indexed fields of the row to
84 handle */
85 dict_index_t* index; /*!< NULL, or the next index whose record should
86 be handled */
87 mem_heap_t* heap; /*!< memory heap used as auxiliary storage for
88 row; this must be emptied after a successful
89 purge of a row */
92 #ifndef UNIV_NONINL
93 #include "row0purge.ic"
94 #endif
96 #endif