• unknown's avatar
    Fixed bug#30059. · 3891d436
    unknown authored
    Server handles truncation for assignment of too-long values
    into CHAR/VARCHAR/TEXT columns in a different ways when the
    truncated characters are spaces:
    1. CHAR(N) columns silently ignore end-space truncation;
    2. TEXT columns post a truncation warning/error in the
       non-strict/strict mode.
    3. VARCHAR columns always post a truncation note in
       any mode.
    
    Space truncation processing has been synchronised over
    CHAR/VARCHAR/TEXT columns: current behavior of VARCHAR
    columns has been propagated as standard.
    
    Binary-encoded string/BLOB columns are not affected.
    
    
    mysql-test/r/heap.result:
      Updated test case for bug#30059.
    mysql-test/r/innodb.result:
      Updated test case for bug#30059.
    mysql-test/r/myisam.result:
      Updated test case for bug#30059.
    mysql-test/r/strict.result:
      Updated test case for bug#30059.
    mysql-test/r/type_binary.result:
      Updated test case for bug#30059.
    mysql-test/r/warnings.result:
      Added test case for bug#30059.
    mysql-test/t/warnings.test:
      Added test case for bug#30059.
    sql/field.cc:
      Fixed bug#30059.
      The report_data_too_long function was replaced with the
      Field_longstr::report_if_important_data method.
      
      The Field_string::store and the Field_blob::store
      methods was synchronized with the Field_varstring::store
      method.
      Changes:
      1. to CHAR(N): posting of space truncation note has been added
         in both (strict and non-strict) modes;
      2. to BLOBs: a check for space truncation has been added,
         a warning in the non-strict mode and an error message in
         the strict mode have been replaced with a truncation note.
      
      Similar parts of Field_string::store, Field_blob::store and
      Field_varstring::store have been moved to the
      Field_longstr::report_if_important_data method.
    sql/field.h:
      Fixed bug#30059.
      The Field_longstr::report_if_important_data method has been declared.
    3891d436
field.h 64.2 KB