diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2018-01-03 11:46:31 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2018-01-03 11:56:24 +0200 |
commit | d361401bc26f49480daec8b0307afff6edae2ecc (patch) | |
tree | 32fe757102f56b144401a4576956477370978bea /sql/sql_class.cc | |
parent | 7a9fee9853c19c1d6d547cd17f87e9bd8f4ebbaa (diff) | |
parent | 016caa3d202ee1f020ff84613b345c8f3bacdce3 (diff) | |
download | mariadb-git-d361401bc26f49480daec8b0307afff6edae2ecc.tar.gz |
Merge 10.1 into 10.2, with some MDEV-14799 fixupsmariadb-10.2.12
trx_undo_page_report_modify(): For SPATIAL INDEX, keep logging
updated off-page columns twice, so that
the minimum bounding rectangle (MBR) will be logged.
Avoiding the redundant logging would require larger changes
to the undo log format.
row_build_index_entry_low(): Handle SPATIAL_UNKNOWN more robustly,
by refusing to purge the record from the spatial index.
We can get this code when processing old undo log from 10.2.10 or
10.2.11 (the releases affected by MDEV-14799, which was a regression
from MDEV-14051).
Diffstat (limited to 'sql/sql_class.cc')
-rw-r--r-- | sql/sql_class.cc | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sql/sql_class.cc b/sql/sql_class.cc index a1727b5a2fa..c8eb8ed3128 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -2609,6 +2609,8 @@ void THD::nocheck_register_item_tree_change(Item **place, Item *old_value, MEM_ROOT *runtime_memroot) { Item_change_record *change; + DBUG_ENTER("THD::nocheck_register_item_tree_change"); + DBUG_PRINT("enter", ("Register %p <- %p", old_value, (*place))); /* Now we use one node per change, which adds some memory overhead, but still is rather fast as we use alloc_root for allocations. @@ -2621,12 +2623,13 @@ void THD::nocheck_register_item_tree_change(Item **place, Item *old_value, OOM, thd->fatal_error() is called by the error handler of the memroot. Just return. */ - return; + DBUG_VOID_RETURN; } change= new (change_mem) Item_change_record; change->place= place; change->old_value= old_value; change_list.append(change); + DBUG_VOID_RETURN; } /** @@ -2667,7 +2670,11 @@ void THD::rollback_item_tree_changes() DBUG_ENTER("rollback_item_tree_changes"); while ((change= it++)) + { + DBUG_PRINT("info", ("revert %p -> %p", + change->old_value, (*change->place))); *change->place= change->old_value; + } /* We can forget about changes memory: it's allocated in runtime memroot */ change_list.empty(); DBUG_VOID_RETURN; |