Bug #119246 9.7.0-er2 compilation error with LLVM 21
Submitted: 27 Oct 2025 15:02 Modified: 13 Apr 14:33
Reporter: Laurynas Biveinis (OCA) Email Updates:
Status: Open Impact on me:
None 
Category:MySQL Server: Compiling Severity:S3 (Non-critical)
Version:8.4.8, 9.7.0-er2 OS:MacOS (26.0.1)
Assigned to: CPU Architecture:ARM

[27 Oct 2025 15:02] Laurynas Biveinis
Description:
CMake options: -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DFORCE_UNSUPPORTED_COMPILER=ON -DBUILD_CONFIG=mysql_release -DCMAKE_BUILD_TYPE=Release -DMYSQL_MAINTAINER_MODE=ON -DWITH_SYSTEM_LIBS=ON -DWITH_NDBCLUSTER_STORAGE_ENGINE=OFF -DFORCE_COLORED_OUTPUT=ON -DCMAKE_CXX_FLAGS=-g -DCMAKE_CXX_FLAGS_DEBUG=-g -DCMAKE_CXX_FLAGS_RELEASE=-O2 -DNDEBUG -g

results in 

FAILED: [code=1] sql/CMakeFiles/sql_dd.dir/dd/info_schema/show_query_builder.cc.o
/opt/homebrew/opt/llvm/bin/clang++ -DBOOST_NO_CXX98_FUNCTION_BASE -DHAVE_TLSv13 -DLZ4_DISABLE_DEPRECATE_WARNINGS -DMYSQLXMESSAGES_STATIC_DEFINE -DMYSQL_SERVER -DRAPIDJSON_HAS_STDSTRING=1 -DRAPIDJSON_NO_SIZETYPEDEFINE -DRAPIDJSON_SCHEMA_USE_INTERNALREGEX=0 -DRAPIDJSON_SCHEMA_USE_STDREGEX=1 -D_USE_MATH_DEFINES -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/Users/laurynas/vilniusdb/mysql-9.5.0/_build-release-llvm -I/Users/laurynas/vilniusdb/mysql-9.5.0/_build-release-llvm/include -I/Users/laurynas/vilniusdb/mysql-9.5.0 -I/Users/laurynas/vilniusdb/mysql-9.5.0/include -I/Users/laurynas/vilniusdb/mysql-9.5.0/libs -I/Users/laurynas/vilniusdb/mysql-9.5.0/router/src/harness/include -isystem /Users/laurynas/vilniusdb/mysql-9.5.0/extra/rapidjson/include -isystem /opt/homebrew/opt/openssl/include -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/editline -isystem /opt/homebrew/include -isystem /opt/homebrew/opt/icu4c/include -isystem /Users/laurynas/vilniusdb/mysql-9.5.0/extra/unordered_dense/unordered_dense-4.4.0/include -isystem /Users/laurynas/vilniusdb/mysql-9.5.0/extra/zlib/zlib-1.3.1 -isystem /Users/laurynas/vilniusdb/mysql-9.5.0/_build-release-llvm/extra/zlib/zlib-1.3.1 -isystem /Users/laurynas/vilniusdb/mysql-9.5.0/plugin/x/client -isystem /Users/laurynas/vilniusdb/mysql-9.5.0/_build-release-llvm/plugin/x/generated/protobuf_lite -isystem /Users/laurynas/vilniusdb/mysql-9.5.0/_build-release-llvm/plugin/x/generated -isystem /Users/laurynas/vilniusdb/mysql-9.5.0/extra/boost/boost_1_87_0 -std=c++20 -fno-omit-frame-pointer -ftls-model=initial-exec -g -Wall -Wextra -Wformat-security -Wvla -Wundef -Wmissing-format-attribute -Woverloaded-virtual -Wcast-qual -Wno-null-conversion -Wno-unused-private-field -Wconditional-uninitialized -Wdeprecated -Wno-deprecated-declarations -Wno-shorten-64-to-32 -Wextra-semi -Wheader-hygiene -Wnon-virtual-dtor -Wundefined-reinterpret-cast -Wrange-loop-analysis -Winconsistent-missing-destructor-override -Winconsistent-missing-override -Wshadow-field -Wstring-concatenation -Wdocumentation -Wno-documentation-deprecated-sync -Werror -ffunction-sections -fdata-sections -O2 -DNDEBUG -g -std=gnu++20 -arch arm64 -fPIC -fcolor-diagnostics -Wshadow-uncaptured-local -MD -MT sql/CMakeFiles/sql_dd.dir/dd/info_schema/show_query_builder.cc.o -MF sql/CMakeFiles/sql_dd.dir/dd/info_schema/show_query_builder.cc.o.d  --language=c++  -o sql/CMakeFiles/sql_dd.dir/dd/info_schema/show_query_builder.cc.o -c /Users/laurynas/vilniusdb/mysql-9.5.0/sql/dd/info_schema/show_query_builder.cc
In file included from /Users/laurynas/vilniusdb/mysql-9.5.0/sql/dd/info_schema/show_query_builder.cc:37:
In file included from /Users/laurynas/vilniusdb/mysql-9.5.0/sql/parse_tree_nodes.h:50:
In file included from /Users/laurynas/vilniusdb/mysql-9.5.0/sql/opt_explain.h:61:
/Users/laurynas/vilniusdb/mysql-9.5.0/sql/opt_explain_format.h:646:12: error: null passed to a callee that requires a non-null argument [-Werror,-Wnonnull]
  646 |     return nullptr;
      |            ^~~~~~~

