• unknown's avatar
    Move handling of suffix_length from strnxfrm_bin() to filesort to ensure... · b896d334
    unknown authored
    Move handling of suffix_length from strnxfrm_bin() to filesort to ensure proper sorting of all kind of binary objects
    field::sort_key() now adds length last for varbinary/blob
    VARBINARY/BLOB is now sorted by filesort so that shorter strings comes before longer ones
    Fixed issues in test cases from last merge
    
    
    
    mysql-test/r/select.result:
      Change column name in test to get GROUP BY to use the alias
    mysql-test/r/type_blob.result:
      Test BLOB and VARCHAR sorting
    mysql-test/t/select.test:
      Change column name in test to get GROUP BY to use the alias
      Drop used tables at start of test
      Don't use table names 'a', 'b' or 'c'
    mysql-test/t/type_blob.test:
      Test BLOB and VARCHAR sorting
    sql/field.cc:
      Store length last in VARBINARY() and BLOB() columns to get shorter strings sorted before longer onces
    sql/field.h:
      Added method 'sort_length()' to allow one to have length bytes last for VARBINARY/BLOB to get these to sort properly
    sql/filesort.cc:
      Use 'sort_length()' instead of 'pack_length()' to get length of field.
      Store suffix_length last for varbinary (blob) objects.
      The above ensures that BLOB/VARBINARY are correctly sorted (shorter strings before longer ones)
    sql/sql_class.h:
      Added sort suffix length (to get varbinary/blob to sort correctly)
    sql/sql_select.cc:
      Use sort_length() instead of pack_lengths()
    strings/ctype-bin.c:
      Don't let strnxfrm_bin store length last
      Better to do it in MySQL field object to ensure it's done properly for all cases
    b896d334
filesort.cc 42.9 KB