diff options
Diffstat (limited to 'storage/innobase/row/row0log.cc')
-rw-r--r-- | storage/innobase/row/row0log.cc | 62 |
1 files changed, 29 insertions, 33 deletions
diff --git a/storage/innobase/row/row0log.cc b/storage/innobase/row/row0log.cc index 31a5402dc15..9e946757df3 100644 --- a/storage/innobase/row/row0log.cc +++ b/storage/innobase/row/row0log.cc @@ -302,7 +302,7 @@ row_log_online_op( extra_size+1 (and reserve 0 as the end-of-chunk marker). */ size = rec_get_converted_size_temp( - index, tuple->fields, tuple->n_fields, NULL, &extra_size); + index, tuple->fields, tuple->n_fields, &extra_size); ut_ad(size >= extra_size); ut_ad(size <= sizeof log->tail.buf); @@ -350,7 +350,7 @@ row_log_online_op( } rec_convert_dtuple_to_temp( - b + extra_size, index, tuple->fields, tuple->n_fields, NULL); + b + extra_size, index, tuple->fields, tuple->n_fields); b += size; if (mrec_size >= avail_size) { @@ -641,7 +641,7 @@ row_log_table_delete( ut_ad(DATA_ROLL_PTR_LEN == dtuple_get_nth_field( old_pk, old_pk->n_fields - 1)->len); old_pk_size = rec_get_converted_size_temp( - new_index, old_pk->fields, old_pk->n_fields, NULL, + new_index, old_pk->fields, old_pk->n_fields, &old_pk_extra_size); ut_ad(old_pk_extra_size < 0x100); @@ -671,9 +671,7 @@ row_log_table_delete( /* Check if we need to log virtual column data */ if (ventry->n_v_fields > 0) { - ulint v_extra; - mrec_size += rec_get_converted_size_temp( - new_index, NULL, 0, ventry, &v_extra); + mrec_size += rec_get_converted_size_temp_v(new_index, ventry); } if (byte* b = row_log_table_open(index->online_log, @@ -687,7 +685,7 @@ row_log_table_delete( rec_convert_dtuple_to_temp( b + old_pk_extra_size, new_index, - old_pk->fields, old_pk->n_fields, NULL); + old_pk->fields, old_pk->n_fields); b += old_pk_size; @@ -720,8 +718,7 @@ row_log_table_delete( /* log virtual columns */ if (ventry->n_v_fields > 0) { - rec_convert_dtuple_to_temp( - b, new_index, NULL, 0, ventry); + rec_convert_dtuple_to_temp_v(b, new_index, ventry); b += mach_read_from_2(b); } @@ -812,15 +809,16 @@ row_log_table_low_redundant( } size = rec_get_converted_size_temp( - index, tuple->fields, tuple->n_fields, ventry, &extra_size); + index, tuple->fields, tuple->n_fields, &extra_size); + ulint v_size = ventry + ? rec_get_converted_size_temp_v(index, ventry) : 0; - mrec_size = ROW_LOG_HEADER_SIZE + size + (extra_size >= 0x80); + mrec_size = ROW_LOG_HEADER_SIZE + size + v_size + (extra_size >= 0x80); if (num_v) { if (o_ventry) { - ulint v_extra = 0; - mrec_size += rec_get_converted_size_temp( - index, NULL, 0, o_ventry, &v_extra); + mrec_size += rec_get_converted_size_temp_v( + index, o_ventry); } } else if (index->table->n_v_cols) { mrec_size += 2; @@ -839,7 +837,7 @@ row_log_table_low_redundant( old_pk_size = rec_get_converted_size_temp( new_index, old_pk->fields, old_pk->n_fields, - ventry, &old_pk_extra_size); + &old_pk_extra_size); ut_ad(old_pk_extra_size < 0x100); mrec_size += 1/*old_pk_extra_size*/ + old_pk_size; } @@ -853,8 +851,7 @@ row_log_table_low_redundant( rec_convert_dtuple_to_temp( b + old_pk_extra_size, new_index, - old_pk->fields, old_pk->n_fields, - ventry); + old_pk->fields, old_pk->n_fields); b += old_pk_size; } @@ -867,14 +864,17 @@ row_log_table_low_redundant( } rec_convert_dtuple_to_temp( - b + extra_size, index, tuple->fields, tuple->n_fields, - ventry); + b + extra_size, index, tuple->fields, tuple->n_fields); b += size; + if (ventry) { + rec_convert_dtuple_to_temp_v(b, new_index, ventry); + b += v_size; + } if (num_v) { if (o_ventry) { - rec_convert_dtuple_to_temp( - b, new_index, NULL, 0, o_ventry); + rec_convert_dtuple_to_temp_v( + b, new_index, o_ventry); b += mach_read_from_2(b); } } else if (index->table->n_v_cols) { @@ -964,13 +964,11 @@ row_log_table_low( + (extra_size >= 0x80) + rec_offs_size(offsets) - omit_size; if (ventry && ventry->n_v_fields > 0) { - ulint v_extra = 0; - mrec_size += rec_get_converted_size_temp( - new_index, NULL, 0, ventry, &v_extra); + mrec_size += rec_get_converted_size_temp_v(new_index, ventry); if (o_ventry) { - mrec_size += rec_get_converted_size_temp( - new_index, NULL, 0, o_ventry, &v_extra); + mrec_size += rec_get_converted_size_temp_v( + new_index, o_ventry); } } else if (index->table->n_v_cols) { /* Always leave 2 bytes length marker for virtual column @@ -992,7 +990,7 @@ row_log_table_low( old_pk_size = rec_get_converted_size_temp( new_index, old_pk->fields, old_pk->n_fields, - NULL, &old_pk_extra_size); + &old_pk_extra_size); ut_ad(old_pk_extra_size < 0x100); mrec_size += 1/*old_pk_extra_size*/ + old_pk_size; } @@ -1006,8 +1004,7 @@ row_log_table_low( rec_convert_dtuple_to_temp( b + old_pk_extra_size, new_index, - old_pk->fields, old_pk->n_fields, - NULL); + old_pk->fields, old_pk->n_fields); b += old_pk_size; } @@ -1025,13 +1022,12 @@ row_log_table_low( b += rec_offs_data_size(offsets); if (ventry && ventry->n_v_fields > 0) { - rec_convert_dtuple_to_temp( - b, new_index, NULL, 0, ventry); + rec_convert_dtuple_to_temp_v(b, new_index, ventry); b += mach_read_from_2(b); if (o_ventry) { - rec_convert_dtuple_to_temp( - b, new_index, NULL, 0, o_ventry); + rec_convert_dtuple_to_temp_v( + b, new_index, o_ventry); b += mach_read_from_2(b); } } else if (index->table->n_v_cols) { |