diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2020-04-27 15:40:39 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2020-04-27 16:06:26 +0300 |
commit | 3568fad5c935426a275900e8130657b18ba14e9f (patch) | |
tree | 4214e67305b5e8476ccea8ce18dc7eb60adf2af1 | |
parent | f7437d8a3c45d766eca569a3c71e903fb4891f1f (diff) | |
parent | 581df0df89c68fc6c5acb59efe89053b2036844a (diff) | |
download | mariadb-git-3568fad5c935426a275900e8130657b18ba14e9f.tar.gz |
Merge 10.2 into 10.3
-rw-r--r-- | storage/innobase/dict/dict0stats_bg.cc | 14 | ||||
-rw-r--r-- | storage/innobase/include/dict0stats.h | 12 | ||||
-rw-r--r-- | storage/innobase/row/row0mysql.cc | 9 | ||||
-rw-r--r-- | storage/innobase/row/row0purge.cc | 5 | ||||
-rw-r--r-- | storage/innobase/row/row0uins.cc | 6 | ||||
-rw-r--r-- | storage/innobase/row/row0umod.cc | 4 | ||||
-rw-r--r-- | storage/innobase/trx/trx0roll.cc | 11 |
7 files changed, 26 insertions, 35 deletions
diff --git a/storage/innobase/dict/dict0stats_bg.cc b/storage/innobase/dict/dict0stats_bg.cc index 812c5c539f5..126de450ca5 100644 --- a/storage/innobase/dict/dict0stats_bg.cc +++ b/storage/innobase/dict/dict0stats_bg.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 2012, 2017, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2017, 2018, MariaDB Corporation. +Copyright (c) 2017, 2020, 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 @@ -32,6 +32,7 @@ Created Apr 25, 2012 Vasil Dimov #include "srv0start.h" #include "fil0fil.h" #ifdef WITH_WSREP +# include "trx0trx.h" # include "mysql/service_wsrep.h" # include "wsrep.h" # include "log.h" @@ -147,12 +148,12 @@ dict_stats_recalc_pool_add( schedule new estimates for table and index statistics to be calculated. @param[in,out] table persistent or temporary table @param[in] thd current session */ -void dict_stats_update_if_needed(dict_table_t* table, THD* thd) +void dict_stats_update_if_needed(dict_table_t *table, const trx_t &trx) #else /** Update the table modification counter and if necessary, schedule new estimates for table and index statistics to be calculated. @param[in,out] table persistent or temporary table */ -void dict_stats_update_if_needed_func(dict_table_t* table) +void dict_stats_update_if_needed_func(dict_table_t *table) #endif { ut_ad(table->stat_initialized); @@ -179,10 +180,9 @@ void dict_stats_update_if_needed_func(dict_table_t* table) generated row locks and allow BF thread lock waits to be enqueued at head of waiting queue. */ - if (thd - && !wsrep_thd_is_applier(thd) - && wsrep_on(thd) - && wsrep_thd_is_BF(thd, 0)) { + if (trx.is_wsrep() + && !wsrep_thd_is_applier(trx.mysql_thd) + && wsrep_thd_is_BF(trx.mysql_thd, 0)) { WSREP_DEBUG("Avoiding background statistics" " calculation for table %s.", table->name.m_name); diff --git a/storage/innobase/include/dict0stats.h b/storage/innobase/include/dict0stats.h index 98956412ae2..00ac6eb4745 100644 --- a/storage/innobase/include/dict0stats.h +++ b/storage/innobase/include/dict0stats.h @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 2009, 2018, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2017, 2018, MariaDB Corporation. +Copyright (c) 2017, 2020, 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 @@ -115,16 +115,16 @@ dict_stats_deinit( /** Update the table modification counter and if necessary, schedule new estimates for table and index statistics to be calculated. @param[in,out] table persistent or temporary table -@param[in] thd current session */ -void dict_stats_update_if_needed(dict_table_t* table, THD* thd) - MY_ATTRIBUTE((nonnull(1))); +@param[in] trx transaction */ +void dict_stats_update_if_needed(dict_table_t *table, const trx_t &trx) + MY_ATTRIBUTE((nonnull)); #else /** Update the table modification counter and if necessary, schedule new estimates for table and index statistics to be calculated. @param[in,out] table persistent or temporary table */ -void dict_stats_update_if_needed_func(dict_table_t* table) +void dict_stats_update_if_needed_func(dict_table_t *table) MY_ATTRIBUTE((nonnull)); -# define dict_stats_update_if_needed(t,thd) dict_stats_update_if_needed_func(t) +# define dict_stats_update_if_needed(t,trx) dict_stats_update_if_needed_func(t) #endif /*********************************************************************//** diff --git a/storage/innobase/row/row0mysql.cc b/storage/innobase/row/row0mysql.cc index d80b7e5854a..3393b5331ae 100644 --- a/storage/innobase/row/row0mysql.cc +++ b/storage/innobase/row/row0mysql.cc @@ -1574,7 +1574,7 @@ error_exit: memcpy(prebuilt->row_id, node->sys_buf, DATA_ROW_ID_LEN); } - dict_stats_update_if_needed(table, trx->mysql_thd); + dict_stats_update_if_needed(table, *trx); trx->op_info = ""; if (blob_heap != NULL) { @@ -1958,7 +1958,7 @@ row_update_for_mysql(row_prebuilt_t* prebuilt) } if (update_statistics) { - dict_stats_update_if_needed(prebuilt->table, trx->mysql_thd); + dict_stats_update_if_needed(prebuilt->table, *trx); } else { /* Always update the table modification counter. */ prebuilt->table->stat_modified_counter++; @@ -2208,7 +2208,7 @@ static dberr_t row_update_vers_insert(que_thr_t* thr, upd_node_t* node) case DB_SUCCESS: srv_stats.n_rows_inserted.inc( static_cast<size_t>(trx->id)); - dict_stats_update_if_needed(table, trx->mysql_thd); + dict_stats_update_if_needed(table, *trx); goto exit; } } @@ -2302,8 +2302,7 @@ row_update_cascade_for_mysql( } if (stats) { - dict_stats_update_if_needed(node->table, - trx->mysql_thd); + dict_stats_update_if_needed(node->table, *trx); } else { /* Always update the table modification counter. */ diff --git a/storage/innobase/row/row0purge.cc b/storage/innobase/row/row0purge.cc index bca6d802a53..0eecb9bdf37 100644 --- a/storage/innobase/row/row0purge.cc +++ b/storage/innobase/row/row0purge.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 1997, 2017, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2017, 2019, MariaDB Corporation. +Copyright (c) 2017, 2020, 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 @@ -1194,8 +1194,7 @@ row_purge_record_func( if (node->table->stat_initialized && srv_stats_include_delete_marked) { dict_stats_update_if_needed( - node->table, - thr->graph->trx->mysql_thd); + node->table, *thr->graph->trx); } MONITOR_INC(MONITOR_N_DEL_ROW_PURGE); } diff --git a/storage/innobase/row/row0uins.cc b/storage/innobase/row/row0uins.cc index 1c24e7bd177..4ceebdcd699 100644 --- a/storage/innobase/row/row0uins.cc +++ b/storage/innobase/row/row0uins.cc @@ -1,7 +1,7 @@ /***************************************************************************** Copyright (c) 1997, 2017, Oracle and/or its affiliates. All Rights Reserved. -Copyright (c) 2017, 2019, MariaDB Corporation. +Copyright (c) 2017, 2020, 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 @@ -624,8 +624,8 @@ row_undo_ins( already be holding dict_sys->mutex, which would be acquired when updating statistics. */ if (!dict_locked) { - dict_stats_update_if_needed( - node->table, node->trx->mysql_thd); + dict_stats_update_if_needed(node->table, + *node->trx); } } } diff --git a/storage/innobase/row/row0umod.cc b/storage/innobase/row/row0umod.cc index 11de19ba62c..93197369fdf 100644 --- a/storage/innobase/row/row0umod.cc +++ b/storage/innobase/row/row0umod.cc @@ -1350,8 +1350,8 @@ rollback_clust: already be holding dict_sys->mutex, which would be acquired when updating statistics. */ if (update_statistics && !dict_locked) { - dict_stats_update_if_needed( - node->table, node->trx->mysql_thd); + dict_stats_update_if_needed(node->table, + *node->trx); } else { node->table->stat_modified_counter++; } diff --git a/storage/innobase/trx/trx0roll.cc b/storage/innobase/trx/trx0roll.cc index c5a7c2ca625..87183174992 100644 --- a/storage/innobase/trx/trx0roll.cc +++ b/storage/innobase/trx/trx0roll.cc @@ -450,9 +450,8 @@ trx_rollback_to_savepoint_for_mysql_low( trx->op_info = ""; #ifdef WITH_WSREP - if (wsrep_on(trx->mysql_thd) && - trx->lock.was_chosen_as_deadlock_victim) { - trx->lock.was_chosen_as_deadlock_victim = FALSE; + if (trx->is_wsrep()) { + trx->lock.was_chosen_as_deadlock_victim = false; } #endif return(err); @@ -911,12 +910,6 @@ trx_roll_try_truncate(trx_t* trx) trx_undo_truncate_end(undo, undo_no, true); mutex_exit(&undo->rseg->mutex); } - -#ifdef WITH_WSREP_OUT - if (wsrep_on(trx->mysql_thd)) { - trx->lock.was_chosen_as_deadlock_victim = FALSE; - } -#endif /* WITH_WSREP */ } /***********************************************************************//** |