Hi! 01.11.2011 18:19, timour@askmonty.org пишет:
At file:///home/tsk/mprog/src/5.3/
------------------------------------------------------------ revno: 3262 revision-id: timour@askmonty.org-20111101161919-hukh3tipjms3lfzf parent: sanja@askmonty.org-20111101112209-n4ghsy9hpliiassm fixes bug(s): https://launchpad.net/bugs/833702 committer: timour@askmonty.org branch nick: 5.3 timestamp: Tue 2011-11-01 18:19:19 +0200 message: Fix bug lp:833702
Analysis: Equality propagation propagated the constant '7' into args[0] of the Item_in_optimizer that stands for the "< ANY" predicate. At the same the min/max subquery rewrite swapped the order of the left and right operands of the "<" predicate, but used Item_in_subselect::left_expr.
As a result, when the<ANY predicate is executed early in the execution phase as a contant condition, instead of a constant right (swapped) argument of the< predicate, there was a field (t3.a). This field had no data, since the whole predicate is considered constant, and it is evaluated before any tables are read. Having junk in the field row buffer produced wrong result
Solution: Fix create_swap to pick the correct Item_in_optimizer left argument. OK to push.