Re: when propagate_cond_constants will be called?
Øystein Grøvlen <[email protected]> Mon, 11 Feb 2013 15:19:38 +0100
| Newsgroups | gmane.comp.db.mysql.devel |
|---|---|
| Organization | Oracle |
| Message-ID | <[email protected]> |
On 02/10/13 05:12 PM, Mr. Left wrote:
> Hi, all
> Is there anyone can tell me when the function propagate_cond_constants() will be really used? Cause I found after the build_equal_items(), all Item_func::EQ_FUNC
> are transformed to Item_func::MULT_EQUAL_FUNC.
> And the example in mysql internals 8.2.1.1. Constant Propagation, just refer to propagate_cond_constants(), but all translate are really finished in build_equal_items().
>
> So I want to know when the function propagate_cond_constants() will really work? It's kind of you to supply an example.
> Thank you very much.
>
Hi,
If you look at the result files in the optimizer trace suite of MySQL
5.6 (mysql-test/suite/opt_trace/r/'), there is at least one example
where propagate_cond_constants() changes the condition. From
general_no_prot_all.result:
"condition_processing": {
"condition": "WHERE",
"original_condition": "((`t6`.`d` = ifnull(NULL,NULL)) and
(<cache>(5) = 1))",
"steps": [
{
"transformation": "equality_propagation",
"resulting_condition": "((`t6`.`d` = ifnull(NULL,NULL)) and
(<cache>(5) = 1))"
},
{
"transformation": "constant_propagation",
"resulting_condition": "((`t6`.`d` = NULL) and (<cache>(5) = 1))"
},
{
"transformation": "trivial_condition_removal",
"resulting_condition": null
}
] /* steps */
} /* condition_processing */
Hope this helps,
--
Øystein
--
MySQL Internals Mailing List
For list archives: http://lists.mysql.com/internals
To unsubscribe: http://lists.mysql.com/internals