• evgen@moonbone.local's avatar
    Bug#28778: Wrong result of BETWEEN when comparing a DATETIME field with an · 0a91c7cc
    evgen@moonbone.local authored
    integer constants.
    
    This bug is introduced by the fix for bug#16377. Before the fix the 
    Item_func_between::fix_length_and_dec method converted the second and third
    arguments to the type of the first argument if they were constant and the first
    argument is of the DATE/DATETIME type. That approach worked well for integer
    constants and sometimes produced bad result for string constants. The fix for
    the bug#16377 wrongly removed that code at all and as a result of this the
    comparison of a DATETIME field and an integer constant was carried out in a
    wrong way and sometimes led to wrong result sets.
    
    Now the Item_func_between::fix_length_and_dec method converts the second and
    third arguments to the type of the first argument if they are constant, the
    first argument is of the DATE/DATETIME type and the DATETIME comparator isn't
    applicable.
    0a91c7cc
item_cmpfunc.cc 122 KB