• Marko Mäkelä's avatar
    MDEV-19725 Incorrect error handling in ALTER TABLE · cbac8f93
    Marko Mäkelä authored
    Some I/O functions and macros that are declared in os0file.h used to
    return a Boolean status code (nonzero on success). In MySQL 5.7, they
    were changed to return dberr_t instead. Alas, in MariaDB Server 10.2,
    some uses of functions were not adjusted to the changed return value.
    
    Until MDEV-19231, the valid values of dberr_t were always nonzero.
    This means that some code that was incorrectly checking for a zero
    return value from the functions would never detect a failure.
    
    After MDEV-19231, some tests for ALTER ONLINE TABLE would fail with
    cmake -DPLUGIN_PERFSCHEMA=NO. It turned out that the wrappers
    pfs_os_file_read_no_error_handling_int_fd_func() and
    pfs_os_file_write_int_fd_func() were wrongly returning
    bool instead of dberr_t. Also the callers of these functions were
    wrongly expecting bool (nonzero on success) instead of dberr_t.
    
    This mistake had been made when the addition of these functions was
    merged from MySQL 5.6.36 and 5.7.18 into MariaDB Server 10.2.7.
    
    This fix also reverts commit 40becbc3
    which attempted to work around the problem.
    cbac8f93
os0file.h 50.8 KB