• unknown's avatar
    Fixed bug #29442. · 725b4971
    unknown authored
    The SELECT INTO OUTFILE FIELDS ENCLOSED BY digit or minus sign,
    followed by the same LOAD DATA INFILE statement, used wrond encoding
    of non-string fields contained the enclosed character in their text
    representation.
    
    Example:
      SELECT 15, 9 INTO OUTFILE 'text' FIELDS ENCLOSED BY '5';
    
    Old encoded result in the text file:
      5155 595
             ^ was decoded as the 1st enclosing character of the 2nd field;
            ^ was skipped as garbage;
      ^    ^ was decoded as a pair of englosing characters of the 1st field;
          ^   was decoded as traling space of the first field;
        ^^ was decoded as a doubled enclosed character.
    
    New encoded result in the text file:
      51\55 595
      ^   ^ pair of enclosing characters of the 1st field;
        ^^ escaped enclosed character.
    
    
    
    sql/sql_class.h:
      Fixed bug #29442.
      The NUMERIC_CHARS macro constant has been defined to enumerate
      all possible characters of a numeric value text representation.
      The select_export::is_unsafe_field_sep boolean flag has been added
      to apply the encoding algorithm to non-string values when it is
      necessary.
    sql/sql_class.cc:
      Fixed bug #29442.
      The select_export::send_data method has been modified to encode text
      representation of fields of all data types like string fields.
    mysql-test/t/loaddata.test:
      Updated test case for bug #29442.
    mysql-test/r/loaddata.result:
      Updated test case for bug #29442.
    725b4971
sql_class.cc 61.6 KB