diff options
author | Sergei Petrunia <psergey@askmonty.org> | 2014-06-24 23:58:13 +0400 |
---|---|---|
committer | Sergei Petrunia <psergey@askmonty.org> | 2014-06-24 23:58:13 +0400 |
commit | c3cfb6910a50f7ff094b03f9ef0b5d908f5e4760 (patch) | |
tree | 71a372728d4e3e3a70eb7a13ee29e2ea9237446c /sql/sql_explain.cc | |
parent | 06a87d77e62bad8ded0a384a70e13114011bf060 (diff) | |
download | mariadb-git-c3cfb6910a50f7ff094b03f9ef0b5d908f5e4760.tar.gz |
MDEV-406: ANALYZE $stmt: Scans that never executed will have r_rows=NULL
Diffstat (limited to 'sql/sql_explain.cc')
-rw-r--r-- | sql/sql_explain.cc | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/sql/sql_explain.cc b/sql/sql_explain.cc index 58029ba7907..adfceae346c 100644 --- a/sql/sql_explain.cc +++ b/sql/sql_explain.cc @@ -553,9 +553,16 @@ int Explain_table_access::print_explain(select_result_sink *output, uint8 explai /* `r_rows` */ if (is_analyze) { - ha_rows avg_rows= tracker.get_avg_rows(); - item_list.push_back(new Item_int((longlong) (ulonglong) avg_rows, - MY_INT64_NUM_DECIMAL_DIGITS)); + if (!tracker.has_scans()) + { + item_list.push_back(item_null); + } + else + { + ha_rows avg_rows= tracker.get_avg_rows(); + item_list.push_back(new Item_int((longlong) (ulonglong) avg_rows, + MY_INT64_NUM_DECIMAL_DIGITS)); + } } /* `filtered` */ @@ -572,12 +579,19 @@ int Explain_table_access::print_explain(select_result_sink *output, uint8 explai /* `r_filtered` */ if (is_analyze) { - double r_filtered; - if (tracker.r_rows > 0) - r_filtered= 100.0 * (double)tracker.r_rows_after_table_cond / tracker.r_rows; + if (!tracker.has_scans()) + { + item_list.push_back(item_null); + } else - r_filtered= 100.0; - item_list.push_back(new Item_float(r_filtered, 2)); + { + double r_filtered; + if (tracker.r_rows > 0) + r_filtered= 100.0 * (double)tracker.r_rows_after_table_cond / tracker.r_rows; + else + r_filtered= 100.0; + item_list.push_back(new Item_float(r_filtered, 2)); + } } /* `Extra` */ |