• Aleksey Midenkov's avatar
    MDEV-28727 ALTER TABLE ALGORITHM=NOCOPY does not work after upgrade · 1ea5e402
    Aleksey Midenkov authored
    MDEV-20704 changed the rules of how (HA_BINARY_PACK_KEY |
    HA_VAR_LENGTH_KEY) flags are added. Older FRMs before that fix had
    these flags for DOUBLE index. After that fix when ALTER sees such old
    FRM it thinks it cannot do instant alter because of failed
    compare_keys_but_name(): it compares flags against tmp table created
    by ALTER.
    
    MDEV-20704 fix was actually not about DOUBLE type but about
    FIELDFLAG_BLOB which affected DOUBLE. So there is no direct knowledge
    that any other types were not affected.
    
    The proposed fix under CHECK TABLE checks if FRM has
    (HA_BINARY_PACK_KEY | HA_VAR_LENGTH_KEY) flags and was created prior
    MDEV-20704 and if so issues "needs upgrade". When mysqlcheck and
    mysql_upgrade see such status they issue ALTER TABLE FORCE and upgrade
    the table to the version of server.
    1ea5e402
handler.cc 233 KB