• unknown's avatar
    Fixed bug #17526: incorrect print method · fbf07364
    unknown authored
    for class Item_func_trim. 
    For 4.1 it caused wrong output for EXPLAIN EXTENDED commands
    if expressions with the TRIM function of two arguments were used.
    For 5.0 it caused an error message when trying to select
    from a view with the TRIM function of two arguments.
    This unexpected error message was due to the fact that the
    print method for the class Item_func_trim was inherited from
    the class Item_func. Yet the TRIM function does not take a list
    of its arguments. Rather it takes the arguments in the form:
      [{BOTH | LEADING | TRAILING} [remstr] FROM] str) |
      [remstr FROM] str
    
    
    mysql-test/r/func_str.result:
      Added a test case for bug #17526: uncorrect print method
      for class Item_func_trim.
    mysql-test/t/func_str.test:
      Added a test case for bug #17526: incorrect print method
      for class Item_func_trim.
    sql/item_strfunc.cc:
      Fixed bug #17526: incorrect print method
      for class Item_func_trim.
          
      Added an implementation for the virtual function print
      in the class Item_func_trim.
      The implementation takes into account the fact the TRIM
      function takes the arguments in the following forms:
        [{BOTH | LEADING | TRAILING} [remstr] FROM] str) |
        [remstr FROM] str
    sql/item_strfunc.h:
      Fixed bug #17526: incorrect print method
      for class Item_func_trim.
          
      Added an implementation for the virtual function print
      in the class Item_func_trim.
      Declared a virtual method to return the mode of the TRIM 
      function: LEADING, TRAILING or BOTH.
      Added implementations of this method for Item_func_trim and
      its descendants Item_func_ltrim and Item_func_rtrim.
    fbf07364
item_strfunc.h 20.1 KB