diff options
author | Oleksandr Byelkin <sanja@mariadb.com> | 2015-03-26 10:48:56 +0100 |
---|---|---|
committer | Oleksandr Byelkin <sanja@mariadb.com> | 2015-03-29 15:33:15 +0200 |
commit | b2a1187307b7f7f79138cf87a21f84a836fca2a0 (patch) | |
tree | 359a7f8ab14e69ebce6927b58f4432fdff1b6139 /sql | |
parent | 9b8f86f8958116030de5a4e6ab75011cca251dfc (diff) | |
download | mariadb-git-b2a1187307b7f7f79138cf87a21f84a836fca2a0.tar.gz |
MDEV-7812: ANALYZE FORMAT=JSON UPDATE/DELETE doesnt print the r_total_time_ms
Tracking total time added in UPDATE/DELETE
Fixed selectivity calculation in UPDATE/DELETE
Macro definitions of time tracting fixed.
Diffstat (limited to 'sql')
-rw-r--r-- | sql/sql_delete.cc | 2 | ||||
-rw-r--r-- | sql/sql_explain.cc | 6 | ||||
-rw-r--r-- | sql/sql_explain.h | 5 | ||||
-rw-r--r-- | sql/sql_update.cc | 2 |
4 files changed, 12 insertions, 3 deletions
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index 8fd9b0b2ada..d0c304fc14f 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -542,6 +542,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, explain= (Explain_delete*)thd->lex->explain->get_upd_del_plan(); explain->tracker.on_scan_init(); + ANALYZE_START_TRACKING(&explain->time_tracker); while (!(error=info.read_record(&info)) && !thd->killed && ! thd->is_error()) @@ -619,6 +620,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, end_read_record(&info); if (options & OPTION_QUICK) (void) table->file->extra(HA_EXTRA_NORMAL); + ANALYZE_STOP_TRACKING(&explain->time_tracker); cleanup: /* diff --git a/sql/sql_explain.cc b/sql/sql_explain.cc index 9d82f4fe19f..6c353185cb1 100644 --- a/sql/sql_explain.cc +++ b/sql/sql_explain.cc @@ -1892,7 +1892,7 @@ void Explain_update::print_explain_json(Explain_query *query, /* `r_filtered` */ if (is_analyze) { - double r_filtered= tracker.get_filtered_after_where(); + double r_filtered= tracker.get_filtered_after_where() * 100.0; writer->add_member("r_filtered").add_double(r_filtered); } @@ -1905,6 +1905,10 @@ void Explain_update::print_explain_json(Explain_query *query, if (using_io_buffer) writer->add_member("using_io_buffer").add_ll(1); + if (is_analyze && time_tracker.get_loops()) + writer-> + add_member("r_total_time_ms").add_double(time_tracker.get_time_ms()); + if (where_cond) { writer->add_member("attached_condition"); diff --git a/sql/sql_explain.h b/sql/sql_explain.h index e3b41eeb4f8..65027bdc907 100644 --- a/sql/sql_explain.h +++ b/sql/sql_explain.h @@ -131,11 +131,11 @@ public: #define ANALYZE_START_TRACKING(tracker) \ if (tracker) \ - { tracker->start_tracking(); } + { (tracker)->start_tracking(); } #define ANALYZE_STOP_TRACKING(tracker) \ if (tracker) \ - { tracker->stop_tracking(); } + { (tracker)->stop_tracking(); } /************************************************************************************** @@ -809,6 +809,7 @@ public: /* ANALYZE members and methods */ Table_access_tracker tracker; + Exec_time_tracker time_tracker; //psergey-todo: io-tracker here. virtual int print_explain(Explain_query *query, select_result_sink *output, diff --git a/sql/sql_update.cc b/sql/sql_update.cc index be4038ea23d..680d3d7bd79 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -731,6 +731,7 @@ int mysql_update(THD *thd, */ can_compare_record= records_are_comparable(table); explain->tracker.on_scan_init(); + ANALYZE_START_TRACKING(&explain->time_tracker); while (!(error=info.read_record(&info)) && !thd->killed) { @@ -907,6 +908,7 @@ int mysql_update(THD *thd, break; } } + ANALYZE_STOP_TRACKING(&explain->time_tracker); table->auto_increment_field_not_null= FALSE; dup_key_found= 0; /* |