maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #08580
Re: [Commits] b2db8e8: MDEV-7949: Item_field::used_tables() takes 0.29% in OLTP RO
Hi Sanja,
this patch looks Ok, just one minor suggestion inline. Though effect for given
workload is quite moderate:
Item_field::used_tables 0.21% -> 0.20%
Item_basic_constant::used_tables 0.11% -> 0.11%
Item_func::used_tables 0.05% -> 0.05%
Item_sum::used_tables 0.00% -> 0.00%
On Wed, May 13, 2015 at 04:17:26PM +0200, sanja@xxxxxxxxxxx wrote:
> revision-id: b2db8e85422a455a10cd28ef7e44977182528f70
> parent(s): b22959903b89e798f8804ec9a815c88f75915cd9
> committer: Oleksandr Byelkin
> branch nick: server
> timestamp: 2015-05-13 16:17:22 +0200
> message:
>
> MDEV-7949: Item_field::used_tables() takes 0.29% in OLTP RO
>
> small sixes of used_tables() usage
>
...skip...
> diff --git a/sql/item_func.h b/sql/item_func.h
> index 0d57c2b..c48cd84 100644
> --- a/sql/item_func.h
> +++ b/sql/item_func.h
> @@ -1337,7 +1337,7 @@ class Item_func_sleep :public Item_int_func
> const char *func_name() const { return "sleep"; }
> table_map used_tables() const
> {
> - return Item_int_func::used_tables() | RAND_TABLE_BIT;
> + return used_tables_cache | RAND_TABLE_BIT;
> }
> bool is_expensive() { return 1; }
> longlong val_int();
> @@ -1591,7 +1591,7 @@ class Item_func_get_lock :public Item_int_func
> void fix_length_and_dec() { max_length=1; maybe_null=1;}
> table_map used_tables() const
> {
> - return Item_int_func::used_tables() | RAND_TABLE_BIT;
> + return used_tables_cache | RAND_TABLE_BIT;
> }
> bool const_item() const { return 0; }
> bool is_expensive() { return 1; }
> @@ -1611,7 +1611,7 @@ class Item_func_release_lock :public Item_int_func
> void fix_length_and_dec() { max_length= 1; maybe_null= 1;}
> table_map used_tables() const
> {
> - return Item_int_func::used_tables() | RAND_TABLE_BIT;
> + return used_tables_cache | RAND_TABLE_BIT;
> }
> bool const_item() const { return 0; }
> bool is_expensive() { return 1; }
> @@ -1724,7 +1724,7 @@ class Item_func_set_user_var :public Item_func
> void fix_length_and_dec();
> table_map used_tables() const
> {
> - return Item_func::used_tables() | RAND_TABLE_BIT;
> + return used_tables_cache | RAND_TABLE_BIT;
> }
> bool const_item() const { return 0; }
> bool is_expensive() { return 1; }
Was there any reason for this change? Compiler should be clever enough to inline
used_tables() of base class here.
Regards,
Sergey
Follow ups