• Evgeny Potemkin's avatar
    Bug#46051: Incorrectly market field caused wrong result. · 63e6a59d
    Evgeny Potemkin authored
    In a subselect all fields from outer selects are marked as dependent on
    selects they are belong to. In some cases optimizer substitutes it for an
    equivalent expression. For example "a_field IN (SELECT outer_field)" is
    substituted with "a_field = outer_field". As we moved the outer_field to the
    upper select it's not really outer anymore. But it was left marked as outer.
    If exists an index over a_field optimizer choose wrong execution plan and thus
    return wrong result.
    
    Now the Item_in_subselect::single_value_transformer function removes dependent
    marking from fields when a subselect is optimized away.
    
    mysql-test/r/subselect.result:
      Added a test case for the bug#46051.
    mysql-test/t/subselect.test:
      Added a test case for the bug#46051.
    sql/item_subselect.cc:
      Bug#46051: Incorrectly market field caused wrong result.
      Now the Item_in_subselect::single_value_transformer function removes dependent
      marking from fields when a subselect is optimized away.
    63e6a59d
item_subselect.cc 67.8 KB