Skip to content

Commit 0a79630

Browse files
committed
Merge 8.4.8 from upstream Oracle
1 parent c4aa20c commit 0a79630

675 files changed

Lines changed: 15927 additions & 42913 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CMakeLists.txt

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -539,6 +539,18 @@ IF(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY)
539539
SET(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY OFF CACHE INTERNAL "" FORCE)
540540
ENDIF()
541541

542+
# We have our own WITH_UNIT_TESTS option, and call ENABLE_TESTING() accordingly.
543+
# We do not INCLUDE(CTest) here.
544+
# Various 3rd party libraries use this option, so set it to OFF.
545+
OPTION(BUILD_TESTING "See <cmake root>/Modules/CTest.cmake" OFF)
546+
IF(BUILD_TESTING)
547+
MESSAGE(WARNING "Do not set BUILD_TESTING to ON/TRUE, "
548+
"use the cmake option WITH_UNIT_TESTS instead."
549+
)
550+
SET(BUILD_TESTING OFF)
551+
SET(BUILD_TESTING OFF CACHE INTERNAL "" FORCE)
552+
ENDIF()
553+
542554
# Ninja only: List of available pools.
543555
SET_PROPERTY(GLOBAL PROPERTY JOB_POOLS one_job=1)
544556

@@ -1210,22 +1222,17 @@ IF(CMAKE_C_FLAGS MATCHES "-fsanitize" OR CMAKE_CXX_FLAGS MATCHES "-fsanitize")
12101222
SET(CMAKE_COMPILER_FLAG_WITH_SANITIZE 1)
12111223
ENDIF()
12121224

1213-
# Older versions of ccache must be disabled: export CCACHE_DISABLE=1
1214-
# See http://www.cmake.org/Wiki/CTest/Coverage
12151225
OPTION(ENABLE_GCOV "Enable gcov (debug, Linux builds only)" OFF)
12161226
IF (ENABLE_GCOV AND NOT WIN32 AND NOT APPLE)
1217-
STRING_APPEND(CMAKE_C_FLAGS
1218-
" -fprofile-arcs -ftest-coverage -fprofile-update=prefer-atomic -DHAVE_GCOV")
1219-
STRING_APPEND(CMAKE_CXX_FLAGS
1220-
" -fprofile-arcs -ftest-coverage -fprofile-update=prefer-atomic -DHAVE_GCOV")
1227+
SET(GCOV_COMPILER_OPTIONS
1228+
"-fprofile-arcs -ftest-coverage -fprofile-update=prefer-atomic")
1229+
STRING_APPEND(CMAKE_C_FLAGS " ${GCOV_COMPILER_OPTIONS} -DHAVE_GCOV")
1230+
STRING_APPEND(CMAKE_CXX_FLAGS " ${GCOV_COMPILER_OPTIONS} -DHAVE_GCOV")
12211231
STRING_APPEND(CMAKE_C_LINK_FLAGS " -Wl,--dynamic-list-data")
12221232
STRING_APPEND(CMAKE_CXX_LINK_FLAGS " -Wl,--dynamic-list-data")
1223-
STRING_APPEND(CMAKE_EXE_LINKER_FLAGS
1224-
" -fprofile-arcs -ftest-coverage -fprofile-update=prefer-atomic -lgcov")
1225-
STRING_APPEND(CMAKE_SHARED_LINKER_FLAGS
1226-
" -fprofile-arcs -ftest-coverage -fprofile-update=prefer-atomic -lgcov")
1227-
STRING_APPEND(CMAKE_MODULE_LINKER_FLAGS
1228-
" -fprofile-arcs -ftest-coverage -fprofile-update=prefer-atomic -lgcov")
1233+
STRING_APPEND(CMAKE_EXE_LINKER_FLAGS " ${GCOV_COMPILER_OPTIONS} -lgcov")
1234+
STRING_APPEND(CMAKE_SHARED_LINKER_FLAGS " ${GCOV_COMPILER_OPTIONS} -lgcov")
1235+
STRING_APPEND(CMAKE_MODULE_LINKER_FLAGS " ${GCOV_COMPILER_OPTIONS} -lgcov")
12291236
ENDIF()
12301237

12311238
OPTION(ENABLE_GPROF "Enable gprof (optimized, Linux builds only)" OFF)
@@ -2403,12 +2410,14 @@ IF(NOT WITHOUT_SERVER AND WITH_UNIT_TESTS)
24032410
ENDIF()
24042411
# The mold linker and RelWithDebInfo build complains about
24052412
# the new expression in Rpl_info_values::init()
2413+
# We get stringop warnings in functions generated by protobuf.
2414+
# We get even more stringop warnings from gcc 14.2 lto-wrapper.
24062415
IF(MY_COMPILER_IS_GNU)
2407-
MY_TARGET_LINK_OPTIONS(server_unittest_library
2408-
"-Wno-alloc-size-larger-than")
2409-
# In functions generated by protobuf:
2410-
MY_TARGET_LINK_OPTIONS(server_unittest_library
2411-
"-Wno-stringop-overflow")
2416+
TARGET_LINK_OPTIONS(server_unittest_library PUBLIC
2417+
-Wno-alloc-size-larger-than
2418+
-Wno-stringop-overflow
2419+
-Wno-stringop-overread
2420+
)
24122421
ENDIF()
24132422
ENDIF()
24142423
ELSE()
@@ -2453,6 +2462,8 @@ CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/mysql_version.h.in
24532462
${CMAKE_BINARY_DIR}/include/mysql_version.h )
24542463
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/villagesql/include/version.h.in
24552464
${CMAKE_BINARY_DIR}/villagesql/include/version.h )
2465+
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/mysql_server_suffix.h.in
2466+
${CMAKE_BINARY_DIR}/include/mysql_server_suffix.h)
24562467
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc.in
24572468
${CMAKE_BINARY_DIR}/sql/sql_builtin.cc)
24582469

MYSQL_VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
MYSQL_VERSION_MAJOR=8
22
MYSQL_VERSION_MINOR=4
3-
MYSQL_VERSION_PATCH=6
3+
MYSQL_VERSION_PATCH=8
44
MYSQL_VERSION_MATURITY="LTS"

README

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
1+
Copyright (c) 2000, 2026, Oracle and/or its affiliates.
22

33
This is a release of MySQL, an SQL database server.
44

