@@ -3681,14 +3681,14 @@ void pfs_detect_telemetry_vc(PSI_thread *thread [[maybe_unused]]) {
3681
3681
assert (pfs_thread != nullptr );
3682
3682
3683
3683
// Dirty read
3684
- telemetry_t *actual_telemetry = g_telemetry.load ();
3684
+ telemetry_t *actual_telemetry = g_telemetry.m_ptr . load ();
3685
3685
3686
3686
telemetry_t *expected_telemetry = pfs_thread->m_telemetry ;
3687
3687
3688
3688
if (actual_telemetry != expected_telemetry) {
3689
3689
server_telemetry_tracing_lock ();
3690
3690
// Safe read
3691
- actual_telemetry = g_telemetry.load ();
3691
+ actual_telemetry = g_telemetry.m_ptr . load ();
3692
3692
if (actual_telemetry != expected_telemetry) {
3693
3693
if (expected_telemetry == nullptr ) {
3694
3694
pfs_thread->m_telemetry = actual_telemetry;
@@ -6617,6 +6617,7 @@ void pfs_start_statement_vc(PSI_statement_locker *locker, const char *db,
6617
6617
pfs->m_sqltext_cs_number = system_charset_info->number ; /* default */
6618
6618
6619
6619
pfs->m_message_text [0 ] = ' \0 ' ;
6620
+ pfs->m_message_text_length = 0 ;
6620
6621
pfs->m_sql_errno = 0 ;
6621
6622
pfs->m_sqlstate [0 ] = ' \0 ' ;
6622
6623
pfs->m_error_count = 0 ;
@@ -6966,15 +6967,22 @@ void pfs_end_statement_vc(PSI_statement_locker *locker, void *stmt_da) {
6966
6967
reinterpret_cast <PFS_events_statements *>(state->m_statement );
6967
6968
assert (pfs != nullptr );
6968
6969
6970
+ size_t message_text_length;
6969
6971
pfs_dirty_state dirty_state;
6970
6972
thread->m_stmt_lock .allocated_to_dirty (&dirty_state);
6971
6973
6972
6974
switch (da->status ()) {
6973
6975
case Diagnostics_area::DA_EMPTY:
6974
6976
break ;
6975
6977
case Diagnostics_area::DA_OK:
6976
- memcpy (pfs->m_message_text , da->message_text (), MYSQL_ERRMSG_SIZE);
6977
- pfs->m_message_text [MYSQL_ERRMSG_SIZE] = 0 ;
6978
+ message_text_length = da->message_text_length ();
6979
+ if (message_text_length > 0 ) {
6980
+ memcpy (pfs->m_message_text , da->message_text (),
6981
+ message_text_length);
6982
+ }
6983
+ pfs->m_message_text [message_text_length] = ' \0 ' ;
6984
+ pfs->m_message_text_length = message_text_length;
6985
+
6978
6986
pfs->m_rows_affected = da->affected_rows ();
6979
6987
pfs->m_warning_count = da->last_statement_cond_count ();
6980
6988
memcpy (pfs->m_sqlstate , " 00000" , SQLSTATE_LENGTH);
@@ -6983,8 +6991,14 @@ void pfs_end_statement_vc(PSI_statement_locker *locker, void *stmt_da) {
6983
6991
pfs->m_warning_count = da->last_statement_cond_count ();
6984
6992
break ;
6985
6993
case Diagnostics_area::DA_ERROR:
6986
- memcpy (pfs->m_message_text , da->message_text (), MYSQL_ERRMSG_SIZE);
6987
- pfs->m_message_text [MYSQL_ERRMSG_SIZE] = 0 ;
6994
+ message_text_length = da->message_text_length ();
6995
+ if (message_text_length > 0 ) {
6996
+ memcpy (pfs->m_message_text , da->message_text (),
6997
+ message_text_length);
6998
+ }
6999
+ pfs->m_message_text [message_text_length] = ' \0 ' ;
7000
+ pfs->m_message_text_length = message_text_length;
7001
+
6988
7002
pfs->m_sql_errno = da->mysql_errno ();
6989
7003
memcpy (pfs->m_sqlstate , da->returned_sqlstate (), SQLSTATE_LENGTH);
6990
7004
pfs->m_error_count ++;
0 commit comments