• unknown's avatar
    Fixed bug #36488: regexp returns false matches, concatenating · 61bb9c86
    unknown authored
                      with previous rows.
    
    The WHERE clause containing expression:
      CONCAT(empty_field1, empty_field2, ..., 'literal constant', ...)
        REGEXP 'regular expression'
    may return wrong matches.
    
    Optimization of the CONCAT function has been fixed.
    
    
    
    mysql-test/r/func_concat.result:
      Added test case for bug #36488.
    mysql-test/t/func_concat.test:
      Added test case for bug #36488.
    sql/item_strfunc.cc:
      Fixed bug #36488.
      The Item_func_concat::val_str method is optimized to
      use first non-empty argument of the CONCAT function for in-place
      result accumulation. This optimization is acceptable if that
      first argument is not a constant.
      However, current implementation checks this condition only for
      the first actual argument of the CONCAT function.
      So, the Item_func_concat::val_str method can corrupt values
      of, for example, literal strings by appending random data.
      
      The Item_func_concat::val_str method has been modified to take
      into account the ability to be modified in-place for the first
      non-empty argument.
    61bb9c86
func_concat.test 2.21 KB