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 *******************************************************/
30 #include "data0data.h"
31 #include "btr0types.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 */
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 */
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
67 undo_no_t undo_no
;/* undo number of the record */
68 ulint rec_type
;/* undo log record type: TRX_UNDO_INSERT_REC,
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
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
80 dtuple_t
* ref
; /*!< NULL, or row reference to the next row to
82 dtuple_t
* row
; /*!< NULL, or a copy (also fields copied to
83 heap) of the indexed fields of the row to
85 dict_index_t
* index
; /*!< NULL, or the next index whose record should
87 mem_heap_t
* heap
; /*!< memory heap used as auxiliary storage for
88 row; this must be emptied after a successful
93 #include "row0purge.ic"