Skip to content
Permalink
Browse files
MDEV-12266: Remove dict_index_t::space
We can rely on the dict_table_t::space. All indexes of a table object
are always in the same tablespace. (For fulltext indexes, the data is
located in auxiliary tables, and these will continue to have their own
table objects, separate from the main table.)
  • Loading branch information
dr-m committed Mar 29, 2018
1 parent e7980f9 commit 604fea1
Show file tree
Hide file tree
Showing 34 changed files with 132 additions and 178 deletions.
@@ -1471,16 +1471,16 @@ btr_free(
ib_uint64_t
btr_read_autoinc(dict_index_t* index)
{
ut_ad(dict_index_is_clust(index));
ut_ad(index->is_primary());
ut_ad(index->table->persistent_autoinc);
ut_ad(!dict_table_is_temporary(index->table));
ut_ad(!index->table->is_temporary());

if (fil_space_t* space = fil_space_acquire(index->space)) {
if (fil_space_t* space = fil_space_acquire(index->table->space)) {
mtr_t mtr;
mtr.start();
ib_uint64_t autoinc;
if (buf_block_t* block = buf_page_get(
page_id_t(index->space, index->page),
page_id_t(space->id, index->page),
page_size_t(space->flags),
RW_S_LATCH, &mtr)) {
autoinc = page_get_autoinc(block->frame);
@@ -1510,11 +1510,11 @@ btr_read_autoinc_with_fallback(const dict_table_t* table, unsigned col_no)
dict_index_t* index = dict_table_get_first_index(table);

if (index == NULL) {
} else if (fil_space_t* space = fil_space_acquire(index->space)) {
} else if (fil_space_t* space = fil_space_acquire(table->space)) {
mtr_t mtr;
mtr.start();
buf_block_t* block = buf_page_get(
page_id_t(index->space, index->page),
page_id_t(space->id, index->page),
page_size_t(space->flags),
RW_S_LATCH, &mtr);

@@ -1537,7 +1537,7 @@ btr_read_autoinc_with_fallback(const dict_table_t* table, unsigned col_no)
index = dict_table_get_next_index(index);
}

if (index != NULL && index->space == space->id) {
if (index) {
autoinc = row_search_max_autoinc(index);
}
}
@@ -1557,16 +1557,16 @@ btr_read_autoinc_with_fallback(const dict_table_t* table, unsigned col_no)
void
btr_write_autoinc(dict_index_t* index, ib_uint64_t autoinc, bool reset)
{
ut_ad(dict_index_is_clust(index));
ut_ad(index->is_primary());
ut_ad(index->table->persistent_autoinc);
ut_ad(!dict_table_is_temporary(index->table));
ut_ad(!index->table->is_temporary());

if (fil_space_t* space = fil_space_acquire(index->space)) {
if (fil_space_t* space = fil_space_acquire(index->table->space)) {
mtr_t mtr;
mtr.start();
mtr.set_named_space(space);
page_set_autoinc(buf_page_get(
page_id_t(index->space, index->page),
page_id_t(space->id, index->page),
page_size_t(space->flags),
RW_SX_LATCH, &mtr),
index, autoinc, &mtr, reset);
@@ -4984,7 +4984,7 @@ btr_validate_level(
}
#endif

fil_space_t* space = fil_space_get(index->space);
fil_space_t* space = fil_space_get(index->table->space);
const page_size_t table_page_size(
dict_table_page_size(index->table));
const page_size_t space_page_size(space->flags);
@@ -5011,8 +5011,8 @@ btr_validate_level(
ret = false;
}

ut_a(index->space == block->page.id.space());
ut_a(index->space == page_get_space_id(page));
ut_a(index->table->space == block->page.id.space());
ut_a(block->page.id.space() == page_get_space_id(page));
#ifdef UNIV_ZIP_DEBUG
page_zip = buf_block_get_page_zip(block);
ut_a(!page_zip || page_zip_validate(page_zip, page, index));
@@ -5041,7 +5041,7 @@ btr_validate_level(

while (left_page_no != FIL_NULL) {
page_id_t left_page_id(
index->space, left_page_no);
index->table->space, left_page_no);
/* To obey latch order of tree blocks,
we should release the right_block once to
obtain lock of the uncle block. */
@@ -5078,7 +5078,7 @@ btr_validate_level(
ut_a(!page_zip || page_zip_validate(page_zip, page, index));
#endif /* UNIV_ZIP_DEBUG */

ut_a(block->page.id.space() == index->space);
ut_a(block->page.id.space() == index->table->space);

if (fseg_page_is_free(space, block->page.id.page_no())) {

@@ -5121,7 +5121,7 @@ btr_validate_level(
savepoint = mtr_set_savepoint(&mtr);

right_block = btr_block_get(
page_id_t(index->space, right_page_no),
page_id_t(index->table->space, right_page_no),
table_page_size,
RW_SX_LATCH, index, &mtr);

@@ -5298,13 +5298,13 @@ btr_validate_level(
&mtr, savepoint, right_block);

btr_block_get(
page_id_t(index->space,
page_id_t(index->table->space,
parent_right_page_no),
table_page_size,
RW_SX_LATCH, index, &mtr);

right_block = btr_block_get(
page_id_t(index->space,
page_id_t(index->table->space,
right_page_no),
table_page_size,
RW_SX_LATCH, index, &mtr);
@@ -5382,22 +5382,22 @@ btr_validate_level(
if (parent_right_page_no != FIL_NULL) {
btr_block_get(
page_id_t(
index->space,
index->table->space,
parent_right_page_no),
table_page_size,
RW_SX_LATCH, index, &mtr);
}
} else if (parent_page_no != FIL_NULL) {
btr_block_get(
page_id_t(index->space,
page_id_t(index->table->space,
parent_page_no),
table_page_size,
RW_SX_LATCH, index, &mtr);
}
}

block = btr_block_get(
page_id_t(index->space, right_page_no),
page_id_t(index->table->space, right_page_no),
table_page_size,
RW_SX_LATCH, index, &mtr);

@@ -67,7 +67,8 @@ PageBulk::init()

ulint n_reserved;
bool success;
success = fsp_reserve_free_extents(&n_reserved, m_index->space,
success = fsp_reserve_free_extents(&n_reserved,
m_index->table->space,
1, FSP_NORMAL, &alloc_mtr);
if (!success) {
mtr_commit(&alloc_mtr);
@@ -80,7 +81,7 @@ PageBulk::init()
&alloc_mtr, mtr);

if (n_reserved > 0) {
fil_space_release_free_extents(m_index->space,
fil_space_release_free_extents(m_index->table->space,
n_reserved);
}

@@ -2990,7 +2990,7 @@ btr_cur_ins_lock_and_undo(
ut_ad(!dict_index_is_online_ddl(index)
|| dict_index_is_clust(index)
|| (flags & BTR_CREATE_FLAG));
ut_ad(mtr->is_named_space(index->space));
ut_ad(mtr->is_named_space(index->table->space));

/* Check if there is predicate or GAP lock preventing the insertion */
if (!(flags & BTR_NO_LOCKING_FLAG)) {
@@ -3445,7 +3445,8 @@ btr_cur_pessimistic_insert(

ulint n_extents = cursor->tree_height / 16 + 3;

success = fsp_reserve_free_extents(&n_reserved, index->space,
success = fsp_reserve_free_extents(&n_reserved,
index->table->space,
n_extents, FSP_NORMAL, mtr);
if (!success) {
return(DB_OUT_OF_FILE_SPACE);
@@ -3471,8 +3472,8 @@ btr_cur_pessimistic_insert(
if (big_rec_vec == NULL) {

if (n_reserved > 0) {
fil_space_release_free_extents(index->space,
n_reserved);
fil_space_release_free_extents(
index->table->space, n_reserved);
}
return(DB_TOO_BIG_RECORD);
}
@@ -3547,7 +3548,8 @@ btr_cur_pessimistic_insert(
}

if (n_reserved > 0) {
fil_space_release_free_extents(index->space, n_reserved);
fil_space_release_free_extents(index->table->space,
n_reserved);
}

*big_rec = big_rec_vec;
@@ -3585,7 +3587,7 @@ btr_cur_upd_lock_and_undo(
index = cursor->index;

ut_ad(rec_offs_validate(rec, index, offsets));
ut_ad(mtr->is_named_space(index->space));
ut_ad(mtr->is_named_space(index->table->space));

if (!dict_index_is_clust(index)) {
ut_ad(dict_index_is_online_ddl(index)
@@ -4585,7 +4587,7 @@ btr_cur_pessimistic_update(
#endif /* UNIV_ZIP_DEBUG */
if (n_reserved > 0) {
fil_space_release_free_extents(
index->space, n_reserved);
index->table->space, n_reserved);
}

err = DB_TOO_BIG_RECORD;
@@ -4614,7 +4616,7 @@ btr_cur_pessimistic_update(
ulint n_extents = cursor->tree_height / 16 + 3;

if (!fsp_reserve_free_extents(
&n_reserved, index->space, n_extents,
&n_reserved, index->table->space, n_extents,
flags & BTR_NO_UNDO_LOG_FLAG
? FSP_CLEANING : FSP_NORMAL,
mtr)) {
@@ -4858,7 +4860,8 @@ btr_cur_pessimistic_update(
#endif /* UNIV_ZIP_DEBUG */

if (n_reserved > 0) {
fil_space_release_free_extents(index->space, n_reserved);
fil_space_release_free_extents(index->table->space,
n_reserved);
}

*big_rec = big_rec_vec;
@@ -4884,7 +4887,7 @@ btr_cur_del_mark_set_clust_rec_log(
byte* log_ptr;

ut_ad(!!page_rec_is_comp(rec) == dict_table_is_comp(index->table));
ut_ad(mtr->is_named_space(index->space));
ut_ad(mtr->is_named_space(index->table->space));

log_ptr = mlog_open_and_write_index(mtr, rec, index,
page_rec_is_comp(rec)
@@ -5038,7 +5041,7 @@ btr_cur_del_mark_set_clust_rec(
ut_ad(!!page_rec_is_comp(rec) == dict_table_is_comp(index->table));
ut_ad(buf_block_get_frame(block) == page_align(rec));
ut_ad(page_rec_is_leaf(rec));
ut_ad(mtr->is_named_space(index->space));
ut_ad(mtr->is_named_space(index->table->space));

if (rec_get_deleted_flag(rec, rec_offs_comp(offsets))) {
/* We may already have delete-marked this record
@@ -5319,7 +5322,7 @@ btr_cur_optimistic_delete_func(
MTR_MEMO_PAGE_X_FIX));
ut_ad(mtr_is_block_fix(mtr, btr_cur_get_block(cursor),
MTR_MEMO_PAGE_X_FIX, cursor->index->table));
ut_ad(mtr->is_named_space(cursor->index->space));
ut_ad(mtr->is_named_space(cursor->index->table->space));

/* This is intended only for leaf page deletions */

@@ -5510,7 +5513,7 @@ btr_cur_pessimistic_delete(
MTR_MEMO_X_LOCK
| MTR_MEMO_SX_LOCK));
ut_ad(mtr_is_block_fix(mtr, block, MTR_MEMO_PAGE_X_FIX, index->table));
ut_ad(mtr->is_named_space(index->space));
ut_ad(mtr->is_named_space(index->table->space));

if (!has_reserved_extents) {
/* First reserve enough free space for the file segments
@@ -5520,7 +5523,7 @@ btr_cur_pessimistic_delete(
ulint n_extents = cursor->tree_height / 32 + 1;

success = fsp_reserve_free_extents(&n_reserved,
index->space,
index->table->space,
n_extents,
FSP_CLEANING, mtr);
if (!success) {
@@ -5718,7 +5721,8 @@ btr_cur_pessimistic_delete(
}

if (n_reserved > 0) {
fil_space_release_free_extents(index->space, n_reserved);
fil_space_release_free_extents(index->table->space,
n_reserved);
}

return(ret);
@@ -5833,7 +5837,7 @@ btr_estimate_n_rows_in_range_on_level(

page_id_t page_id(
dict_index_get_space(index), slot1->page_no);
const fil_space_t* space = fil_space_get(index->space);
const fil_space_t* space = fil_space_get(index->table->space);
ut_ad(space);
const page_size_t page_size(space->flags);

@@ -7685,7 +7689,7 @@ btr_free_externally_stored_field(
ut_ad(!(mach_read_from_4(field_ref + BTR_EXTERN_LEN)
& ~((BTR_EXTERN_OWNER_FLAG
| BTR_EXTERN_INHERITED_FLAG) << 24)));
ut_ad(space_id == index->space);
ut_ad(space_id == index->table->space);

const page_size_t ext_page_size(dict_table_page_size(index->table));
const page_size_t& rec_page_size(rec == NULL
@@ -423,7 +423,7 @@ btr_pessimistic_scrub(
* so that splitting won't fail due to this */
ulint n_extents = 3;
ulint n_reserved = 0;
if (!fsp_reserve_free_extents(&n_reserved, index->space,
if (!fsp_reserve_free_extents(&n_reserved, index->table->space,
n_extents, FSP_NORMAL, mtr)) {
log_scrub_failure(index, scrub_data, block,
DB_OUT_OF_FILE_SPACE);
@@ -523,7 +523,8 @@ btr_pessimistic_scrub(
}

if (n_reserved > 0) {
fil_space_release_free_extents(index->space, n_reserved);
fil_space_release_free_extents(index->table->space,
n_reserved);
}

scrub_data->scrub_stat.page_splits++;
@@ -798,7 +799,7 @@ btr_scrub_page(
return BTR_SCRUB_SKIP_PAGE_AND_CLOSE_TABLE;
}

if (scrub_data->current_index->space != scrub_data->space) {
if (scrub_data->current_index->table->space != scrub_data->space) {
/* this is truncate table */
mtr_commit(mtr);
return BTR_SCRUB_SKIP_PAGE_AND_CLOSE_TABLE;

0 comments on commit 604fea1

Please sign in to comment.