• unknown's avatar
    Bug#28450: The Item_date_add_interval in select list may fail the field · d393c9e6
    unknown authored
    type assertion.
    
    The bug was introduced by the patch for bug #16377.
    The "+ INTERVAL" (Item_date_add_interval) function detects its result type
    by the type of its first argument. But in some cases it returns STRING
    as the result type. This happens when, for example, the first argument is a 
    DATE represented as string. All this makes the get_datetime_value()
    function misinterpret such result and return wrong DATE/DATETIME value.
    To avoid such cases in the fix for #16377 the code that detects correct result
    field type on the first execution was added to the
    Item_date_add_interval::get_date() function. Due to this the result
    field type of the Item_date_add_interval item stored by the send_fields()
    function differs from item's result field type at the moment when
    the item is actually sent. It causes an assertion failure.
    
    Now the get_datetime_value() detects that the DATE value is returned by
    some item not only by checking the result field type but also by comparing
    the returned value with the 100000000L constant - any DATE value should be
    less than this value.
    Removed result field type adjusting code from the
    Item_date_add_interval::get_date() function.
    
    
    sql/item_cmpfunc.cc:
      Bug#28450: The Item_date_add_interval in select list may fail the field 
      type assertion.
      Now the get_datetime_value() detects that the DATE value is returned by
      some item not only by checking the result field type but also by comparing
      the returned value with the 100000000L constant - any DATE value should be
      less than this value.
    mysql-test/r/func_date_add.result:
      Added a test case for the bug#28450: The Item_date_add_interval in select list may fail the field
      type assertion.
    sql/item_timefunc.cc:
      Bug#28450: The Item_date_add_interval in select list may fail the field 
      type assertion.
      Removed result field type adjusting code from the
      Item_date_add_interval::get_date() function.
    mysql-test/t/func_date_add.test:
      Added a test case for the bug#28450: The Item_date_add_interval in select list may fail the field
      type assertion.
    d393c9e6
item_timefunc.cc 88.7 KB