Skip to content

Commit a3b2214

Browse files
committed
Remove pointer indirection for PageBulk::m_mtr
1 parent 172199b commit a3b2214

File tree

2 files changed

+32
-36
lines changed

2 files changed

+32
-36
lines changed

storage/innobase/btr/btr0bulk.cc

Lines changed: 29 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ Note: we commit all mtrs on failure.
3939
dberr_t
4040
PageBulk::init()
4141
{
42-
mtr_t* mtr;
4342
buf_block_t* new_block;
4443
page_t* new_page;
4544
page_zip_des_t* new_page_zip;
@@ -48,12 +47,10 @@ PageBulk::init()
4847
ut_ad(m_heap == NULL);
4948
m_heap = mem_heap_create(1000);
5049

51-
mtr = static_cast<mtr_t*>(
52-
mem_heap_alloc(m_heap, sizeof(mtr_t)));
53-
mtr->start();
54-
mtr_x_lock(dict_index_get_lock(m_index), mtr);
55-
mtr->set_log_mode(MTR_LOG_NO_REDO);
56-
mtr->set_flush_observer(m_flush_observer);
50+
m_mtr.start();
51+
mtr_x_lock(&m_index->lock, &m_mtr);
52+
m_mtr.set_log_mode(MTR_LOG_NO_REDO);
53+
m_mtr.set_flush_observer(m_flush_observer);
5754

5855
if (m_page_no == FIL_NULL) {
5956
mtr_t alloc_mtr;
@@ -70,47 +67,47 @@ PageBulk::init()
7067
success = fsp_reserve_free_extents(&n_reserved, m_index->space,
7168
1, FSP_NORMAL, &alloc_mtr);
7269
if (!success) {
73-
mtr_commit(&alloc_mtr);
74-
mtr_commit(mtr);
70+
alloc_mtr.commit();
71+
m_mtr.commit();
7572
return(DB_OUT_OF_FILE_SPACE);
7673
}
7774

7875
/* Allocate a new page. */
7976
new_block = btr_page_alloc(m_index, 0, FSP_UP, m_level,
80-
&alloc_mtr, mtr);
77+
&alloc_mtr, &m_mtr);
8178

8279
if (n_reserved > 0) {
8380
fil_space_release_free_extents(m_index->space,
8481
n_reserved);
8582
}
8683

87-
mtr_commit(&alloc_mtr);
84+
alloc_mtr.commit();
8885

8986
new_page = buf_block_get_frame(new_block);
9087
new_page_zip = buf_block_get_page_zip(new_block);
9188
new_page_no = page_get_page_no(new_page);
9289

9390
if (new_page_zip) {
9491
page_create_zip(new_block, m_index, m_level, 0,
95-
NULL, mtr);
92+
NULL, &m_mtr);
9693
} else {
9794
ut_ad(!dict_index_is_spatial(m_index));
98-
page_create(new_block, mtr,
95+
page_create(new_block, &m_mtr,
9996
dict_table_is_comp(m_index->table),
10097
false);
101-
btr_page_set_level(new_page, NULL, m_level, mtr);
98+
btr_page_set_level(new_page, NULL, m_level, &m_mtr);
10299
}
103100

104-
btr_page_set_next(new_page, NULL, FIL_NULL, mtr);
105-
btr_page_set_prev(new_page, NULL, FIL_NULL, mtr);
101+
btr_page_set_next(new_page, NULL, FIL_NULL, &m_mtr);
102+
btr_page_set_prev(new_page, NULL, FIL_NULL, &m_mtr);
106103

107-
btr_page_set_index_id(new_page, NULL, m_index->id, mtr);
104+
btr_page_set_index_id(new_page, NULL, m_index->id, &m_mtr);
108105
} else {
109106
page_id_t page_id(dict_index_get_space(m_index), m_page_no);
110107
page_size_t page_size(dict_table_page_size(m_index->table));
111108

112109
new_block = btr_block_get(page_id, page_size,
113-
RW_X_LATCH, m_index, mtr);
110+
RW_X_LATCH, m_index, &m_mtr);
114111

115112
new_page = buf_block_get_frame(new_block);
116113
new_page_zip = buf_block_get_page_zip(new_block);
@@ -119,14 +116,13 @@ PageBulk::init()
119116

120117
ut_ad(page_dir_get_n_heap(new_page) == PAGE_HEAP_NO_USER_LOW);
121118

122-
btr_page_set_level(new_page, NULL, m_level, mtr);
119+
btr_page_set_level(new_page, NULL, m_level, &m_mtr);
123120
}
124121

125122
if (!m_level && dict_index_is_sec_or_ibuf(m_index)) {
126-
page_update_max_trx_id(new_block, NULL, m_trx_id, mtr);
123+
page_update_max_trx_id(new_block, NULL, m_trx_id, &m_mtr);
127124
}
128125

129-
m_mtr = mtr;
130126
m_block = new_block;
131127
m_block->skip_flush_check = true;
132128
m_page = new_page;
@@ -314,7 +310,7 @@ PageBulk::commit(
314310
}
315311
}
316312

317-
mtr_commit(m_mtr);
313+
m_mtr.commit();
318314
}
319315

320316
/** Compress a page of compressed table
@@ -326,7 +322,7 @@ PageBulk::compress()
326322
ut_ad(m_page_zip != NULL);
327323

328324
return(page_zip_compress(m_page_zip, m_page, m_index,
329-
page_zip_level, NULL, m_mtr));
325+
page_zip_level, NULL, &m_mtr));
330326
}
331327

332328
/** Get node pointer
@@ -478,7 +474,7 @@ void
478474
PageBulk::setNext(
479475
ulint next_page_no)
480476
{
481-
btr_page_set_next(m_page, NULL, next_page_no, m_mtr);
477+
btr_page_set_next(m_page, NULL, next_page_no, &m_mtr);
482478
}
483479

484480
/** Set previous page
@@ -487,7 +483,7 @@ void
487483
PageBulk::setPrev(
488484
ulint prev_page_no)
489485
{
490-
btr_page_set_prev(m_page, NULL, prev_page_no, m_mtr);
486+
btr_page_set_prev(m_page, NULL, prev_page_no, &m_mtr);
491487
}
492488

493489
/** Check if required space is available in the page for the rec to be inserted.
@@ -560,7 +556,7 @@ PageBulk::storeExt(
560556
page_cur->block = m_block;
561557

562558
dberr_t err = btr_store_big_rec_extern_fields(
563-
&btr_pcur, offsets, big_rec, m_mtr, BTR_STORE_INSERT_BULK);
559+
&btr_pcur, offsets, big_rec, &m_mtr, BTR_STORE_INSERT_BULK);
564560

565561
ut_ad(page_offset(m_cur_rec) == page_offset(page_cur->rec));
566562

@@ -586,27 +582,27 @@ PageBulk::release()
586582
/* No other threads can modify this block. */
587583
m_modify_clock = buf_block_get_modify_clock(m_block);
588584

589-
mtr_commit(m_mtr);
585+
m_mtr.commit();
590586
}
591587

592588
/** Start mtr and latch the block */
593589
dberr_t
594590
PageBulk::latch()
595591
{
596-
m_mtr->start();
597-
mtr_x_lock(dict_index_get_lock(m_index), m_mtr);
598-
m_mtr->set_log_mode(MTR_LOG_NO_REDO);
599-
m_mtr->set_flush_observer(m_flush_observer);
592+
m_mtr.start();
593+
mtr_x_lock(&m_index->lock, &m_mtr);
594+
m_mtr.set_log_mode(MTR_LOG_NO_REDO);
595+
m_mtr.set_flush_observer(m_flush_observer);
600596

601597
/* In case the block is S-latched by page_cleaner. */
602598
if (!buf_page_optimistic_get(RW_X_LATCH, m_block, m_modify_clock,
603-
__FILE__, __LINE__, m_mtr)) {
599+
__FILE__, __LINE__, &m_mtr)) {
604600
page_id_t page_id(dict_index_get_space(m_index), m_page_no);
605601
page_size_t page_size(dict_table_page_size(m_index->table));
606602

607603
m_block = buf_page_get_gen(page_id, page_size, RW_X_LATCH,
608604
m_block, BUF_GET_IF_IN_POOL,
609-
__FILE__, __LINE__, m_mtr, &m_err);
605+
__FILE__, __LINE__, &m_mtr, &m_err);
610606

611607
if (m_err != DB_SUCCESS) {
612608
return (m_err);

storage/innobase/include/btr0bulk.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class PageBulk
6363
:
6464
m_heap(NULL),
6565
m_index(index),
66-
m_mtr(NULL),
66+
m_mtr(),
6767
m_trx_id(trx_id),
6868
m_block(NULL),
6969
m_page(NULL),
@@ -206,8 +206,8 @@ class PageBulk
206206
/** The index B-tree */
207207
dict_index_t* m_index;
208208

209-
/** The min-transaction */
210-
mtr_t* m_mtr;
209+
/** The mini-transaction */
210+
mtr_t m_mtr;
211211

212212
/** The transaction id */
213213
trx_id_t m_trx_id;

0 commit comments

Comments
 (0)