diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2017-10-24 19:25:19 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2017-10-24 19:25:19 +0300 |
commit | 44ed24352212ed23bbc13ef0badedf41e87c3aad (patch) | |
tree | 2ad4dd83a81322df66e0c55b1a1330477f5ae9a8 /storage/xtradb/trx | |
parent | a1a79aa5760ff9595b0089ac6ad4ad917c109a03 (diff) | |
parent | 439a7c994a6f01de1a3980c0405fb9e24ae3bd1a (diff) | |
download | mariadb-git-44ed24352212ed23bbc13ef0badedf41e87c3aad.tar.gz |
Merge 5.5 into 10.0
Diffstat (limited to 'storage/xtradb/trx')
-rw-r--r-- | storage/xtradb/trx/trx0rec.cc | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/storage/xtradb/trx/trx0rec.cc b/storage/xtradb/trx/trx0rec.cc index 8c0904dd57b..3193dfd81b5 100644 --- a/storage/xtradb/trx/trx0rec.cc +++ b/storage/xtradb/trx/trx0rec.cc @@ -1,6 +1,7 @@ /***************************************************************************** Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 2017, MariaDB Corporation. 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 @@ -771,7 +772,25 @@ trx_undo_page_report_modify( const dict_col_t* col = 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; /* Write field number to undo log */ @@ -822,6 +841,9 @@ trx_undo_page_report_modify( ptr += flen; } } + +already_logged: + continue; } mach_write_to_2(old_ptr, ptr - old_ptr); |