mirror of
https://github.com/MariaDB/server.git
synced 2025-01-21 22:34:18 +01:00
branches/zip: ibuf_insert_low(): Add the parameter entry_size in order to
avoid repeated invocation of the costly function rec_get_converted_size().
This commit is contained in:
parent
1367c5e5be
commit
edf5b599d1
1 changed files with 10 additions and 8 deletions
|
@ -2553,6 +2553,8 @@ ibuf_insert_low(
|
||||||
/* out: DB_SUCCESS, DB_FAIL, DB_STRONG_FAIL */
|
/* out: DB_SUCCESS, DB_FAIL, DB_STRONG_FAIL */
|
||||||
ulint mode, /* in: BTR_MODIFY_PREV or BTR_MODIFY_TREE */
|
ulint mode, /* in: BTR_MODIFY_PREV or BTR_MODIFY_TREE */
|
||||||
const dtuple_t* entry, /* in: index entry to insert */
|
const dtuple_t* entry, /* in: index entry to insert */
|
||||||
|
ulint entry_size,
|
||||||
|
/* in: rec_get_converted_size(index, entry) */
|
||||||
dict_index_t* index, /* in: index where to insert; must not be
|
dict_index_t* index, /* in: index where to insert; must not be
|
||||||
unique or clustered */
|
unique or clustered */
|
||||||
ulint space, /* in: space id where to insert */
|
ulint space, /* in: space id where to insert */
|
||||||
|
@ -2561,7 +2563,6 @@ ibuf_insert_low(
|
||||||
que_thr_t* thr) /* in: query thread */
|
que_thr_t* thr) /* in: query thread */
|
||||||
{
|
{
|
||||||
big_rec_t* dummy_big_rec;
|
big_rec_t* dummy_big_rec;
|
||||||
ulint entry_size;
|
|
||||||
btr_pcur_t pcur;
|
btr_pcur_t pcur;
|
||||||
btr_cur_t* cursor;
|
btr_cur_t* cursor;
|
||||||
dtuple_t* ibuf_entry;
|
dtuple_t* ibuf_entry;
|
||||||
|
@ -2649,8 +2650,6 @@ ibuf_insert_low(
|
||||||
ibuf_enter();
|
ibuf_enter();
|
||||||
}
|
}
|
||||||
|
|
||||||
entry_size = rec_get_converted_size(index, entry, 0);
|
|
||||||
|
|
||||||
heap = mem_heap_create(512);
|
heap = mem_heap_create(512);
|
||||||
|
|
||||||
/* Build the entry which contains the space id and the page number as
|
/* Build the entry which contains the space id and the page number as
|
||||||
|
@ -2823,6 +2822,7 @@ ibuf_insert(
|
||||||
que_thr_t* thr) /* in: query thread */
|
que_thr_t* thr) /* in: query thread */
|
||||||
{
|
{
|
||||||
ulint err;
|
ulint err;
|
||||||
|
ulint entry_size;
|
||||||
|
|
||||||
ut_a(trx_sys_multiple_tablespace_format);
|
ut_a(trx_sys_multiple_tablespace_format);
|
||||||
ut_ad(dtuple_check_typed(entry));
|
ut_ad(dtuple_check_typed(entry));
|
||||||
|
@ -2830,17 +2830,19 @@ ibuf_insert(
|
||||||
|
|
||||||
ut_a(!dict_index_is_clust(index));
|
ut_a(!dict_index_is_clust(index));
|
||||||
|
|
||||||
if (rec_get_converted_size(index, entry, 0)
|
entry_size = rec_get_converted_size(index, entry, 0);
|
||||||
|
|
||||||
|
if (entry_size
|
||||||
>= (page_get_free_space_of_empty(dict_table_is_comp(index->table))
|
>= (page_get_free_space_of_empty(dict_table_is_comp(index->table))
|
||||||
/ 2)) {
|
/ 2)) {
|
||||||
return(FALSE);
|
return(FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
err = ibuf_insert_low(BTR_MODIFY_PREV, entry, index,
|
err = ibuf_insert_low(BTR_MODIFY_PREV, entry, entry_size,
|
||||||
space, zip_size, page_no, thr);
|
index, space, zip_size, page_no, thr);
|
||||||
if (err == DB_FAIL) {
|
if (err == DB_FAIL) {
|
||||||
err = ibuf_insert_low(BTR_MODIFY_TREE, entry, index,
|
err = ibuf_insert_low(BTR_MODIFY_TREE, entry, entry_size,
|
||||||
space, zip_size, page_no, thr);
|
index, space, zip_size, page_no, thr);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (err == DB_SUCCESS) {
|
if (err == DB_SUCCESS) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue