From 5fc53b7cfed0135e12cedb18c83823b8318f9267 Mon Sep 17 00:00:00 2001 From: Sergey Vojtovich Date: Tue, 2 Jun 2015 15:39:14 +0400 Subject: [PATCH] MDEV-8202 - st_select_lex::master_unit() takes 0.17% in OLTP RO To make st_select_lex::master_unit() inlinable: - moved it's definition to sql_lex.h - removed base class virtual master_unit() declaration since this method is specific to st_select_lex Overhead change: st_select_lex::master_unit() 0.17% -> out of radar execute_sqlcom_select() 0.13% -> 0.12% JOIN::save_explain_data_intern() 0.27% -> 0.23% JOIN::optimize_inner() 0.76% -> 0.72% JOIN::exec_inner() 0.30% -> 0.24% JOIN::prepare() 0.30% -> 0.29% JOIN::optimize() 0.05% -> 0.05% --- sql/sql_lex.cc | 12 ------------ sql/sql_lex.h | 4 +--- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index 84b0af98963..992510a18e6 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -2232,12 +2232,6 @@ bool st_select_lex::test_limit() -st_select_lex_unit* st_select_lex_unit::master_unit() -{ - return this; -} - - st_select_lex* st_select_lex_unit::outer_select() { return (st_select_lex*) master; @@ -2345,12 +2339,6 @@ bool st_select_lex::add_ftfunc_to_list(Item_func_match *func) } -st_select_lex_unit* st_select_lex::master_unit() -{ - return (st_select_lex_unit*) master; -} - - st_select_lex* st_select_lex::outer_select() { return (st_select_lex*) master->get_master(); diff --git a/sql/sql_lex.h b/sql/sql_lex.h index dcbbb98fcba..20b156a36b6 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -526,7 +526,6 @@ public: void exclude(); void exclude_from_tree(); - virtual st_select_lex_unit* master_unit()= 0; virtual st_select_lex* outer_select()= 0; virtual st_select_lex* return_after_parsing()= 0; @@ -668,7 +667,6 @@ public: TABLE *insert_table_with_stored_vcol; void init_query(); - st_select_lex_unit* master_unit(); st_select_lex* outer_select(); st_select_lex* first_select() { @@ -898,7 +896,7 @@ public: void init_query(); void init_select(); - st_select_lex_unit* master_unit(); + st_select_lex_unit* master_unit() { return (st_select_lex_unit*) master; } st_select_lex_unit* first_inner_unit() { return (st_select_lex_unit*) slave;