summaryrefslogtreecommitdiff
path: root/storage/innobase/mtr/mtr0log.cc
diff options
context:
space:
mode:
Diffstat (limited to 'storage/innobase/mtr/mtr0log.cc')
-rw-r--r--storage/innobase/mtr/mtr0log.cc76
1 files changed, 33 insertions, 43 deletions
diff --git a/storage/innobase/mtr/mtr0log.cc b/storage/innobase/mtr/mtr0log.cc
index 92ab6466fc3..b789e24f19c 100644
--- a/storage/innobase/mtr/mtr0log.cc
+++ b/storage/innobase/mtr/mtr0log.cc
@@ -144,7 +144,7 @@ mlog_parse_nbytes(
offset = mach_read_from_2(ptr);
ptr += 2;
- if (offset >= UNIV_PAGE_SIZE) {
+ if (offset >= srv_page_size) {
recv_sys->found_corrupt_log = TRUE;
return(NULL);
@@ -312,7 +312,7 @@ mlog_write_string(
mtr_t* mtr) /*!< in: mini-transaction handle */
{
ut_ad(ptr && mtr);
- ut_a(len < UNIV_PAGE_SIZE);
+ ut_a(len < srv_page_size);
memcpy(ptr, str, len);
@@ -332,7 +332,7 @@ mlog_log_string(
byte* log_ptr;
ut_ad(ptr && mtr);
- ut_ad(len <= UNIV_PAGE_SIZE);
+ ut_ad(len <= srv_page_size);
log_ptr = mlog_open(mtr, 30);
@@ -383,7 +383,7 @@ mlog_parse_string(
len = mach_read_from_2(ptr);
ptr += 2;
- if (offset >= UNIV_PAGE_SIZE || len + offset > UNIV_PAGE_SIZE) {
+ if (offset >= srv_page_size || len + offset > srv_page_size) {
recv_sys->found_corrupt_log = TRUE;
return(NULL);
@@ -426,11 +426,20 @@ mlog_open_and_write_index(
ut_ad(!!page_rec_is_comp(rec) == dict_table_is_comp(index->table));
+ mtr->set_modified();
+ switch (mtr->get_log_mode()) {
+ case MTR_LOG_NONE:
+ case MTR_LOG_NO_REDO:
+ return NULL;
+ case MTR_LOG_SHORT_INSERTS:
+ ut_ad(0);
+ /* fall through */
+ case MTR_LOG_ALL:
+ break;
+ }
+
if (!page_rec_is_comp(rec)) {
- log_start = log_ptr = mlog_open(mtr, 11 + size);
- if (!log_ptr) {
- return(NULL); /* logging is disabled */
- }
+ log_start = log_ptr = mtr->get_log()->open(11 + size);
log_ptr = mlog_write_initial_log_record_fast(rec, type,
log_ptr, mtr);
log_end = log_ptr + 11 + size;
@@ -439,11 +448,8 @@ mlog_open_and_write_index(
bool is_instant = index->is_instant();
ulint n = dict_index_get_n_fields(index);
ulint total = 11 + (is_instant ? 2 : 0) + size + (n + 2) * 2;
- ulint alloc = total;
-
- if (alloc > mtr_buf_t::MAX_DATA_SIZE) {
- alloc = mtr_buf_t::MAX_DATA_SIZE;
- }
+ ulint alloc = std::min(total,
+ ulint(mtr_buf_t::MAX_DATA_SIZE));
const bool is_leaf = page_is_leaf(page_align(rec));
@@ -453,12 +459,7 @@ mlog_open_and_write_index(
n = DICT_INDEX_SPATIAL_NODEPTR_SIZE;
}
- log_start = log_ptr = mlog_open(mtr, alloc);
-
- if (!log_ptr) {
- return(NULL); /* logging is disabled */
- }
-
+ log_start = log_ptr = mtr->get_log()->open(alloc);
log_end = log_ptr + alloc;
log_ptr = mlog_write_initial_log_record_fast(
@@ -477,16 +478,10 @@ mlog_open_and_write_index(
}
log_ptr += 2;
-
- if (is_leaf) {
- mach_write_to_2(
- log_ptr, dict_index_get_n_unique_in_tree(index));
- } else {
- mach_write_to_2(
- log_ptr,
- dict_index_get_n_unique_in_tree_nonleaf(index));
- }
-
+ mach_write_to_2(
+ log_ptr, is_leaf
+ ? dict_index_get_n_unique_in_tree(index)
+ : dict_index_get_n_unique_in_tree_nonleaf(index));
log_ptr += 2;
for (i = 0; i < n; i++) {
@@ -509,19 +504,14 @@ mlog_open_and_write_index(
}
if (log_ptr + 2 > log_end) {
mlog_close(mtr, log_ptr);
- ut_a(total > (ulint) (log_ptr - log_start));
- total -= log_ptr - log_start;
- alloc = total;
-
- if (alloc > mtr_buf_t::MAX_DATA_SIZE) {
- alloc = mtr_buf_t::MAX_DATA_SIZE;
- }
-
- log_start = log_ptr = mlog_open(mtr, alloc);
-
- if (!log_ptr) {
- return(NULL); /* logging is disabled */
- }
+ ut_a(total > ulint(log_ptr - log_start));
+ total -= ulint(log_ptr - log_start);
+ alloc = std::min(
+ total,
+ ulint(mtr_buf_t::MAX_DATA_SIZE));
+
+ log_start = log_ptr = mtr->get_log()->open(
+ alloc);
log_end = log_ptr + alloc;
}
mach_write_to_2(log_ptr, len);
@@ -641,7 +631,7 @@ mlog_parse_index(
ind->get_n_nullable(n_core_fields));
} else {
ind->n_core_null_bytes = UT_BITS_IN_BYTES(
- ind->n_nullable);
+ unsigned(ind->n_nullable));
ind->n_core_fields = ind->n_fields;
}
}