Zero  0.1.0
btcursor.h
Go to the documentation of this file.
1 /*
2  * (c) Copyright 2011-2013, Hewlett-Packard Development Company, LP
3  */
4 
5 #ifndef __BTCURSOR_H
6 #define __BTCURSOR_H
7 
8 #include "w_defines.h"
9 #include "w_key.h"
10 #include "buffer_pool.hpp"
11 
12 class btree_page_h;
13 
64 class bt_cursor_t : private smlevel_0 {
65 public:
72  bt_cursor_t(StoreID store, bool forward);
73 
85  StoreID store,
86  const w_keystr_t& lower, bool lower_inclusive,
87  const w_keystr_t& upper, bool upper_inclusive,
88  bool forward);
89 
99  StoreID store,
100  const w_keystr_t& bound, bool inclusive,
101  bool forward);
102 
104  close();
105  }
106 
110  rc_t next();
111 
112  bool is_valid() const {
113  return _first_time || !_eof;
114  }
115 
116  bool is_forward() const {
117  return _forward;
118  }
119 
120  void close();
121 
122  const w_keystr_t& key() {
123  return _key;
124  }
125 
131  bool eof() {
132  return _eof;
133  }
134 
135  int elen() const {
136  return _elen;
137  }
138 
139  char* elem() {
140  return _eof ? 0 : _elbuf;
141  }
142 
143 private:
144  void _init(
145  StoreID store,
146  const w_keystr_t& lower, bool lower_inclusive,
147  const w_keystr_t& upper, bool upper_inclusive,
148  bool forward);
149 
151 
153 
154  rc_t _find_next(btree_page_h& p, bool& eof);
155 
156  void _release_current_page();
157 
158  void _set_current_page(btree_page_h& page);
159 
171 
183  rc_t _advance_one_slot(btree_page_h& p, bool& eof);
184 
188  rc_t _make_rec(const btree_page_h& page);
189 
191 
193 
195 
197 
199 
200  bool _forward;
201 
204 
205  bool _ex_lock;
206 
211 
214 
216  bool _eof;
217 
220 
223 
226 
229 
232 
235 
238 
240  char _elbuf[SM_PAGESIZE];
241 };
242 
243 #endif // __BTCURSOR_H
A cursor object to sequentially read BTree.
Definition: btcursor.h:64
void close()
Definition: btcursor.cpp:75
bool _dont_move_next
Definition: btcursor.h:210
uint32_t smsize_t
Definition: basics.h:41
bt_cursor_t(StoreID store, bool forward)
Definition: btcursor.cpp:21
pin_for_refix_holder _pid_bfidx
Definition: btcursor.h:222
slotid_t _slot
Definition: btcursor.h:225
Page handle for B-Tree data page.
Definition: btree_page_h.h:185
bool _lower_inclusive
Definition: btcursor.h:196
lsn_t _lsn
Definition: btcursor.h:228
bool _first_time
Definition: btcursor.h:213
w_rc_t _refix_current_key(btree_page_h &p)
Re-fix the page at which the cursor was on with SH mode.
Definition: btcursor.cpp:228
uint32_t StoreID
Definition: basics.h:47
Key string class which can represent a few special values.
Definition: w_key.h:47
void _set_current_page(btree_page_h &page)
Definition: btcursor.cpp:93
bool _needs_lock
Definition: btcursor.h:203
w_keystr_t _upper
Definition: btcursor.h:194
void _init(StoreID store, const w_keystr_t &lower, bool lower_inclusive, const w_keystr_t &upper, bool upper_inclusive, bool forward)
Definition: btcursor.cpp:51
PageID _pid
Definition: btcursor.h:219
const w_keystr_t & key()
Definition: btcursor.h:122
uint32_t PageID
Definition: basics.h:45
rc_t _find_next(btree_page_h &p, bool &eof)
Definition: btcursor.cpp:288
Log Sequence Number. See Log Sequence Numbers (LSN).
Definition: lsn.h:243
rc_t _advance_one_slot(btree_page_h &p, bool &eof)
Chooses next slot and potentially next page for cursor access.
Definition: btcursor.cpp:308
void _release_current_page()
Definition: btcursor.cpp:85
Return code for most functions and methods.
Definition: w_rc.h:87
~bt_cursor_t()
Definition: btcursor.h:103
smsize_t _elen
Definition: btcursor.h:237
int16_t slotid_t
Definition: basics.h:53
int elen() const
Definition: btcursor.h:135
w_keystr_t _key
Definition: btcursor.h:231
rc_t next()
Definition: btcursor.cpp:247
bool _forward
Definition: btcursor.h:200
bool _ex_lock
Definition: btcursor.h:205
bool is_forward() const
Definition: btcursor.h:116
bool is_valid() const
Definition: btcursor.h:112
bool _eof
Definition: btcursor.h:216
rc_t _locate_first()
Definition: btcursor.cpp:106
w_keystr_t _tmp_next_key_buf
Definition: btcursor.h:234
bool _upper_inclusive
Definition: btcursor.h:198
Definition: buffer_pool.hpp:1100
w_keystr_t _lower
Definition: btcursor.h:192
char _elbuf[SM_PAGESIZE]
Definition: btcursor.h:240
StoreID _store
Definition: btcursor.h:190
bool eof()
Definition: btcursor.h:131
rc_t _check_page_update(btree_page_h &p)
Definition: btcursor.cpp:208
rc_t _make_rec(const btree_page_h &page)
Definition: btcursor.cpp:435
char * elem()
Definition: btcursor.h:139