00001 /***************************************************************************** 00002 00003 Copyright (C) 1997, 2009, Innobase Oy. All Rights Reserved. 00004 00005 This program is free software; you can redistribute it and/or modify it under 00006 the terms of the GNU General Public License as published by the Free Software 00007 Foundation; version 2 of the License. 00008 00009 This program is distributed in the hope that it will be useful, but WITHOUT 00010 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 00011 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 00012 00013 You should have received a copy of the GNU General Public License along with 00014 this program; if not, write to the Free Software Foundation, Inc., 51 Franklin 00015 St, Fifth Floor, Boston, MA 02110-1301 USA 00016 00017 *****************************************************************************/ 00018 00019 /**************************************************/ 00026 #pragma once 00027 #ifndef row0purge_h 00028 #define row0purge_h 00029 00030 #include "univ.i" 00031 #include "data0data.h" 00032 #include "btr0types.h" 00033 #include "btr0pcur.h" 00034 #include "dict0types.h" 00035 #include "trx0types.h" 00036 #include "que0types.h" 00037 #include "row0types.h" 00038 00039 /********************************************************************/ 00042 UNIV_INTERN 00043 purge_node_t* 00044 row_purge_node_create( 00045 /*==================*/ 00046 que_thr_t* parent, 00047 mem_heap_t* heap); 00048 /***********************************************************/ 00063 UNIV_INTERN 00064 ibool 00065 row_purge_poss_sec( 00066 /*===============*/ 00067 purge_node_t* node, 00068 dict_index_t* index, 00069 const dtuple_t* entry); 00070 /*************************************************************** 00071 Does the purge operation for a single undo log record. This is a high-level 00072 function used in an SQL execution graph. 00073 @return query thread to run next or NULL */ 00074 UNIV_INTERN 00075 que_thr_t* 00076 row_purge_step( 00077 /*===========*/ 00078 que_thr_t* thr); 00080 /* Purge node structure */ 00081 00082 struct purge_node_struct{ 00083 que_common_t common; 00084 /*----------------------*/ 00085 /* Local storage for this graph node */ 00086 roll_ptr_t roll_ptr;/* roll pointer to undo log record */ 00087 trx_undo_rec_t* undo_rec;/* undo log record */ 00088 trx_undo_inf_t* reservation;/* reservation for the undo log record in 00089 the purge array */ 00090 undo_no_t undo_no;/* undo number of the record */ 00091 ulint rec_type;/* undo log record type: TRX_UNDO_INSERT_REC, 00092 ... */ 00093 btr_pcur_t pcur; 00095 ibool found_clust;/* TRUE if the clustered index record 00096 determined by ref was found in the clustered 00097 index, and we were able to position pcur on 00098 it */ 00099 dict_table_t* table; 00100 ulint cmpl_info;/* compiler analysis info of an update */ 00101 upd_t* update; 00103 dtuple_t* ref; 00105 dtuple_t* row; 00108 dict_index_t* index; 00110 mem_heap_t* heap; 00113 }; 00114 00115 #ifndef UNIV_NONINL 00116 #include "row0purge.ic" 00117 #endif 00118 00119 #endif