• Ramil Kalimullin's avatar
    Fix for · 34776294
    Ramil Kalimullin authored
    bug#33094: Error in upgrading from 5.0 to 5.1 when table contains
    triggers
    and
    #41385: Crash when attempting to repair a #mysql50# upgraded table
    with triggers.
    
    Problem:
    1. trigger code didn't assume a table name may have
    a "#mysql50#" prefix, that may lead to a failing ASSERT().
    2. "ALTER DATABASE ... UPGRADE DATA DIRECTORY NAME" failed
    for databases with "#mysql50#" prefix if any trigger.
    3. mysqlcheck --fix-table-name didn't use UTF8 as a default
    character set that resulted in (parsing) errors for tables with
    non-latin symbols in their names and definitions of triggers.
    
    Fix:
    1. properly handle table/database names with "#mysql50#" prefix.
    2. handle --default-character-set mysqlcheck option;
    if mysqlcheck is launched with --fix-table-name or --fix-db-name
    set default character set to UTF8 if no --default-character-set
    option given.
    
    Note: if given --fix-table-name or --fix-db-name option,
    without --default-character-set mysqlcheck option
    default character set is UTF8.
    34776294
sql_trigger.cc 68 KB