• unknown's avatar
    Fix for BUG#30029: mysql_upgrade fails for 5.0 -> 5.1.21, · 361fda82
    unknown authored
    5.1.20 -> 5.1.21 upgrades.
    
    We generate mysql_fix_privilege.sql file, which contains SQL
    statements required to upgrade the system database. This script
    is generated by concatenation of mysql_system_tables.sql and
    mysql_system_tables_fix.sql.
    
    The problem was that
      - in order to create general_log and slow_log tables we use
        stored programs in mysql_system_tables.sql;
      - we upgrade mysql.proc table in mysql_system_tables_fix.sql;
    
    So, if mysql.proc table needs to be upgraded, stored procedures
    can not be used in mysql_system_tables.sql.
    
    In other words, in mysql_system_tables.sql stored programs must
    not be used because they may be unavailable at this point.
    
    The fix is to use dynamic SQL instead of stored programs.
    
    There is no test case for this bug because our test suite
    is not suitable for such test cases. system_mysql_db_fix* test
    cases play with the database "test". Here we need to modify
    the system database and we can not do that in the test suite.
    
    
    scripts/mysql_system_tables.sql:
      Use dynamic SQL instead of stored programs.
    361fda82
mysql_system_tables.sql 15.9 KB