• unknown's avatar
    Bug#19371 VARBINARY() have trailing zeros after upgrade from 4.1 · f90f1e30
    unknown authored
     - Detect if a table has field of type MYSQL_TYPE_VAR_STRING while running
       "CHECK TABLE t FOR UPGRADE" and indicate it need to be fixed
       with "REPAIR TABLE t".
     - When running a "REPAIR TABLE t" or "ALTER TABLE t FORCE" on the above
       table, install a special copy function to trim off the trailing spaces
       which we safely can say that the pre 5.0 mysqld didn't put there. 
    
    
    mysql-test/r/varbinary.result:
      Add test to see that a table with varbinary from 4.1 can be REPAIRED
    mysql-test/t/varbinary.test:
      Add test to see that a table with varbinary from 4.1 can be REPAIRED
    sql/field_conv.cc:
      Add new field copy function 'do_field_varbinary_pre50' used for copying
      between MYSQL_TYPE_VAR_STRING and MYSQL_TYPE_VARCHAR. It will remove trailing
      spaces from the field as MySQL <= 4.1 never stores the trailing spaces for
      a MYSQL_TYPE_VAR_STRING.
      Install this new copy function in ALTER TABLEs list of functions to use for
      copying data during and alter if from field is a <= 4.1 varbinary and to
      field is 5.0 varbinary.
    sql/handler.cc:
      If the table has a pre 5.0 varbinary, table not to be altered so the field
      type is upgraded to 5.0 version and trailing space can be trimmed.
    mysql-test/std_data/bug19371.MYD:
      New BitKeeper file ``mysql-test/std_data/bug19371.MYD''
    mysql-test/std_data/bug19371.MYI:
      New BitKeeper file ``mysql-test/std_data/bug19371.MYI''
    mysql-test/std_data/bug19371.frm:
      New BitKeeper file ``mysql-test/std_data/bug19371.frm''
    f90f1e30