How to repeat:
See above
[23 Jan 10:04] Laurynas Biveinis
8.4 series started being affected too in 8.4.8
[23 Jan 12:14] Laurynas Biveinis
Same with 9.6.0
[24 Mar 13:48] Laurynas Biveinis
Some LLVM 21 build errors with 9.7.0-er:

/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:378:37: error: diagnostic behavior may be improved by adding the 'format(printf, 2, 3)' attribute to the declaration of 'tailoring_append' [-Werror,-Wmissing-format-attribute]
  372 | static int tailoring_append(MY_XML_PARSER *st, const char *fmt, size_t len,
      | [[gnu::format(printf, 2, 3)]]
  373 |                             const char *attr) {
  374 |   auto *i = (struct my_cs_file_info *)st->user_data;
  375 |   size_t const newlen = i->tailoring_length + len + 64; /* 64 for format */
  376 |   if (MY_XML_OK == my_charset_file_tailoring_realloc(i, newlen)) {
  377 |     char *dst = i->tailoring + i->tailoring_length;
  378 |     sprintf(dst, fmt, (int)len, attr);
      |                                     ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:372:12: note: 'tailoring_append' declared here
  372 | static int tailoring_append(MY_XML_PARSER *st, const char *fmt, size_t len,
      |            ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:393:57: error: diagnostic behavior may be improved by adding the 'format(printf, 2, 3)' attribute to the declaration of 'tailoring_append2' [-Werror,-Wmissing-format-attribute]
  385 | static int tailoring_append2(MY_XML_PARSER *st, const char *fmt, size_t len1,
      | [[gnu::format(printf, 2, 3)]]
  386 |                              const char *attr1, size_t len2,
  387 |                              const char *attr2) {
  388 |   auto *i = (struct my_cs_file_info *)st->user_data;
  389 |   size_t const newlen =
  390 |       i->tailoring_length + len1 + len2 + 64; /* 64 for format */
  391 |   if (MY_XML_OK == my_charset_file_tailoring_realloc(i, newlen)) {
  392 |     char *dst = i->tailoring + i->tailoring_length;
  393 |     sprintf(dst, fmt, (int)len1, attr1, (int)len2, attr2);
      |                                                         ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:385:12: note: 'tailoring_append2' declared here
  385 | static int tailoring_append2(MY_XML_PARSER *st, const char *fmt, size_t len1,
      |            ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:458:41: error: data argument not used by format string [-Werror,-Wformat-extra-args]
  458 |       return tailoring_append(st, " &", 0, nullptr);
      |                                   ~~~~  ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:480:58: error: data argument not used by format string [-Werror,-Wformat-extra-args]
  480 |       rc = tailoring_append(st, "[first non-ignorable]", 0, nullptr);
      |                                 ~~~~~~~~~~~~~~~~~~~~~~~  ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:484:57: error: data argument not used by format string [-Werror,-Wformat-extra-args]
  484 |       rc = tailoring_append(st, "[last non-ignorable]", 0, nullptr);
      |                                 ~~~~~~~~~~~~~~~~~~~~~~  ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:488:62: error: data argument not used by format string [-Werror,-Wformat-extra-args]
  488 |       rc = tailoring_append(st, "[first primary ignorable]", 0, nullptr);
      |                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:492:61: error: data argument not used by format string [-Werror,-Wformat-extra-args]
  492 |       rc = tailoring_append(st, "[last primary ignorable]", 0, nullptr);
      |                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~  ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:496:64: error: data argument not used by format string [-Werror,-Wformat-extra-args]
  496 |       rc = tailoring_append(st, "[first secondary ignorable]", 0, nullptr);
      |                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:500:63: error: data argument not used by format string [-Werror,-Wformat-extra-args]
  500 |       rc = tailoring_append(st, "[last secondary ignorable]", 0, nullptr);
      |                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:504:63: error: data argument not used by format string [-Werror,-Wformat-extra-args]
  504 |       rc = tailoring_append(st, "[first tertiary ignorable]", 0, nullptr);
      |                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:508:62: error: data argument not used by format string [-Werror,-Wformat-extra-args]
  508 |       rc = tailoring_append(st, "[last tertiary ignorable]", 0, nullptr);
      |                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:512:53: error: data argument not used by format string [-Werror,-Wformat-extra-args]
  512 |       rc = tailoring_append(st, "[first trailing]", 0, nullptr);
      |                                 ~~~~~~~~~~~~~~~~~~  ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:516:52: error: data argument not used by format string [-Werror,-Wformat-extra-args]
  516 |       rc = tailoring_append(st, "[last trailing]", 0, nullptr);
      |                                 ~~~~~~~~~~~~~~~~~  ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:520:53: error: data argument not used by format string [-Werror,-Wformat-extra-args]
  520 |       rc = tailoring_append(st, "[first variable]", 0, nullptr);
      |                                 ~~~~~~~~~~~~~~~~~~  ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:524:52: error: data argument not used by format string [-Werror,-Wformat-extra-args]
  524 |       rc = tailoring_append(st, "[last variable]", 0, nullptr);
      |                                 ~~~~~~~~~~~~~~~~~  ^
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:626:45: error: field precision should have type 'int', but argument has type 'size_t' (aka 'unsigned long') [-Werror,-Wformat]
  626 |       rc = tailoring_append(st, "[version %.*s]", len, attr);
      |                                           ~~^~    ~~~
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:630:59: error: field precision should have type 'int', but argument has type 'size_t' (aka 'unsigned long') [-Werror,-Wformat]
  630 |       rc = tailoring_append(st, "[suppress contractions %.*s]", len, attr);
      |                                                         ~~^~    ~~~
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:634:46: error: field precision should have type 'int', but argument has type 'size_t' (aka 'unsigned long') [-Werror,-Wformat]
  634 |       rc = tailoring_append(st, "[optimize %.*s]", len, attr);
      |                                            ~~^~    ~~~
/Users/laurynas/vilniusdb/mysql-9.7.0-er/strings/ctype.cc:638:56: error: field precision should have type 'int', but argument has type 'size_t' (aka 'unsigned long') [-Werror,-Wformat]
  638 |       rc = tailoring_append(st, "[shift-after-method %.*s]", len, attr);
      |                                                      ~~^~    ~~~
fatal error: too many errors emitted, stopping now [-ferror-limit=]
[10 Apr 17:14] Laurynas Biveinis
With 9.7.0-er2 the error is

[24/4515] Building CXX object router/src/harness/src/CMakeFiles/harness_stdx.dir/stdx/filesystem.cc.o
FAILED: [code=1] router/src/harness/src/CMakeFiles/harness_stdx.dir/stdx/filesystem.cc.o
/opt/homebrew/opt/llvm/bin/clang++ -DHAVE_TLSv13 -DLZ4_DISABLE_DEPRECATE_WARNINGS -D_USE_MATH_DEFINES -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Dharness_stdx_EXPORTS -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/_build-llvm-21-debug -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/_build-llvm-21-debug/include -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2 -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/include -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/libs -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/_build-llvm-21-debug/router -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/_build-llvm-21-debug/router/include -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/router/src/harness/src/../include -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/router/src/harness/src -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/_build-llvm-21-debug/router/src/harness/src/../include -isystem /Users/laurynas/vilniusdb/mysql-9.7.0-er2/extra/rapidjson/include -isystem /opt/homebrew/opt/openssl/include -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/editline -isystem /opt/homebrew/include -fno-omit-frame-pointer -ftls-model=initial-exec -g -Wall -Wextra -Wformat-security -Wvla -Wundef -Wmissing-format-attribute -Woverloaded-virtual -Wcast-qual -Wno-null-conversion -Wno-unused-private-field -Wconditional-uninitialized -Wdeprecated -Wno-deprecated-declarations -Wno-shorten-64-to-32 -Wextra-semi -Wheader-hygiene -Wnon-virtual-dtor -Wundefined-reinterpret-cast -Wrange-loop-analysis -Winconsistent-missing-destructor-override -Winconsistent-missing-override -Wshadow-field -Wstring-concatenation -Wdocumentation -Wno-documentation-deprecated-sync -Werror -DSAFE_MUTEX -DENABLED_DEBUG_SYNC -g -std=gnu++23 -arch arm64 -fPIC -fcolor-diagnostics -MD -MT router/src/harness/src/CMakeFiles/harness_stdx.dir/stdx/filesystem.cc.o -MF router/src/harness/src/CMakeFiles/harness_stdx.dir/stdx/filesystem.cc.o.d  --language=c++  -o router/src/harness/src/CMakeFiles/harness_stdx.dir/stdx/filesystem.cc.o -c /Users/laurynas/vilniusdb/mysql-9.7.0-er2/router/src/harness/src/stdx/filesystem.cc
/Users/laurynas/vilniusdb/mysql-9.7.0-er2/router/src/harness/src/stdx/filesystem.cc:120:18: error: use of undeclared identifier 'getenv'
  120 |     auto *path = getenv(envvar);
      |                  ^~~~~~
1 error generated.

I don't know if it's earlier or later than the previous errors in the build
[10 Apr 18:24] Laurynas Biveinis
With -DWITH_ROUTER=OFF the LLVM 21 build error becomes identical to XCode 26.4 one:

FAILED: [code=1] libs/mysql/gtid/CMakeFiles/mysql_gtid.dir/tag_plain.cpp.o
/opt/homebrew/opt/llvm/bin/clang++ -DHAVE_TLSv13 -DLZ4_DISABLE_DEPRECATE_WARNINGS -D_USE_MATH_DEFINES -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/_build-llvm-21-debug -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/_build-llvm-21-debug/include -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2 -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/include -I/Users/laurynas/vilniusdb/mysql-9.7.0-er2/libs -isystem /Users/laurynas/vilniusdb/mysql-9.7.0-er2/extra/rapidjson/include -isystem /opt/homebrew/opt/openssl/include -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/editline -isystem /opt/homebrew/include -fno-omit-frame-pointer -ftls-model=initial-exec -g -Wall -Wextra -Wformat-security -Wvla -Wundef -Wmissing-format-attribute -Woverloaded-virtual -Wcast-qual -Wno-null-conversion -Wno-unused-private-field -Wconditional-uninitialized -Wdeprecated -Wno-deprecated-declarations -Wno-shorten-64-to-32 -Wextra-semi -Wheader-hygiene -Wnon-virtual-dtor -Wundefined-reinterpret-cast -Wrange-loop-analysis -Winconsistent-missing-destructor-override -Winconsistent-missing-override -Wshadow-field -Wstring-concatenation -Wdocumentation -Wno-documentation-deprecated-sync -Werror -DSAFE_MUTEX -DENABLED_DEBUG_SYNC -g -std=gnu++23 -arch arm64 -fPIC -fcolor-diagnostics -MD -MT libs/mysql/gtid/CMakeFiles/mysql_gtid.dir/tag_plain.cpp.o -MF libs/mysql/gtid/CMakeFiles/mysql_gtid.dir/tag_plain.cpp.o.d  --language=c++  -o libs/mysql/gtid/CMakeFiles/mysql_gtid.dir/tag_plain.cpp.o -c /Users/laurynas/vilniusdb/mysql-9.7.0-er2/libs/mysql/gtid/tag_plain.cpp
In file included from /Users/laurynas/vilniusdb/mysql-9.7.0-er2/libs/mysql/gtid/tag_plain.cpp:24:
/Users/laurynas/vilniusdb/mysql-9.7.0-er2/libs/mysql/gtid/tag_plain.h:83:20: error: no template named 'is_trivial_v' in namespace 'std'; did you mean 'is_final_v'?
   83 | static_assert(std::is_trivial_v<Tag_plain>);
      |               ~~~~~^~~~~~~~~~~~
      |                    is_final_v
/opt/homebrew/Cellar/llvm/22.1.2/bin/../include/c++/v1/__type_traits/is_final.h:31:50: note: 'is_final_v' declared here
   31 | _LIBCPP_NO_SPECIALIZATIONS inline constexpr bool is_final_v = __is_final(_Tp);
      |                                                  ^
In file included from /Users/laurynas/vilniusdb/mysql-9.7.0-er2/libs/mysql/gtid/tag_plain.cpp:24:
/Users/laurynas/vilniusdb/mysql-9.7.0-er2/libs/mysql/gtid/tag_plain.h:83:15: error: static assertion failed due to requirement 'std::is_final_v<mysql::gtid::Tag_plain>'
   83 | static_assert(std::is_trivial_v<Tag_plain>);
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/laurynas/vilniusdb/mysql-9.7.0-er2/libs/mysql/gtid/tag_plain.h:83:15: note: 'mysql::gtid::Tag_plain' is not final
/Users/laurynas/vilniusdb/mysql-9.7.0-er2/libs/mysql/gtid/tag_plain.h:83:15: note: because it is not marked 'final'
/Users/laurynas/vilniusdb/mysql-9.7.0-er2/libs/mysql/gtid/tag_plain.h:47:8: note: 'Tag_plain' defined here
   47 | struct Tag_plain {
      |        ^
2 errors generated.
[13 Apr 14:33] Laurynas Biveinis
Update title