• Gleb Shchepa's avatar
    Bug #40021: Renaming view fails, archived .frm for view is · b82094a0
    Gleb Shchepa authored
                missing after downgrade
    
    Obsolete arc/ directory and view .frm file backup support
    has been removed by the patch for bug 17823. However, that
    bugfix caused a problem with "live downgrades" of the
    server: if we rename some view 4 times under 5.1.29/5.0.72
    and then try to rename it under 5.1.28/5.0.70 on the same
    database, the server fails with a error:
    
      query 'RENAME TABLE ... TO ...' failed: 6: Error on
      delete of '....frm-0001' (Errcode: 2)
    
    Also .frm file of that view may be lost (renamed to .frm~).
    
    The server failed because it tried to rename latest 3
    backup .frm files renaming the view: the server used an
    integer value of the "revision" field of .frm file to
    extract those file names. After the fix for bug 17823 those
    files were not created/maintained any more, however the
    "revision" field was incremented as usual. So, the server
    failed renaming non existent files.
    
    This fix solves the problem by removing the support for
    "revision" .frm file field:
    1. New server silently ignores existent "revision" fields
       in old .frm files and never write it down;
    2. Old server assumes, that missing "revision" field in new
       .frm files means default value of 0.
    3. Accordingly to the fix for bug 17823 the new server
       drops arc/ directory on alter/rename view, so after
       "live downgrade" old server begins maintenance of the
       arc/ directory from scratch without conflicts with .frm
       files.
    b82094a0
sql_db.cc 38.1 KB