Oracle MySQL 8.0.46, 8.4.9, and 9.7.0 are out (while I was drafting this, 8.4.10 and 9.7.1 came out too - based on them being security hotfixes and on source diff review I assume they build and test the same), thus I did my usual testing of compiling (Release, Debug, and Debug with ASan and UBSan) and running the testsuite under macOS 26.5.2 on Apple Silicon, with Xcode 26.6, and a range of Homebrew-packaged LLVM versions. Previous blog posts in the series: 9.7.0 early access; 8.0.45 / 8.4.8 / 9.6.0.
Builds
No need to use the bundled 3rd party libraries as the Homebrew ones suffice—good. LLVM 14-17 inclusive fail at CMake time due to what looks like newer macOS / older LLVM incompatibility. As usual, newer compilers uncover previously hidden defects.
8.0.46 builds hit:
- Bug #119238 Compilation error with clang 20
- Bug #119239 Compilation error with clang 21 (regressed on 8.4.9 too)
- Bug #119242 Clang 21 / XCode build warnings (8.4.9 too)
- Bug #119246 9.7.0-er2 compilation error with LLVM 21: LLVM 21 and 22 start hitting this in addition to previous XCode failures, on release build (8.4.9 and 9.7.0 too)
- Bug #120650 -Wunused-but-set-variable failing build: new LLVM 18, 19, & 20 compilation warnings (8.4.9 too)
- Bug #120653 LLVM 21 -Wformat / -Wmissing-format-attribute warnings: new LLVM 21 warnings (8.4.9 too)
8.4.9 shares most of the bugs with 8.0.46 as noted above, and
9.7.0 shares Bug #119246 as noted above, gets a new one for LLVM 18, and keeps an existing Xcode one:
What the above means is that there is no way to enable MySQL maintainer mode (making
warnings fatal) without some -Wno- compiler flags, which I have been adding to my
build script.
Tests
Bad news:
- Bug #119739 Test rpl_gtid.rpl_gtids_table_disable_binlog_on_slave result difference appeared on the 8.0 series too, I suspect it was always there. (8.0.46, 8.4.9, 9.7.0)
- Bug #120727 MakeHypergraphTest.AntiJoin unit test fails (9.7.0)
- Bug #120831 LogEventStatusSizeTest.LogEventBoundaryConditions test fails (9.7.0)
- Bug #120835 UBSan error on log0log.log_writer test (9.7.0)
No news:
- Bug #113189 ColumnStatisticsTest.StoreAndRestoreAttributesEquiHeight unit test fails (8.0.46)
- Bug #113190 Several tests in routertest_integration_routing_sharing_constrained_pools fail (8.0.46, 8.4.9)
- Bug #113260 Client error in error log: MY-004031 - The client was disconnected … (8.0.46, 8.4.9)
- Bug #113665 perfschema.relaylog fails with a result difference (8.4.9, 9.7.0)
- Bug #113709 StrXfrmTest.ChineseUTF8MB4 failing with an AddressSanitizer error (8.0.46)
- Bug #113722 Test main.index_merge_innodb failing with a result difference (8.4.9)
- Bug #114892 Test XComControlTest.SuspectMemberFailedRemovalDueToMajorityLoss fails (8.0.46)
- Bug #115480 Test innodb.log_first_rec_group failing (8.0.46)
- Bug #116369 rpl.rpl_semi_sync_alias crashes under AddressSanitizer (8.0.46, 8.4.9)
- Bug #116373 auth_sec.acl_tables_row_locking failing with result diff (8.0.46, 8.4.9)
- Bug #116385 Test main.mysql_upgrade_grant timing out on debug build (8.4.9)
- Bug #116394 Test binlog_gtid.binlog_gtid_binlog_recovery_errors crashes with an assert (9.7.0)
- Bug #118171 Test main.mysqldump-tablespace-escape failing (8.0.46)
- Bug #118185 Non-specific ASan error on TestLoaderGood/LoaderReadTest.load_wrong_version/0 (8.0.46, 8.4.9)
- Bug #118213 Test perfschema.idx_compare_mutex_instances fails under debug (8.4.9, 9.7.0)
- Bug #119251 Test rpl.rpl_seconds_behind_master failure (9.7.0)
- Bug #119253 innodb.tablespace_encrypt_9 crashing the server with assertion failure (9.7.0)
- Bug #119258 router integration tests failing to login (9.7.0)
- Bug #119735 Unhandled error log warning in main.initialize-sha256 (8.4.9)
- Bug #119746 innodb.table_encrypt_4 failing with a result difference (9.7.0)
Good news:
- Bug #116378 routertest_integration_routing_splitting crashing under AddressSanitizer - maybe? The unit test output is noisy, and sometimes it's hard for me to discern the different failure modes.
- Bug #118169 Test innodb.partition_upgrade_8019_mac_lctn_2_debug failing
- Bug #119247 Test main.log_buffered-big failure
- Bug #119249 Router unit test setup failures - likewise
- Bug #119250 routertest_integration_routing_sharing_constrained_pools missing connection_pool.so - likewise
- Bug #119738 global-buffer-overflow on INSTALL PLUGIN
- Bug #120088 Hypergraph MTR tests failing
One-off issues that I couldn't reliably reproduce:
- perfschema.memory_aggregate_no_a_no_u failed once under each of 8.0.46 and 8.4.9 debug with sanitizers build
- main.join_cache_bka_nobnl failed once under 8.0.46 debug with sanitizers build
- runtime_output_directory/gcs_xcom_control_interface-t failed once under 8.4.9 release build
- innodb_undo.purge_on_replica, main.join_cache_bka_nobnl failed once under 8.4.9 debug build
- innodb_zip.16k failed once under 8.4.9 debug with sanitizers build
- perfschema.system_events_plugin, innodb.trigger_function_lock_compare, main.join_cache_nojb, routertest_integration_routing_sharing_constrained_pools failed once under 9.7.0 debug build
- main.join_cache_bnl, innodb_undo.purge_on_replica failed once under 9.7.0 debug with sanitizers build
Test totals
To summarize, 3 new (and 1 got worse), 20 unchanged, and 7 fixed (3 of them tentatively) bugs. The total number of test failures is too high for my comfort, but there is a positive trend of fixed bugs outnumbering new ones. 8.0.46 is also the last 8.0-series release, thus the next time (if there is a next time) I'll do a farewell post for the bugs that die with it.