Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.2.7, 10.3.1
Description
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, 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=OFF. 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, in MariaDB Server 10.2.7.
Attachments
Issue Links
- duplicates
-
MDEV-15895 Innodb cleanup : use pfs_os_file_t for temporary merge files, not int file descriptors
- Closed
- relates to
-
MDEV-19231 make DB_SUCCESS equals 0
- Closed