Commit eeca95d0 authored by Otto Kekäläinen's avatar Otto Kekäläinen
Browse files

New upstream version 5.5.59

parent fa5f29ea
...@@ -2999,7 +2999,7 @@ row_sel_get_clust_rec_for_mysql( ...@@ -2999,7 +2999,7 @@ row_sel_get_clust_rec_for_mysql(
fputs("\n" fputs("\n"
"InnoDB: Submit a detailed bug report" "InnoDB: Submit a detailed bug report"
" to http://bugs.mysql.com\n", stderr); " to https://jira.mariadb.org/\n", stderr);
ut_ad(0); ut_ad(0);
} }
......
...@@ -492,7 +492,7 @@ row_undo_mod_del_unmark_sec_and_undo_update( ...@@ -492,7 +492,7 @@ row_undo_mod_del_unmark_sec_and_undo_update(
trx_print(stderr, trx, 0); trx_print(stderr, trx, 0);
fputs("\n" fputs("\n"
"InnoDB: Submit a detailed bug report" "InnoDB: Submit a detailed bug report"
" to http://bugs.mysql.com\n", stderr); " to https://jira.mariadb.org/\n", stderr);
ut_ad(0); ut_ad(0);
break; break;
case ROW_FOUND: case ROW_FOUND:
......
...@@ -1635,7 +1635,7 @@ row_upd_sec_index_entry( ...@@ -1635,7 +1635,7 @@ row_upd_sec_index_entry(
fputs("\n" fputs("\n"
"InnoDB: Submit a detailed bug report" "InnoDB: Submit a detailed bug report"
" to http://bugs.mysql.com\n", stderr); " to https://jira.mariadb.org/\n", stderr);
ut_ad(0); ut_ad(0);
break; break;
case ROW_FOUND: case ROW_FOUND:
......
...@@ -2957,7 +2957,7 @@ srv_error_monitor_thread( ...@@ -2957,7 +2957,7 @@ srv_error_monitor_thread(
" was greater\n" " was greater\n"
"InnoDB: than the new log sequence number %llu!\n" "InnoDB: than the new log sequence number %llu!\n"
"InnoDB: Please submit a bug report" "InnoDB: Please submit a bug report"
" to http://bugs.mysql.com\n", " to https://jira.mariadb.org/\n",
old_lsn, new_lsn); old_lsn, new_lsn);
ut_ad(0); ut_ad(0);
} }
......
...@@ -728,32 +728,6 @@ trx_purge_rseg_get_next_history_log( ...@@ -728,32 +728,6 @@ trx_purge_rseg_get_next_history_log(
mutex_exit(&(rseg->mutex)); mutex_exit(&(rseg->mutex));
mtr_commit(&mtr); mtr_commit(&mtr);
mutex_enter(&kernel_mutex);
/* Add debug code to track history list corruption reported
on the MySQL mailing list on Nov 9, 2004. The fut0lst.c
file-based list was corrupt. The prev node pointer was
FIL_NULL, even though the list length was over 8 million nodes!
We assume that purge truncates the history list in large
size pieces, and if we here reach the head of the list, the
list cannot be longer than 2000 000 undo logs now. */
if (trx_sys->rseg_history_len > 2000000) {
ut_print_timestamp(stderr);
fprintf(stderr,
" InnoDB: Warning: purge reached the"
" head of the history list,\n"
"InnoDB: but its length is still"
" reported as %lu! Make a detailed bug\n"
"InnoDB: report, and submit it"
" to http://bugs.mysql.com\n",
(ulong) trx_sys->rseg_history_len);
ut_ad(0);
}
mutex_exit(&kernel_mutex);
return; return;
} }
......
/***************************************************************************** /*****************************************************************************
Copyright (c) 1996, 2012, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 1996, 2012, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2017, 2018, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software the terms of the GNU General Public License as published by the Free Software
...@@ -786,7 +787,25 @@ trx_undo_page_report_modify( ...@@ -786,7 +787,25 @@ trx_undo_page_report_modify(
const dict_col_t* col const dict_col_t* col
= dict_table_get_nth_col(table, col_no); = dict_table_get_nth_col(table, col_no);
if (col->ord_part) { if (!col->ord_part) {
continue;
}
if (update) {
for (i = 0; i < update->n_fields; i++) {
const dict_field_t* f
= dict_index_get_nth_field(
index,
upd_get_nth_field(
update, i)
->field_no);
if (f->col == col) {
goto already_logged;
}
}
}
if (TRUE) {
ulint pos; ulint pos;
/* Write field number to undo log */ /* Write field number to undo log */
...@@ -836,6 +855,9 @@ trx_undo_page_report_modify( ...@@ -836,6 +855,9 @@ trx_undo_page_report_modify(
ptr += flen; ptr += flen;
} }
} }
already_logged:
continue;
} }
mach_write_to_2(old_ptr, ptr - old_ptr); mach_write_to_2(old_ptr, ptr - old_ptr);
...@@ -1010,7 +1032,7 @@ trx_undo_update_rec_get_update( ...@@ -1010,7 +1032,7 @@ trx_undo_update_rec_get_update(
fprintf(stderr, "\n" fprintf(stderr, "\n"
"InnoDB: but index has only %lu fields\n" "InnoDB: but index has only %lu fields\n"
"InnoDB: Submit a detailed bug report" "InnoDB: Submit a detailed bug report"
" to http://bugs.mysql.com\n" " to https://jira.mariadb.org/\n"
"InnoDB: Run also CHECK TABLE ", "InnoDB: Run also CHECK TABLE ",
(ulong) dict_index_get_n_fields(index)); (ulong) dict_index_get_n_fields(index));
ut_print_name(stderr, trx, TRUE, index->table_name); ut_print_name(stderr, trx, TRUE, index->table_name);
...@@ -1063,6 +1085,7 @@ trx_undo_rec_get_partial_row( ...@@ -1063,6 +1085,7 @@ trx_undo_rec_get_partial_row(
used, as we do NOT copy the data in the used, as we do NOT copy the data in the
record! */ record! */
dict_index_t* index, /*!< in: clustered index */ dict_index_t* index, /*!< in: clustered index */
const upd_t* update, /*!< in: updated columns */
dtuple_t** row, /*!< out, own: partial row */ dtuple_t** row, /*!< out, own: partial row */
ibool ignore_prefix, /*!< in: flag to indicate if we ibool ignore_prefix, /*!< in: flag to indicate if we
expect blob prefixes in undo. Used expect blob prefixes in undo. Used
...@@ -1072,6 +1095,8 @@ trx_undo_rec_get_partial_row( ...@@ -1072,6 +1095,8 @@ trx_undo_rec_get_partial_row(
{ {
const byte* end_ptr; const byte* end_ptr;
ulint row_len; ulint row_len;
const upd_field_t* uf = update->fields;
const upd_field_t* const ue = update->fields + update->n_fields;
ut_ad(index); ut_ad(index);
ut_ad(ptr); ut_ad(ptr);
...@@ -1085,6 +1110,12 @@ trx_undo_rec_get_partial_row( ...@@ -1085,6 +1110,12 @@ trx_undo_rec_get_partial_row(
dict_table_copy_types(*row, index->table); dict_table_copy_types(*row, index->table);
for (; uf != ue; uf++) {
ulint c = dict_index_get_nth_col(index, uf->field_no)->ind;
*dtuple_get_nth_field(*row, c) = uf->new_val;
}
end_ptr = ptr + mach_read_from_2(ptr); end_ptr = ptr + mach_read_from_2(ptr);
ptr += 2; ptr += 2;
...@@ -1524,7 +1555,7 @@ trx_undo_prev_version_build( ...@@ -1524,7 +1555,7 @@ trx_undo_prev_version_build(
fprintf(stderr, "InnoDB: Error: trying to access" fprintf(stderr, "InnoDB: Error: trying to access"
" update undo rec for non-clustered index %s\n" " update undo rec for non-clustered index %s\n"
"InnoDB: Submit a detailed bug report to" "InnoDB: Submit a detailed bug report to"
" http://bugs.mysql.com\n" " https://jira.mariadb.org/\n"
"InnoDB: index record ", index->name); "InnoDB: index record ", index->name);
rec_print(stderr, index_rec, index); rec_print(stderr, index_rec, index);
fputs("\n" fputs("\n"
...@@ -1601,7 +1632,7 @@ trx_undo_prev_version_build( ...@@ -1601,7 +1632,7 @@ trx_undo_prev_version_build(
"InnoDB: but the table id in the" "InnoDB: but the table id in the"
" undo record is wrong\n" " undo record is wrong\n"
"InnoDB: Submit a detailed bug report" "InnoDB: Submit a detailed bug report"
" to http://bugs.mysql.com\n" " to https://jira.mariadb.org/\n"
"InnoDB: Run also CHECK TABLE %s\n", "InnoDB: Run also CHECK TABLE %s\n",
index->table_name, index->table_name); index->table_name, index->table_name);
} }
......
...@@ -63,7 +63,7 @@ ut_dbg_assertion_failed( ...@@ -63,7 +63,7 @@ ut_dbg_assertion_failed(
fputs("InnoDB: We intentionally generate a memory trap.\n" fputs("InnoDB: We intentionally generate a memory trap.\n"
"InnoDB: Submit a detailed bug report" "InnoDB: Submit a detailed bug report"
" to http://bugs.mysql.com.\n" " to https://jira.mariadb.org/\n"
"InnoDB: If you get repeated assertion failures" "InnoDB: If you get repeated assertion failures"
" or crashes, even\n" " or crashes, even\n"
"InnoDB: immediately after the mysqld startup, there may be\n" "InnoDB: immediately after the mysqld startup, there may be\n"
......
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment