The following commit introduced a breakage: https://github.com/mysql/mysql-server/commit/2e4dc3c88ea02b178d2139cfb1f92b00a4d394c0 --- a/storage/ndb/src/ndbapi/ndb_cluster_connection.cpp 2025-09-24 21:35:03.000000000 +0800 +++ b/storage/ndb/src/ndbapi/ndb_cluster_connection.cpp 2025-12-14 21:20:12.000000000 +0800 @@ -56,6 +56,8 @@ #include +using namespace std; + static int g_ndb_connection_count = 0; class NdbApiInternalLogHandler; @@ -437,7 +439,7 @@ } void append(const char *pCategory, Logger::LoggerLevel level, - const char *pMsg, const std::timespec *now) override { + const char *pMsg, const timespec *now) override { { if (m_userConsumer) { Guard g(m_consumer_mutex); @@ -472,7 +474,7 @@ } bool checkParams() override { return true; } void writeHeader(const char *, Logger::LoggerLevel, - const std::timespec *) override {} + const timespec *) override {} void writeMessage(const char *) override {} void writeFooter() override {} void setRepeatFrequency(unsigned val) override { --- a/storage/ndb/include/logger/ConsoleLogHandler.hpp 2025-09-24 21:35:03.000000000 +0800 +++ b/storage/ndb/include/logger/ConsoleLogHandler.hpp 2025-12-14 21:25:55.000000000 +0800 @@ -31,6 +31,8 @@ #include #include "LogHandler.hpp" +using namespace std; + /** * Logs messages to the console/stdout. * @@ -58,7 +60,7 @@ protected: void writeHeader(const char *pCategory, Logger::LoggerLevel level, - const std::timespec *now) override; + const timespec *now) override; void writeMessage(const char *pMsg) override; void writeFooter() override; NdbOut &_out; --- a/storage/ndb/include/logger/Logger.hpp 2025-09-24 21:35:03.000000000 +0800 +++ b/storage/ndb/include/logger/Logger.hpp 2025-12-14 20:57:33.000000000 +0800 @@ -34,6 +34,8 @@ #define MAX_LOG_MESSAGE_SIZE 1024 +using namespace std; + class LogHandler; class InternalLogListHandler; class BufferedLogHandler; @@ -121,7 +123,7 @@ @len max length of result buffer */ - static void format_timestamp(const std::timespec *epoch, char *str, + static void format_timestamp(const timespec *epoch, char *str, size_t len); // Timestamp - handy class for getting a timestamp string --- a/storage/ndb/include/logger/LogHandler.hpp 2025-09-24 21:35:03.000000000 +0800 +++ b/storage/ndb/include/logger/LogHandler.hpp 2025-12-14 21:24:40.000000000 +0800 @@ -30,6 +30,8 @@ #include "Logger.hpp" +using namespace std; + /** * This class is the base class for all log handlers. A log handler is * responsible for formatting and writing log messages to a specific output. @@ -94,9 +96,9 @@ * @param pMsg the log message. */ virtual void append(const char *pCategory, Logger::LoggerLevel level, - const char *pMsg, const std::timespec *now); + const char *pMsg, const timespec *now); void append_impl(const char *pCategory, Logger::LoggerLevel level, - const char *pMsg, const std::timespec *now); + const char *pMsg, const timespec *now); /** * Returns a default formatted header. It currently has the @@ -109,7 +111,7 @@ */ const char *getDefaultHeader(char *pStr, const char *pCategory, Logger::LoggerLevel level, - const std::timespec *now) const; + const timespec *now) const; /** * Returns a default formatted footer. Currently only returns a newline. @@ -197,7 +199,7 @@ * @param level the log level. */ virtual void writeHeader(const char *pCategory, Logger::LoggerLevel level, - const std::timespec *now) = 0; + const timespec *now) = 0; /** * Write the message to the log. @@ -224,7 +226,7 @@ // for handling repeated messages unsigned m_count_repeated_messages; unsigned m_max_repeat_frequency; - std::timespec m_last_log_time; + timespec m_last_log_time; char m_last_category[MAX_HEADER_LENGTH]; char m_last_message[MAX_LOG_MESSAGE_SIZE]; Logger::LoggerLevel m_last_level; --- a/storage/ndb/include/portlib/NdbTimestamp.h 2025-09-24 21:35:03.000000000 +0800 +++ b/storage/ndb/include/portlib/NdbTimestamp.h 2025-12-14 21:22:53.000000000 +0800 @@ -30,6 +30,8 @@ #include "ndb_types.h" #include "util/span.h" +using namespace std; + struct NdbTimestampComponents { Int16 year; Int8 mon; @@ -51,16 +53,16 @@ // Reset internal state after environment variable TZ has changed void NdbTimestamp_Reset(); -std::timespec NdbTimestamp_GetCurrentTime(); +timespec NdbTimestamp_GetCurrentTime(); int NdbTimestamp_GetAsString(ndb::span buf, NdbTimestampStringFormat format, - const std::timespec *t = nullptr, + const timespec *t = nullptr, const NdbTimestampComponents *tm = nullptr); int NdbTimestamp_SetDefaultStringFormat(NdbTimestampStringFormat format); int NdbTimestamp_GetDefaultStringFormatLength(); -int NdbTimestamp_GetUtcComponents(const std::timespec *t, +int NdbTimestamp_GetUtcComponents(const timespec *t, NdbTimestampComponents *tm); -int NdbTimestamp_GetLocalComponents(const std::timespec *t, +int NdbTimestamp_GetLocalComponents(const timespec *t, NdbTimestampComponents *tm); #endif --- a/storage/ndb/src/common/portlib/NdbTimestamp.cpp 2025-09-24 21:35:03.000000000 +0800 +++ b/storage/ndb/src/common/portlib/NdbTimestamp.cpp 2025-12-14 21:52:29.000000000 +0800 @@ -35,6 +35,8 @@ #include "util/require.h" #include "util/span.h" +using namespace std; + #ifdef _WIN32 static inline struct tm *gmtime_r(const time_t *pt, struct tm *ptm) { return gmtime_s(ptm, pt) == 0 ? ptm : nullptr; @@ -166,13 +168,13 @@ #endif } -std::timespec NdbTimestamp_GetCurrentTime() { - std::timespec ts; - require(std::timespec_get(&ts, TIME_UTC) == TIME_UTC); +timespec NdbTimestamp_GetCurrentTime() { + timespec ts; + require(timespec_get(&ts, TIME_UTC) == TIME_UTC); return ts; } -int NdbTimestamp_GetUtcComponents(const std::timespec *t, +int NdbTimestamp_GetUtcComponents(const timespec *t, NdbTimestampComponents *tm) { time_t sec = t->tv_sec; struct tm tmbuf; @@ -188,7 +190,7 @@ return 0; } -int NdbTimestamp_GetLocalComponents(const std::timespec *t, +int NdbTimestamp_GetLocalComponents(const timespec *t, NdbTimestampComponents *tm) { time_t sec = t->tv_sec; struct tm tmbuf; @@ -342,9 +344,9 @@ int NdbTimestamp_GetAsString(ndb::span buf, NdbTimestampStringFormat format, - const std::timespec *pt, + const timespec *pt, const NdbTimestampComponents *ptm) { - std::timespec t; + timespec t; NdbTimestampComponents tm; int ok = 0; if (ptm != nullptr) @@ -462,7 +464,7 @@ "2026-01-01T13:30:00.012345+14:00"}}}; static void test_UTC() { - std::timespec t = NdbTimestamp_GetCurrentTime(); + timespec t = NdbTimestamp_GetCurrentTime(); time_t ut = t.tv_sec; NdbTimestampComponents tc; @@ -517,7 +519,7 @@ printf("TZ=%s\n", tzenv); NdbTimestamp_Reset(); - std::timespec t = NdbTimestamp_GetCurrentTime(); + timespec t = NdbTimestamp_GetCurrentTime(); time_t ut = t.tv_sec; NdbTimestampComponents tc; --- a/storage/ndb/include/logger/BufferedLogHandler.hpp 2025-09-24 21:35:03.000000000 +0800 +++ b/storage/ndb/include/logger/BufferedLogHandler.hpp 2025-12-15 01:01:01.000000000 +0800 @@ -32,6 +32,8 @@ #include #include "LogHandler.hpp" +using namespace std; + /** * 1) Creates a thread * 2) Logs messages to a LogBuffer object @@ -72,7 +74,7 @@ struct LogMessageFixedPart { Logger::LoggerLevel level; - std::timespec log_timestamp; + timespec log_timestamp; size_t varpart_length[2]; // 0: length of category, 1: length of message }; static constexpr Uint32 MAX_VARPART_SIZE = @@ -80,7 +82,7 @@ protected: void writeHeader(const char *pCategory, Logger::LoggerLevel level, - const std::timespec *now) override; + const timespec *now) override; void writeMessage(const char *pMsg) override; void writeFooter() override; --- a/storage/ndb/src/common/logger/BufferedLogHandler.cpp 2025-09-24 21:35:03.000000000 +0800 +++ b/storage/ndb/src/common/logger/BufferedLogHandler.cpp 2025-12-15 00:58:48.000000000 +0800 @@ -30,6 +30,8 @@ #include +using namespace std; + namespace { struct ThreadData { BufferedLogHandler *buf_loghandler; @@ -106,7 +108,7 @@ // void BufferedLogHandler::writeHeader(const char *pCategory, Logger::LoggerLevel level, - const std::timespec *now) { + const timespec *now) { /** * Add log level, timestamp, category length to m_log_fixedpart and * category to m_log_varpart. @@ -179,7 +181,7 @@ cstrbuf msg; require(msg.appendf(LostMsgHandler::LOST_MESSAGES_FMT, lost_count) != -1); assert(!msg.is_truncated()); - std::timespec now = NdbTimestamp_GetCurrentTime(); + timespec now = NdbTimestamp_GetCurrentTime(); m_dest_loghandler->append(m_buffer_msg_category, Logger::LL_INFO, msg.c_str(), &now); } --- a/storage/ndb/src/common/logger/ConsoleLogHandler.cpp 2025-09-24 21:35:03.000000000 +0800 +++ b/storage/ndb/src/common/logger/ConsoleLogHandler.cpp 2025-12-15 01:03:40.000000000 +0800 @@ -27,6 +27,8 @@ #include +using namespace std; + ConsoleLogHandler::ConsoleLogHandler(NdbOut &out) : LogHandler(), _out(out) {} ConsoleLogHandler::~ConsoleLogHandler() {} @@ -42,7 +44,7 @@ // void ConsoleLogHandler::writeHeader(const char *pCategory, Logger::LoggerLevel level, - const std::timespec *now) { + const timespec *now) { char str[MAX_HEADER_LENGTH]; _out << getDefaultHeader(str, pCategory, level, now); } --- a/storage/ndb/src/common/logger/FileLogHandler.cpp 2025-09-24 21:35:03.000000000 +0800 +++ b/storage/ndb/src/common/logger/FileLogHandler.cpp 2025-12-15 01:06:24.000000000 +0800 @@ -30,6 +30,8 @@ #include #include +using namespace std; + // // PUBLIC // @@ -76,7 +78,7 @@ void FileLogHandler::writeHeader(const char *pCategory, Logger::LoggerLevel level, - const std::timespec *now) { + const timespec *now) { char str[MAX_HEADER_LENGTH]; m_pLogFile->writeChar(getDefaultHeader(str, pCategory, level, now)); } --- a/storage/ndb/include/logger/FileLogHandler.hpp 2025-09-24 21:35:03.000000000 +0800 +++ b/storage/ndb/include/logger/FileLogHandler.hpp 2025-12-15 01:07:23.000000000 +0800 @@ -30,6 +30,8 @@ #include "LogHandler.hpp" +using namespace std; + class File_class; /** @@ -82,7 +84,7 @@ protected: void writeHeader(const char *pCategory, Logger::LoggerLevel level, - const std::timespec *now) override; + const timespec *now) override; void writeMessage(const char *pMsg) override; void writeFooter() override; --- a/storage/ndb/src/common/logger/LogHandler.cpp 2025-09-24 21:35:03.000000000 +0800 +++ b/storage/ndb/src/common/logger/LogHandler.cpp 2025-12-15 01:10:24.000000000 +0800 @@ -30,6 +30,8 @@ #include "util/cstrbuf.h" +using namespace std; + // // PUBLIC // @@ -45,7 +47,7 @@ LogHandler::~LogHandler() {} void LogHandler::append(const char *pCategory, Logger::LoggerLevel level, - const char *pMsg, const std::timespec *now) { + const char *pMsg, const timespec *now) { if (m_max_repeat_frequency == 0 || level != m_last_level || strcmp(pCategory, m_last_category) || strcmp(pMsg, m_last_message)) { if (m_count_repeated_messages > 0) // print that message @@ -78,7 +80,7 @@ } void LogHandler::append_impl(const char *pCategory, Logger::LoggerLevel level, - const char *pMsg, const std::timespec *now) { + const char *pMsg, const timespec *now) { writeHeader(pCategory, level, now); if (m_count_repeated_messages <= 1) writeMessage(pMsg); @@ -93,7 +95,7 @@ const char *LogHandler::getDefaultHeader(char *pStr, const char *pCategory, Logger::LoggerLevel level, - const std::timespec *now) const { + const timespec *now) const { char timestamp[64]; Logger::format_timestamp(now, timestamp, sizeof(timestamp)); --- a/storage/ndb/src/common/logger/Logger.cpp 2025-09-24 21:35:03.000000000 +0800 +++ b/storage/ndb/src/common/logger/Logger.cpp 2025-12-15 01:12:39.000000000 +0800 @@ -45,6 +45,8 @@ #include "portlib/NdbTimestamp.h" #include "util/require.h" +using namespace std; + const char *Logger::LoggerLevelNames[] = {"ON ", "DEBUG ", "INFO ", "WARNING ", "ERROR ", "CRITICAL", "ALERT ", "ALL "}; @@ -78,7 +80,7 @@ * Here we pass the message to all bound in LogHandlers */ void append(const char *pCategory, Logger::LoggerLevel level, - const char *pMsg, const std::timespec *now) override { + const char *pMsg, const timespec *now) override { Guard g(m_listMutex); LogHandler *pHandler = nullptr; @@ -121,7 +123,7 @@ protected: void writeHeader(const char * /*pCategory*/, Logger::LoggerLevel /*level*/, - const std::timespec * /*now*/) override {} + const timespec * /*now*/) override {} void writeMessage(const char * /*pMsg*/) override {} void writeFooter() override {} @@ -386,7 +388,7 @@ if (m_logLevels[LL_ON] && m_logLevels[logLevel]) { char buf[MAX_LOG_MESSAGE_SIZE]; BaseString::vsnprintf(buf, sizeof(buf), pMsg, ap); - std::timespec now = NdbTimestamp_GetCurrentTime(); + timespec now = NdbTimestamp_GetCurrentTime(); m_logHandler->append(m_pCategory, logLevel, buf, &now); } } @@ -397,11 +399,11 @@ } Logger::Timestamp::Timestamp() { - std::timespec now = NdbTimestamp_GetCurrentTime(); + timespec now = NdbTimestamp_GetCurrentTime(); Logger::format_timestamp(&now, buff, TsLen); } -void Logger::format_timestamp(const std::timespec *epoch, char *str, +void Logger::format_timestamp(const timespec *epoch, char *str, size_t len) { assert(len > 0); // Assume buffer has size @@ -437,7 +439,7 @@ void log(LogLevel level, const char *category, const char *message) override { char timestamp[64]; std::ofstream ofs(filename); - std::timespec now = NdbTimestamp_GetCurrentTime(); + timespec now = NdbTimestamp_GetCurrentTime(); Logger::format_timestamp(&now, timestamp, sizeof(timestamp)); ofs << timestamp << " [" << category << "]" << " [" << level << "] " << message << std::endl; --- a/storage/ndb/include/logger/SysLogHandler.hpp 2025-09-24 21:35:03.000000000 +0800 +++ b/storage/ndb/include/logger/SysLogHandler.hpp 2025-12-15 01:16:37.000000000 +0800 @@ -30,6 +30,8 @@ #include "LogHandler.hpp" +using namespace std; + /** * Logs messages to syslog. The default identity is 'NDB'. * See 'man 3 syslog'. @@ -88,7 +90,7 @@ protected: void writeHeader(const char *pCategory, Logger::LoggerLevel level, - const std::timespec *now) override; + const timespec *now) override; void writeMessage(const char *pMsg) override; void writeFooter() override; --- a/storage/ndb/src/common/logger/SysLogHandler.cpp 2025-09-24 21:35:03.000000000 +0800 +++ b/storage/ndb/src/common/logger/SysLogHandler.cpp 2025-12-15 01:15:29.000000000 +0800 @@ -31,6 +31,8 @@ #include +using namespace std; + // // PUBLIC // @@ -67,7 +69,7 @@ void SysLogHandler::writeHeader(const char *pCategory, Logger::LoggerLevel level, - const std::timespec * /*now*/) { + const timespec * /*now*/) { // Save category to be used by writeMessage... m_pCategory = pCategory; // Map LogLevel to syslog severity