19
20
page_cur_t* cur) /* in: page cursor */
23
return(buf_frame_align(cur->rec));
23
ut_ad(page_align(cur->rec) == cur->block->frame);
25
return(page_align(cur->rec));
28
/*************************************************************
29
Gets pointer to the buffer block where the cursor is positioned. */
35
page_cur_t* cur) /* in: page cursor */
38
ut_ad(page_align(cur->rec) == cur->block->frame);
42
/*************************************************************
43
Gets pointer to the page frame where the cursor is positioned. */
46
page_cur_get_page_zip(
47
/*==================*/
49
page_cur_t* cur) /* in: page cursor */
51
return(buf_block_get_page_zip(page_cur_get_block(cur)));
26
54
/*************************************************************
149
/* out: number of matched fields on the left */
150
page_t* page, /* in: index page */
151
dict_index_t* index, /* in: record descriptor */
152
dtuple_t* tuple, /* in: data tuple */
153
ulint mode, /* in: PAGE_CUR_L, PAGE_CUR_LE, PAGE_CUR_G,
155
page_cur_t* cursor) /* out: page cursor */
190
/* out: number of matched
191
fields on the left */
192
const buf_block_t* block, /* in: buffer block */
193
const dict_index_t* index, /* in: record descriptor */
194
const dtuple_t* tuple, /* in: data tuple */
195
ulint mode, /* in: PAGE_CUR_L,
196
PAGE_CUR_LE, PAGE_CUR_G, or
198
page_cur_t* cursor) /* out: page cursor */
157
200
ulint low_matched_fields = 0;
158
201
ulint low_matched_bytes = 0;
173
216
/***************************************************************
174
217
Inserts a record next to page cursor. Returns pointer to inserted record if
175
218
succeed, i.e., enough space available, NULL otherwise. The cursor stays at
176
the same position. */
219
the same logical position, but the physical position may change if it is
220
pointing to a compressed page that was reorganized. */
179
223
page_cur_tuple_insert(
180
224
/*==================*/
181
225
/* out: pointer to record if succeed, NULL
183
page_cur_t* cursor, /* in: a page cursor */
184
dtuple_t* tuple, /* in: pointer to a data tuple */
227
page_cur_t* cursor, /* in/out: a page cursor */
228
const dtuple_t* tuple, /* in: pointer to a data tuple */
185
229
dict_index_t* index, /* in: record descriptor */
186
mtr_t* mtr) /* in: mini-transaction handle */
230
ulint n_ext, /* in: number of externally stored columns */
231
mtr_t* mtr) /* in: mini-transaction handle, or NULL */
188
return(page_cur_insert_rec_low(cursor, tuple, index, NULL, NULL, mtr));
236
= rec_get_converted_size(index, tuple, n_ext);
239
heap = mem_heap_create(size
240
+ (4 + REC_OFFS_HEADER_SIZE
241
+ dtuple_get_n_fields(tuple))
243
rec = rec_convert_dtuple_to_rec((byte*) mem_heap_alloc(heap, size),
244
index, tuple, n_ext);
245
offsets = rec_get_offsets(rec, index, NULL, ULINT_UNDEFINED, &heap);
247
if (buf_block_get_page_zip(cursor->block)) {
248
rec = page_cur_insert_rec_zip(&cursor->rec, cursor->block,
249
index, rec, offsets, mtr);
251
rec = page_cur_insert_rec_low(cursor->rec,
252
index, rec, offsets, mtr);
191
259
/***************************************************************
192
260
Inserts a record next to page cursor. Returns pointer to inserted record if
193
261
succeed, i.e., enough space available, NULL otherwise. The cursor stays at
194
the same position. */
262
the same logical position, but the physical position may change if it is
263
pointing to a compressed page that was reorganized. */
197
266
page_cur_rec_insert(
198
267
/*================*/
199
268
/* out: pointer to record if succeed, NULL
201
page_cur_t* cursor, /* in: a page cursor */
202
rec_t* rec, /* in: record to insert */
270
page_cur_t* cursor, /* in/out: a page cursor */
271
const rec_t* rec, /* in: record to insert */
203
272
dict_index_t* index, /* in: record descriptor */
204
ulint* offsets,/* in: rec_get_offsets(rec, index) */
205
mtr_t* mtr) /* in: mini-transaction handle */
273
ulint* offsets,/* in/out: rec_get_offsets(rec, index) */
274
mtr_t* mtr) /* in: mini-transaction handle, or NULL */
207
return(page_cur_insert_rec_low(cursor, NULL, index, rec,
276
if (buf_block_get_page_zip(cursor->block)) {
277
return(page_cur_insert_rec_zip(&cursor->rec, cursor->block,
278
index, rec, offsets, mtr));
280
return(page_cur_insert_rec_low(cursor->rec,
281
index, rec, offsets, mtr));