client/mysqldump.cc

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5712,7 +5712,8 @@ static char *primary_key_fields(const char *table_name) {
57125712
table_name, table_name);
57135713
continue;
57145714
}
5715-
if (atoi(row[3]) < 1) break;
5715+
/* break if the index is not unique */
5716+
if (row[1] && *row[1] && atoi(row[1]) > 0) break;
57165717
if (row[4] && *row[4]) order_by_part = quote_name(row[4], buff, false);
57175718
#ifdef USABLE_EXPR_IN_SHOW_INDEX_BUG35273994
57185719
else if (mysql_num_fields(res) > 14 && row[14] &&
@@ -5748,7 +5749,8 @@ static char *primary_key_fields(const char *table_name) {
57485749
while (nullptr != (row = mysql_fetch_row(res))) {
57495750
unsigned braces_length = 0;
57505751
if (!row[3] || !*row[3]) continue;
5751-
if (atoi(row[3]) < 1) break;
5752+
/* break if the index is not unique */
5753+
if (row[1] && *row[1] && atoi(row[1]) > 0) break;
57525754
if (row[4] && *row[4]) order_by_part = quote_name(row[4], buff, false);
57535755
#ifdef USABLE_EXPR_IN_SHOW_INDEX_BUG35273994
57545756
else if (mysql_num_fields(res) > 14 && row[14] && *row[14]) {

cmake/curl.cmake

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -255,8 +255,9 @@ FUNCTION(MYSQL_CHECK_CURL)
255255
SET_TARGET_PROPERTIES(curl_interface PROPERTIES INTERFACE_COMPILE_OPTIONS
256256
"-Wno-error=deprecated-declarations")
257257
ENDIF()
258-
IF(WIN32_CLANG)
259-
SET_TARGET_PROPERTIES(curl_interface PROPERTIES INTERFACE_COMPILE_DEFINITIONS
258+
IF(MY_COMPILER_IS_CLANG)
259+
SET_TARGET_PROPERTIES(curl_interface
260+
PROPERTIES INTERFACE_COMPILE_DEFINITIONS
260261
CURL_DISABLE_DEPRECATION)
261262
ENDIF()
262263

cmake/googletest.cmake

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
# along with this program; if not, write to the Free Software
2222
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
2323

24-
SET(GOOGLETEST_RELEASE googletest-1.14.0)
24+
SET(GOOGLETEST_RELEASE googletest-1.17.0)
2525
SET(GMOCK_SOURCE_DIR
2626
${CMAKE_SOURCE_DIR}/extra/googletest/${GOOGLETEST_RELEASE}/googlemock)
2727
SET(GTEST_SOURCE_DIR
@@ -72,6 +72,7 @@ FOREACH(googletest_library
7272
ENDFOREACH()
7373

7474
# googletest/src/gtest-internal-inl.h: In member function 'OnTestEnd'
75-
IF(MY_COMPILER_IS_GNU AND FPROFILE_USE)
76-
TARGET_LINK_OPTIONS(gtest INTERFACE -Wno-error=stringop-overflow)
75+
IF(MY_COMPILER_IS_GNU)
76+
TARGET_LINK_OPTIONS(gmock INTERFACE -Wno-stringop-overflow)
77+
TARGET_LINK_OPTIONS(gtest INTERFACE -Wno-stringop-overflow)
7778
ENDIF()

cmake/install_macros.cmake

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -334,16 +334,32 @@ ENDFUNCTION()
334334

335335
# On Unix: add to RPATH of an executable when it is installed.
336336
# Use 'chrpath' or 'patchelf --print-rpath' to inspect results.
337-
# For Solaris, use 'elfdump -d'
338-
MACRO(ADD_INSTALL_RPATH TARGET VALUE)
339-
GET_TARGET_PROPERTY(CURRENT_RPATH_${TARGET} ${TARGET} INSTALL_RPATH)
340-
IF(NOT CURRENT_RPATH_${TARGET})
341-
SET(CURRENT_RPATH_${TARGET})
337+
# For Solaris, use 'elfdump -d'.
338+
FUNCTION(ADD_INSTALL_RPATH_VALUE TARGET VALUE)
339+
GET_TARGET_PROPERTY(CURRENT_RPATH ${TARGET} INSTALL_RPATH)
340+
IF(NOT CURRENT_RPATH)
341+
SET(CURRENT_RPATH)
342342
ENDIF()
343-
LIST(APPEND CURRENT_RPATH_${TARGET} ${VALUE})
343+
344+
# Strip off trailing "/"
345+
STRING(REGEX REPLACE "(.*)\/$" "\\1" VALUE "${VALUE}")
346+
LIST(APPEND CURRENT_RPATH ${VALUE})
347+
348+
# Sort list such that items containing $ORIGIN/... comes first
349+
IF(LINUX)
350+
LIST(REMOVE_DUPLICATES CURRENT_RPATH)
351+
LIST(SORT CURRENT_RPATH)
352+
ENDIF()
353+
344354
SET_TARGET_PROPERTIES(${TARGET}
345-
PROPERTIES INSTALL_RPATH "${CURRENT_RPATH_${TARGET}}")
346-
ENDMACRO()
355+
PROPERTIES INSTALL_RPATH "${CURRENT_RPATH}")
356+
ENDFUNCTION(ADD_INSTALL_RPATH_VALUE)
357+
358+
FUNCTION(ADD_INSTALL_RPATH TARGET VALUE_LIST)
359+
FOREACH(_value ${VALUE_LIST})
360+
ADD_INSTALL_RPATH_VALUE(${TARGET} ${_value})
361+
ENDFOREACH()
362+
ENDFUNCTION()
347363

348364

349365
# For standalone Linux build or community RPM build, we support

cmake/mysql_add_executable.cmake

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,13 @@ FUNCTION(MYSQL_ADD_EXECUTABLE target_arg)
8181
# command, which is probably not what you want
8282
# (except for mysqld.lib which is used by plugins).
8383
EXCLUDE_FROM_ALL # add target, but do not build it by default
84-
EXCLUDE_FROM_PGO # add target, but do not build for FPROFILE_GENERATE
84+
EXCLUDE_FROM_GCOV # Skip target for ENABLE_GCOV
85+
EXCLUDE_FROM_PGO # Skip target for FPROFILE_GENERATE
8586
SKIP_INSTALL # do not install it
8687
SKIP_TCMALLOC # do not link with tcmalloc
8788
)
8889
SET(EXECUTABLE_ONE_VALUE_KW
90+
ADD_GCOV_TEST # add unit test if ENABLE_GCOV, sets SKIP_INSTALL
8991
ADD_TEST # add unit test, sets SKIP_INSTALL
9092
COMPONENT
9193
DESTINATION # install destination, defaults to ${INSTALL_BINDIR}
@@ -113,6 +115,10 @@ FUNCTION(MYSQL_ADD_EXECUTABLE target_arg)
113115
ENDIF()
114116
ENDIF()
115117

118+
IF(ENABLE_GCOV AND ARG_EXCLUDE_FROM_GCOV)
119+
RETURN()
120+
ENDIF()
121+
116122
SET(target ${target_arg})
117123
SET(sources ${ARG_UNPARSED_ARGUMENTS})
118124

@@ -144,6 +150,12 @@ FUNCTION(MYSQL_ADD_EXECUTABLE target_arg)
144150

145151
SET_PATH_TO_CUSTOM_SSL_FOR_APPLE(${target})
146152

153+
# Create it anyways if we are running GCOV.
154+
IF(ENABLE_GCOV AND ARG_ADD_GCOV_TEST)
155+
SET(ARG_ADD_TEST ${ARG_ADD_GCOV_TEST})
156+
UNSET(ARG_EXCLUDE_FROM_ALL)
157+
ENDIF()
158+
147159
IF(ARG_DEPENDENCIES)
148160
ADD_DEPENDENCIES(${target} ${ARG_DEPENDENCIES})
149161
ENDIF()

cmake/protobuf.cmake

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,9 @@ MACRO(MYSQL_CHECK_PROTOBUF)
164164
# )
165165
# INTERFACE_LINK_LIBRARIES will be needed once this is built
166166
# with protobuf 22 and above (lots of abseil libs).
167-
ADD_LIBRARY(ext::libprotobuf UNKNOWN IMPORTED)
167+
IF(NOT TARGET ext::libprotobuf)
168+
ADD_LIBRARY(ext::libprotobuf UNKNOWN IMPORTED)
169+
ENDIF()
168170
SET_TARGET_PROPERTIES(ext::libprotobuf PROPERTIES
169171
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${Protobuf_INCLUDE_DIR}")
170172
SET_TARGET_PROPERTIES(ext::libprotobuf PROPERTIES
@@ -175,7 +177,9 @@ MACRO(MYSQL_CHECK_PROTOBUF)
175177
INTERFACE_LINK_LIBRARIES "${protobuf_dependencies}")
176178
ENDIF()
177179

178-
ADD_LIBRARY(ext::libprotobuf-lite UNKNOWN IMPORTED)
180+
IF(NOT TARGET ext::libprotobuf-lite)
181+
ADD_LIBRARY(ext::libprotobuf-lite UNKNOWN IMPORTED)
182+
ENDIF()
179183
SET_TARGET_PROPERTIES(ext::libprotobuf-lite PROPERTIES
180184
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${Protobuf_INCLUDE_DIR}")
181185
SET_TARGET_PROPERTIES(ext::libprotobuf-lite PROPERTIES
@@ -186,7 +190,9 @@ MACRO(MYSQL_CHECK_PROTOBUF)
186190
INTERFACE_LINK_LIBRARIES "${lite_dependencies}")
187191
ENDIF()
188192

189-
ADD_LIBRARY(ext::libprotoc UNKNOWN IMPORTED)
193+
IF(NOT TARGET ext::libprotoc)
194+
ADD_LIBRARY(ext::libprotoc UNKNOWN IMPORTED)
195+
ENDIF()
190196
SET_TARGET_PROPERTIES(ext::libprotoc PROPERTIES
191197
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${Protobuf_INCLUDE_DIR}")
192198
SET_TARGET_PROPERTIES(ext::libprotoc PROPERTIES

cmake/protobuf_proto_compile.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -342,9 +342,9 @@ FUNCTION(MYSQL_PROTOBUF_GENERATE_PY GENERATED_SOURCE)
342342
GET_FILENAME_COMPONENT(WITHOUT_DIR_AND_EXT ${PROTO_FILE} NAME_WE)
343343

344344
SET(GENERATED_GRPC_FILE
345-
"${GENERATE_OUTPUT_DIRECTORY}/${WITHOUT_DIR_AND_EXT}_grpc.py")
345+
"${GENERATE_OUTPUT_DIRECTORY}/${WITHOUT_DIR_AND_EXT}_pb2_grpc.py")
346346
SET(GENERATED_PY_FILE
347-
"${GENERATE_OUTPUT_DIRECTORY}/${WITHOUT_DIR_AND_EXT}.py")
347+
"${GENERATE_OUTPUT_DIRECTORY}/${WITHOUT_DIR_AND_EXT}_pb2.py")
348348

349349
ADD_CUSTOM_COMMAND(
350350
OUTPUT "${GENERATED_GRPC_FILE}"

0 commit comments

Comments
 (0)