summaryrefslogtreecommitdiff
path: root/storage/xtradb/dict/dict0stats.cc
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2014-02-26 19:21:23 +0100
committerSergei Golubchik <sergii@pisem.net>2014-02-26 19:21:23 +0100
commitac585e9ed5d4073b023387c77f90c278f137e469 (patch)
tree852de46e59c6763c02647a28f87af76df6d1c582 /storage/xtradb/dict/dict0stats.cc
parent6bc7bd0eb233aa08702bcc0f0c3ca8b73fc32294 (diff)
parentb338c8eb56d92bc3a5f4665ad74e93a840eb96d3 (diff)
downloadmariadb-git-ac585e9ed5d4073b023387c77f90c278f137e469.tar.gz
Percona-Server-5.6.15-rel63.0.tar.gz merge
Diffstat (limited to 'storage/xtradb/dict/dict0stats.cc')
-rw-r--r--storage/xtradb/dict/dict0stats.cc27
1 files changed, 15 insertions, 12 deletions
diff --git a/storage/xtradb/dict/dict0stats.cc b/storage/xtradb/dict/dict0stats.cc
index bfd0542b8e2..8bf02f9785c 100644
--- a/storage/xtradb/dict/dict0stats.cc
+++ b/storage/xtradb/dict/dict0stats.cc
@@ -780,10 +780,21 @@ dict_stats_update_transient_for_index(
/*==================================*/
dict_index_t* index) /*!< in/out: index */
{
- if (UNIV_LIKELY
- (srv_force_recovery < SRV_FORCE_NO_IBUF_MERGE
- || (srv_force_recovery < SRV_FORCE_NO_LOG_REDO
- && dict_index_is_clust(index)))) {
+ if (srv_force_recovery >= SRV_FORCE_NO_TRX_UNDO
+ && (srv_force_recovery >= SRV_FORCE_NO_LOG_REDO
+ || !dict_index_is_clust(index))) {
+ /* If we have set a high innodb_force_recovery
+ level, do not calculate statistics, as a badly
+ corrupted index can cause a crash in it.
+ Initialize some bogus index cardinality
+ statistics, so that the data can be queried in
+ various means, also via secondary indexes. */
+ dict_stats_empty_index(index);
+#if defined UNIV_DEBUG || defined UNIV_IBUF_DEBUG
+ } else if (ibuf_debug && !dict_index_is_clust(index)) {
+ dict_stats_empty_index(index);
+#endif /* UNIV_DEBUG || UNIV_IBUF_DEBUG */
+ } else {
mtr_t mtr;
ulint size;
mtr_start(&mtr);
@@ -812,14 +823,6 @@ dict_stats_update_transient_for_index(
index->stat_n_leaf_pages = size;
btr_estimate_number_of_different_key_vals(index);
- } else {
- /* If we have set a high innodb_force_recovery
- level, do not calculate statistics, as a badly
- corrupted index can cause a crash in it.
- Initialize some bogus index cardinality
- statistics, so that the data can be queried in
- various means, also via secondary indexes. */
- dict_stats_empty_index(index);
}
}