Loading sql/sql_class.cc +27 −12 Original line number Diff line number Diff line Loading @@ -306,20 +306,25 @@ void thd_inc_row_count(THD *thd) thd->row_count++; } /* /** Dumps a text description of a thread, its security context (user, host) and the current query. SYNOPSIS thd_security_context() thd current thread context buffer pointer to preferred result buffer length length of buffer max_query_len how many chars of query to copy (0 for all) @param thd current thread context @param buffer pointer to preferred result buffer @param length length of buffer @param max_query_len how many chars of query to copy (0 for all) @req LOCK_thread_count RETURN VALUES pointer to string @note LOCK_thread_count mutex is not necessary when the function is invoked on the currently running thread (current_thd) or if the caller in some other way guarantees that access to thd->query is serialized. @return Pointer to string */ extern "C" char *thd_security_context(THD *thd, char *buffer, unsigned int length, unsigned int max_query_len) Loading @@ -328,6 +333,16 @@ char *thd_security_context(THD *thd, char *buffer, unsigned int length, const Security_context *sctx= &thd->main_security_ctx; char header[64]; int len; /* The pointers thd->query and thd->proc_info might change since they are being modified concurrently. This is acceptable for proc_info since its values doesn't have to very accurate and the memory it points to is static, but we need to attempt a snapshot on the pointer values to avoid using NULL values. The pointer to thd->query however, doesn't point to static memory and has to be protected by LOCK_thread_count or risk pointing to uninitialized memory. */ const char *proc_info= thd->proc_info; len= my_snprintf(header, sizeof(header), "MySQL thread id %lu, query id %lu", Loading @@ -353,10 +368,10 @@ char *thd_security_context(THD *thd, char *buffer, unsigned int length, str.append(sctx->user); } if (thd->proc_info) if (proc_info) { str.append(' '); str.append(thd->proc_info); str.append(proc_info); } if (thd->query) Loading Loading
sql/sql_class.cc +27 −12 Original line number Diff line number Diff line Loading @@ -306,20 +306,25 @@ void thd_inc_row_count(THD *thd) thd->row_count++; } /* /** Dumps a text description of a thread, its security context (user, host) and the current query. SYNOPSIS thd_security_context() thd current thread context buffer pointer to preferred result buffer length length of buffer max_query_len how many chars of query to copy (0 for all) @param thd current thread context @param buffer pointer to preferred result buffer @param length length of buffer @param max_query_len how many chars of query to copy (0 for all) @req LOCK_thread_count RETURN VALUES pointer to string @note LOCK_thread_count mutex is not necessary when the function is invoked on the currently running thread (current_thd) or if the caller in some other way guarantees that access to thd->query is serialized. @return Pointer to string */ extern "C" char *thd_security_context(THD *thd, char *buffer, unsigned int length, unsigned int max_query_len) Loading @@ -328,6 +333,16 @@ char *thd_security_context(THD *thd, char *buffer, unsigned int length, const Security_context *sctx= &thd->main_security_ctx; char header[64]; int len; /* The pointers thd->query and thd->proc_info might change since they are being modified concurrently. This is acceptable for proc_info since its values doesn't have to very accurate and the memory it points to is static, but we need to attempt a snapshot on the pointer values to avoid using NULL values. The pointer to thd->query however, doesn't point to static memory and has to be protected by LOCK_thread_count or risk pointing to uninitialized memory. */ const char *proc_info= thd->proc_info; len= my_snprintf(header, sizeof(header), "MySQL thread id %lu, query id %lu", Loading @@ -353,10 +368,10 @@ char *thd_security_context(THD *thd, char *buffer, unsigned int length, str.append(sctx->user); } if (thd->proc_info) if (proc_info) { str.append(' '); str.append(thd->proc_info); str.append(proc_info); } if (thd->query) Loading