At file:///home/tsk/mprog/src/10.0-md83/
------------------------------------------------------------
revno: 3552
revision-id: timour@xxxxxxxxxxxx-20130809113013-ia2f7zzw3mv3in7u
parent: timour@xxxxxxxxxxxx-20130611081135-rge7p00h8e9nhypj
fixes bug: https://mariadb.atlassian.net/browse/MDEV-4648
committer: timour@xxxxxxxxxxxx
branch nick: 10.0-md83
timestamp: Fri 2013-08-09 14:30:13 +0300
message:
Fix bug MDEV-4648 SQ pushdown: Wrong result (missing rows) with materialization+semijoin, IN and ALL subqueries, UNION
(part of MDEV-83)
Analysis:
The cause of the wrong result was that the ALL subquery was incorrectly
attached to the last table in the join plan <t1, sj-mat, t2>. The ALL
subquery was transformed into a MIN expression, however it still depended
on OUTER_REF_TABLE_BIT as if it was a subquery. The reason for this
dependence was that the transformed MIN expression referred to the
Item_cache object of the left subquery operand created for the initial
Item_in_optimizer.
Solution:
When transforming an ALL subquery into a MIN/MAX expression, use the
actual left argument expression, instead of the Item_cache created
for the subquery.