• Nikita Malyavin's avatar
    MDEV-31033 ER_KEY_NOT_FOUND upon online COPY ALTER on a partitioned table · c76072db
    Nikita Malyavin authored
    The row events were applied "twice": once for the ha_partition, and one
    more time for the underlying storage engine.
    
    There's no such problem in binlog/rpl, because ha_partiton::row_logging
    is normally set to false.
    
    The fix makes the events replicate only when the handler is a root handler.
    We will try to *guess* this by comparing it to table->file. The same
    approach is used in the MDEV-21540 fix, 231feabd. The assumption is made,
    that the row methods are only called for table->file (and never for a
    cloned handler), hence the assertions are added in ha_innobase and
    ha_myisam to make sure that this is true at least for those engines
    
    Also closes MDEV-31040, however the test is not included, since we have no
    convenient way to construct a deterministic version.
    c76072db
handler.h 204 KB