List:Commits« Previous MessageNext Message »
From:Guilhem Bichot Date:January 11 2011 1:38pm
Subject:Re: bzr commit into mysql-next-mr-bugfixing branch (jorgen.loland:3247)
WL#4800
View as plain text  
Hello Jorgen,

As you found out, in the previous review, three of my comments can be 
ignored.
I made a new review of the latest commit, please find below some more 
comments.

Jorgen Loland a écrit, Le 05.01.2011 14:48:
> #At
> file:///export/home/jl208045/mysql/wl4800/mysql-next-mr-opt-backporting-wl4800-range-subselect/
> based on revid:guilhem@stripped
> 
>  3247 Jorgen Loland	2011-01-05
>       WL#4800: Optimizer trace/debugger
>       
>       Fix tracepoints so that all mtr test cases can be traced without 
>       JSON syntax errors.
>       
>       Added DYNAMIC_RANGE and REPEATED_SUBSELECT tracing features to
>       avoid repeated tracing of range analysis and execution, 
>       respectively, of subselects.
>      @ sql/item_subselect.cc
>         Added Item_subselect::executed_before used to avoid tracing of 
>         subquery execution when this happens repeatedly for each record
>         in outer select.
>      @ sql/item_subselect.h
>         Added Item_subselect::executed_before used to avoid tracing of 
>         subquery execution when this happens repeatedly for each record
>         in outer select.
>      @ sql/opt_range.cc
>         Add tracepoints to range optimizer
>      @ sql/sql_select.cc
>         Add tracepoints to range optimizer
> 
>     modified:
>       mysql-test/r/mysqld--help-notwin.result
>       mysql-test/r/optimizer_trace2.result
>       mysql-test/r/optimizer_trace_charset.result
>       mysql-test/r/optimizer_trace_no_prot.result
>       mysql-test/r/optimizer_trace_ps_prot.result

this ps_prot.result has not been updated enough, test fails. Suggestion 
for next commit: comparing ps_prot.result and no_prot.result to see 
whether some oddity has appeared.

> === modified file 'mysql-test/r/optimizer_trace_range.result'
> --- a/mysql-test/r/optimizer_trace_range.result	2011-01-03 20:36:18 +0000
> +++ b/mysql-test/r/optimizer_trace_range.result	2011-01-05 13:48:15 +0000
> +EXPLAIN SELECT STRAIGHT_JOIN * FROM t1, t2 
> +WHERE t1.key1=t2.key1a AND t1.key2 > 1020	{
>    "steps": [
>      {

In this trace we have empty "semijoin_strategy_choice" objects coming 
from advance_sj_state(). In greedy_search(), the call is under "if 
(has_sj)" so we don't see "semijoin_strategy_choice" if there is no 
semijoin. Could you please add the same if(has_sj) in 
optimize_straight_join()?

> === modified file 'mysql-test/t/optimizer_trace_range.test'

> +--echo
> +# Make quick select for ordering inside test_if_skip_sort_order
> +EXPLAIN SELECT * FROM t1 WHERE b BETWEEN 1 AND 2 ORDER BY b,a;
> +--echo
> +SELECT * FROM information_schema.OPTIMIZER_TRACE;

In this trace, the mentioned quick select 
("records_estimation_for_index_ordering") appears 3 times in 
join_optimization and once in join_execution. Do you have an idea why we 
call it so many times? That's just my curiosity.
Update: I think you just sent a mail to the team about this.

Thread
bzr commit into mysql-next-mr-bugfixing branch (jorgen.loland:3247) WL#4800Jorgen Loland5 Jan
  • Re: bzr commit into mysql-next-mr-bugfixing branch (jorgen.loland:3247)WL#4800Guilhem Bichot11 Jan
    • Re: bzr commit into mysql-next-mr-bugfixing branch (jorgen.loland:3247)WL#4800Jorgen Loland14 Jan