• vasil's avatar
    branches/5.1: · e3482dd5
    vasil authored
    Merge a change from MySQL (fix the failing innodb test):
    
      ------------------------------------------------------------
      revno: 2646.12.1
      committer: Mattias Jonsson <mattiasj@mysql.com>
      branch nick: wl4176_2-51-bugteam
      timestamp: Mon 2008-08-11 20:02:03 +0200
      message:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        The main problem was that ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR
        PARTITION took another code path (over mysql_alter_table instead of
        mysql_admin_table) which differs in two ways:
        1) alter table opens the tables in a different way than admin tables do
           resulting in returning with error before it tried the command
        2) alter table does not start to send any diagnostic rows to the client
           which the lower admin functions continue to use -> resulting in
           assertion crash
        
        The fix:
        Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION to use
        the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE t.
        Adding check in mysql_admin_table to setup the partition list for
        which partitions that should be used.
        
        
        Partitioned tables will still not work with
        REPAIR TABLE/PARTITION USE_FRM, since that requires moving partitions
        to tables, REPAIR TABLE t USE_FRM, and check that the data still
        fulfills the partitioning function and then move the table back to
        being a partition.
        
        NOTE: I have removed the following functions from the handler
        interface:
        analyze_partitions, check_partitions, optimize_partitions,
        repair_partitions
        Since they are not longer needed.
        THIS ALTERS THE STORAGE ENGINE API
    
    I have verified that OPTIMIZE TABLE actually rebuilds the table
    and calls ANALYZE.
    
    Approved by:	Heikki
    e3482dd5
innodb.result 96.1 KB