Tuesday, October 28, 2025

Building and testing MySQL 8.0.44 / 8.4.7 / 9.5.0 releases on macOS

Oracle MySQL 8.0.44 / 8.4.7 / 9.5.0 are out and it's time for me to build and run their tests on macOS, Apple Silicon hardware. I have skipped the review of the previous set of releases this summer due to personal reasons, so this covers the delta from 8.0.42 / 8.4.5 / 9.3.0, out in spring.

Build

No need to use any of the bundled 3rd party libraries, and the current XCode (26.0.1) compiles all the releases. As usual, things get more interesting with Homebrew-packaged LLVM. All releases fail to build with LLVM 17 and lower versions with a bizarre CMake error, which may have to do more with the newer macOS version 26 than MySQL. LLVM 18 and 19 build fine.

8.0.44: does not build with 20 & 21:

8.4.7: builds with LLVM 20, and 21 has a different error than 8.0.44: Bug #119242 8.4.7 fails to build with clang 21.

9.5.0: builds with LLVM 20, and 21 has a different error from both 8.0.44 and 8.4.7: Bug #119246 9.5.0 compilation error with LLVM 21

The newest compiler errors are, unfortunately, expected. So, all in all, things are looking good here.

Tests

A lot of churn here over the past two releases.

Bad news:

No news, aka previously reported bugs with no to little changes:

Good news:

One-off issues:

  • merge_innodb-t on 8.0.44 and 8.4.7, debug + sanitizers build
  • gcs_xcom_control_interface on 8.0.44 and 9.5.0 release builds
  • routertest_integration_routing_direct on 8.0.44 release build
  • binlog_gtid.binlog_check_gtid_persistor_compatibility crashed on 8.4.7 debug build
  • rpl_gtid.rpl_gtids_table_disable_binlog_on_slave result difference on 8.4.7 debug build
  • innodb.trigger_function_lock_compare timeout on 8.4.7 debug build
  • routertest_integration_routing_splitting on 8.4.7 debug w/ sanitizers builds, maybe Bug #116378 routertest_integration_routing_splitting crashing under AddressSanitizer, but was not able to confirm
  • perfschema.keyring_keys result difference on 8.4.7 release build
  • json.array_index result difference on 9.5.0 debug w/ sanitizers build
  • perfschema.error_log result difference on 9.5.0 debug w/ sanitizers build
  • main.slow_log result difference on 9.5.0 debug w/ sanitizers build
  • router.app_specific_metadata_v_latest result difference on 9.5.0 release build
  • innodb_undo.truncate test assertion failure on 9.5.0 debug build

Conclusion

Without the one-offs I have 9 new, 15 unchanged, and 12 fixed bugs. At last the fixed ones outnumber the new ones, hopefully this trend will continue.

Friday, May 16, 2025

Building and testing MySQL 8.0.42 / 8.4.5 / 9.3.0 on macOS

Previously: 8.0.41 / 8.4.4 / 9.2.0

MySQL 8.0.42 / 8.4.5 / 9.3.0 are out, and as usual, I have built and tested the new releases on macOS, due to its popularity as the server OS, of course.

Build

The 8.0 series don't build with the current XCode clang because of bug 118026 (Build failed with apple clang 17). That's inconvenient, but Homebrew-packaged LLVM clang versions 14 to 18 build it fine.

Another pre-existing build bug 117299 (ddl0bulk.h:236:15: error: parameter 'prebuilt' not found in the function declaration [-Werror,-Wdocumentation]) previously only affected 8.0, but now hits 8.4. Of course, the workarounds are simple enough.

I have also reported bug 118161 (Having Homebrew-installed googletest breaks build). I suspect this is not a 8.0.42 regression, thus will not be counting towards the running bug totals.

So, for build, we have one bug with no change, and one slightly worsened. Meh, but not too bad either.

Test

Here the things are not looking as good.

Bad news first. New bugs and existing bugs with substantial regressions. The number is substantial:

Bugs with no news:

Closed bugs or bugs that have improved in some ways:

Did not test:

One-off issues that I wasn't able to repeat properly for bug reporting.

  • rpl_gtid.rpl_gtids_table_disable_binlog_on_slave on 8.0.42
  • rpl_gtid.rpl_gtid_create_select on 8.0.42
  • test_services.test_table_access on 8.0.42
  • main.system_variable_source on 8.0.42
  • innodb.trigger_function_lock_compare on 8.0.42
  • gcs_xcom_control_interface-t on 8.0.42 and 9.3.0
  • router.authentication_mysql_accounts on 9.3.0
  • routertest_integration_routing_sharing on 9.3.0
  • routertest_integration_routing_sharing_constrained_pools on 9.3.0
  • rpl_nogtid.rpl_semi_sync_uninstall_plugin on 9.3.0
  • perfschema.idx_compare_events_waits_history on 9.3.0
  • sys_vars.log_slow_admin_statements_func on 9.3.0
  • main.subquery_mat_all on 9.3.0

Conclusion

Without the one-off issues I have 13 (!) new, 15 unchanged, 2 fixed, and 1 untested bug. The positive trend of the previous set of releases is no more, and the set of open issues almost doubles in size. I hope that the next quarterly release will look better.

Wednesday, January 29, 2025

Building and testing MySQL 8.0.41 / 8.4.4 / 9.2.0 on macOS

Previously: 8.0.40 / 8.4.3 / 9.1.0

Oracle released MySQL 8.0.41 / 8.4.4 / 9.2.0, and it's time for me to build and test it under macOS, of all things!

But first, a detour to the last set of releases Valgrind results, because its run took a few weeks on 9.1.0, and that's without --big-test. A big part of tests timed out, or failed randomly. There appear no errors that are diagnosed during server operation, and the shutdown logs are way too verbose for me to try to find any memory leaks. Perhaps 9.2.0 will fare better, and I will reduce --parallel further. Will it take two months to run? We will see!

Build

Mostly good news here, again. -DWITH_ZLIB=bundled is no longer required, that's probably due to newer XCode toolchain finally updating its zlib.

A new build bug:

A fixed build bug:

MySQL 8.0.41 does not build with LLVM 19. It could probably be fixed by backporting a fix for MySQL 8.4.4 which is documented as "Implemented the standards-compliant my_char_traits<unsigned char> for use as a drop-in replacement for std::char_traits<unsigned char>, which was deprecated in Clang 18 and removed in Clang 19. (Bug #37273525)"

Test

New bugs:

No changes:

Fixed bugs:

Did not test:

One-off issues:

  • main.join_cache_nojb failed once with query execution plan difference on 8.0.41 debug build.
  • rpl_gtid.rpl_gtids_table_disable_binlog_on_slave failed intermittently on 8.0.41 Debug with sanitizers, 8.4.4 Debug, & 8.4.4 Debug with sanitizers builds. The same happened in the previous set of releases too.
  • binlog_gtid.binlog_gtid_bgc_ticket_manager failed once on 8.4.4 Debug build.
  • routertest_integration_routing_sharing_constrained_pools failed once in a way that is not bug #113190 above.
  • rpl_gtid.rpl_heartbeat_log_pos_4gb timed out once on 8.4.4 Debug with sanitizers.
  • binlog_gtid.binlog_check_gtid_persistor_compatibility failed once on 9.2.0 Debug with sanitizers.
  • innodb.trigger_function_lock_compare timed out once on 9.2.0 Debug with sanitizers.

Conclusion

Without the one-off issues I have 2 new, 13 unchanged, 4 fixed, 1 untested bug. Much less churn than the last time, and finally the trend is positive.