Coverage Report

Created: 2026-02-14 06:50

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/mysql-server/mysys/psi_noop.cc
Line
Count
Source
1
/* Copyright (c) 2011, 2025, Oracle and/or its affiliates.
2
3
  This program is free software; you can redistribute it and/or modify
4
  it under the terms of the GNU General Public License, version 2.0,
5
  as published by the Free Software Foundation.
6
7
  This program is designed to work with certain software (including
8
  but not limited to OpenSSL) that is licensed under separate terms,
9
  as designated in a particular file or component or in included license
10
  documentation.  The authors of MySQL hereby grant you an additional
11
  permission to link the program and your derivative works with the
12
  separately licensed software that they have either included with
13
  the program or referenced in the documentation.
14
15
  Without limiting anything contained in the foregoing, this file,
16
  which is part of C Driver for MySQL (Connector/C), is also subject to the
17
  Universal FOSS Exception, version 1.0, a copy of which can be found at
18
  http://oss.oracle.com/licenses/universal-foss-exception.
19
20
  This program is distributed in the hope that it will be useful,
21
  but WITHOUT ANY WARRANTY; without even the implied warranty of
22
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23
  GNU General Public License, version 2.0, for more details.
24
25
  You should have received a copy of the GNU General Public License
26
  along with this program; if not, write to the Free Software
27
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA */
28
29
/**
30
  @file mysys/psi_noop.cc
31
  Always provide the noop performance interface, for plugins.
32
*/
33
34
#define HAVE_PSI_MUTEX_INTERFACE
35
#define HAVE_PSI_RWLOCK_INTERFACE
36
#define HAVE_PSI_COND_INTERFACE
37
#define HAVE_PSI_FILE_INTERFACE
38
#define HAVE_PSI_THREAD_INTERFACE
39
#define HAVE_PSI_TABLE_INTERFACE
40
#define HAVE_PSI_STAGE_INTERFACE
41
#define HAVE_PSI_STATEMENT_INTERFACE
42
#define HAVE_PSI_SP_INTERFACE
43
#define HAVE_PSI_PS_INTERFACE
44
#define HAVE_PSI_STATEMENT_DIGEST_INTERFACE
45
#define HAVE_PSI_TRANSACTION_INTERFACE
46
#define HAVE_PSI_SOCKET_INTERFACE
47
#define HAVE_PSI_MEMORY_INTERFACE
48
#define HAVE_PSI_METRICS_INTERFACE
49
#define HAVE_PSI_ERROR_INTERFACE
50
#define HAVE_PSI_IDLE_INTERFACE
51
#define HAVE_PSI_METADATA_INTERFACE
52
#define HAVE_PSI_DATA_LOCK_INTERFACE
53
#define HAVE_PSI_SYSTEM_INTERFACE
54
#define HAVE_PSI_TLS_CHANNEL_INTERFACE
55
#define HAVE_PSI_SERVER_TELEMETRY_TRACES_INTERFACE
56
#define HAVE_PSI_SERVER_TELEMETRY_LOGS_INTERFACE
57
58
#include "my_config.h"
59
60
#ifdef HAVE_SYS_SOCKET_H
61
#include <sys/socket.h>
62
#endif
63
#include <sys/types.h>
64
#include <ctime>
65
66
#include "my_inttypes.h"
67
#include "my_sys.h"  // IWYU pragma: keep
68
#include "my_thread.h"
69
#include "mysql/components/services/bits/psi_error_bits.h"
70
#include "mysql/components/services/bits/psi_idle_bits.h"
71
#include "mysql/components/services/bits/psi_mdl_bits.h"
72
#include "mysql/components/services/bits/psi_statement_bits.h"
73
#include "mysql/components/services/bits/psi_tls_channel_bits.h"
74
#include "mysql/components/services/bits/psi_transaction_bits.h"
75
#include "mysql/psi/psi_cond.h"
76
#include "mysql/psi/psi_data_lock.h"
77
#include "mysql/psi/psi_error.h"
78
#include "mysql/psi/psi_file.h"
79
#include "mysql/psi/psi_idle.h"
80
#include "mysql/psi/psi_logger_client.h"
81
#include "mysql/psi/psi_mdl.h"
82
#include "mysql/psi/psi_memory.h"
83
#include "mysql/psi/psi_metric.h"
84
#include "mysql/psi/psi_mutex.h"
85
#include "mysql/psi/psi_rwlock.h"
86
#include "mysql/psi/psi_socket.h"
87
#include "mysql/psi/psi_stage.h"
88
#include "mysql/psi/psi_statement.h"
89
#include "mysql/psi/psi_system.h"
90
#include "mysql/psi/psi_table.h"
91
#include "mysql/psi/psi_thread.h"
92
#include "mysql/psi/psi_tls_channel.h"
93
#include "mysql/psi/psi_transaction.h"
94
95
class THD;
96
struct MDL_key;
97
struct PSI_logger;
98
struct log_attribute_t;
99
100
// ===========================================================================
101
102
0
static void register_thread_noop(const char *, PSI_thread_info *, int) {}
103
104
static int spawn_thread_noop(PSI_thread_key, unsigned int,
105
                             my_thread_handle *thread,
106
                             const my_thread_attr_t *attr,
107
0
                             my_start_routine start_routine, void *arg) {
108
0
  return my_thread_create(thread, attr, start_routine, arg);
109
0
}
110
111
static PSI_thread *new_thread_noop(PSI_thread_key, unsigned int, const void *,
112
0
                                   ulonglong) {
113
0
  return nullptr;
114
0
}
115
116
0
static void set_thread_id_noop(PSI_thread *, ulonglong) {}
117
118
0
static ulonglong get_current_thread_internal_id_noop() { return 0; }
119
120
0
static ulonglong get_thread_internal_id_noop(PSI_thread *) { return 0; }
121
122
0
static PSI_thread *get_thread_by_id_noop(ulonglong) { return nullptr; }
123
124
0
static void set_thread_THD_noop(PSI_thread *, THD *) {}
125
126
0
static void set_thread_os_id_noop(PSI_thread *) {}
127
128
0
static PSI_thread *get_thread_noop() { return nullptr; }
129
130
0
static void set_thread_user_noop(const char *, int) {}
131
132
0
static void set_thread_user_host_noop(const char *, int, const char *, int) {}
133
134
0
static void set_thread_db_noop(const char *, int) {}
135
136
0
static void set_thread_command_noop(int) {}
137
138
0
static void set_connection_type_noop(opaque_vio_type) {}
139
140
0
static void set_thread_start_time_noop(time_t) {}
141
142
0
static void set_thread_info_noop(const char *, uint) {}
143
144
0
static void set_thread_secondary_engine_noop(bool) {}
145
146
0
static void set_thread_noop(PSI_thread *) {}
147
148
0
static void set_thread_peer_port_noop(PSI_thread *, uint) {}
149
150
0
static int set_thread_resource_group_noop(const char *, int, void *) {
151
0
  return 0;
152
0
}
153
154
static int set_thread_resource_group_by_id_noop(PSI_thread *, ulonglong,
155
0
                                                const char *, int, void *) {
156
0
  return 0;
157
0
}
158
159
0
static void aggregate_thread_status_noop(PSI_thread *) {}
160
161
0
static void delete_current_thread_noop() {}
162
163
0
static void delete_thread_noop(PSI_thread *) {}
164
165
static int set_thread_connect_attrs_noop(const char *buffer [[maybe_unused]],
166
                                         uint length [[maybe_unused]],
167
0
                                         const void *from_cs [[maybe_unused]]) {
168
0
  return 0;
169
0
}
170
171
static void get_current_thread_event_id_noop(ulonglong *thread_internal_id,
172
0
                                             ulonglong *event_id) {
173
0
  *thread_internal_id = 0;
174
0
  *event_id = 0;
175
0
}
176
177
static void get_thread_event_id_noop(PSI_thread *,
178
                                     ulonglong *thread_internal_id,
179
0
                                     ulonglong *event_id) {
180
0
  *thread_internal_id = 0;
181
0
  *event_id = 0;
182
0
}
183
184
0
static int get_thread_system_attrs_noop(PSI_thread_attrs *) { return 0; }
185
186
static int get_thread_system_attrs_by_id_noop(PSI_thread *, ulonglong,
187
0
                                              PSI_thread_attrs *) {
188
0
  return 0;
189
0
}
190
191
0
static int register_notification_noop(const PSI_notification *, bool) {
192
0
  return 0;
193
0
}
194
195
0
static int unregister_notification_noop(int) { return 0; }
196
197
0
static void notify_session_connect_noop(PSI_thread *) {}
198
199
0
static void notify_session_disconnect_noop(PSI_thread *) {}
200
201
0
static void notify_session_change_user_noop(PSI_thread *) {}
202
203
0
static void set_mem_cnt_THD_noop(THD *, THD **backup_thd) {
204
0
  *backup_thd = nullptr;
205
0
}
206
207
0
static void detect_telemetry_noop(PSI_thread * /*unused*/) {}
208
0
static void abort_telemetry_noop(PSI_thread * /*unused*/) {}
209
210
static PSI_thread_service_t psi_thread_noop = {
211
    register_thread_noop,
212
    spawn_thread_noop,
213
    new_thread_noop,
214
    set_thread_id_noop,
215
    get_current_thread_internal_id_noop,
216
    get_thread_internal_id_noop,
217
    get_thread_by_id_noop,
218
    set_thread_THD_noop,
219
    set_thread_os_id_noop,
220
    get_thread_noop,
221
    set_thread_user_noop,
222
    set_thread_user_host_noop,
223
    set_thread_db_noop,
224
    set_thread_command_noop,
225
    set_connection_type_noop,
226
    set_thread_start_time_noop,
227
    set_thread_info_noop,
228
    set_thread_secondary_engine_noop,
229
    set_thread_resource_group_noop,
230
    set_thread_resource_group_by_id_noop,
231
    set_thread_noop,
232
    set_thread_peer_port_noop,
233
    aggregate_thread_status_noop,
234
    delete_current_thread_noop,
235
    delete_thread_noop,
236
    set_thread_connect_attrs_noop,
237
    get_current_thread_event_id_noop,
238
    get_thread_event_id_noop,
239
    get_thread_system_attrs_noop,
240
    get_thread_system_attrs_by_id_noop,
241
    register_notification_noop,
242
    unregister_notification_noop,
243
    notify_session_connect_noop,
244
    notify_session_disconnect_noop,
245
    notify_session_change_user_noop,
246
    set_mem_cnt_THD_noop,
247
    detect_telemetry_noop,
248
    abort_telemetry_noop};
249
250
struct PSI_thread_bootstrap *psi_thread_hook = nullptr;
251
PSI_thread_service_t *psi_thread_service = &psi_thread_noop;
252
253
0
void set_psi_thread_service(void *psi) {
254
0
  psi_thread_service = (PSI_thread_service_t *)psi;
255
0
}
256
257
// ===========================================================================
258
259
0
static void register_mutex_noop(const char *, PSI_mutex_info *, int) {}
260
261
14
static PSI_mutex *init_mutex_noop(PSI_mutex_key, const void *) {
262
14
  return nullptr;
263
14
}
264
265
0
static void destroy_mutex_noop(PSI_mutex *) {}
266
267
static PSI_mutex_locker *start_mutex_wait_noop(PSI_mutex_locker_state *,
268
                                               PSI_mutex *, PSI_mutex_operation,
269
0
                                               const char *, uint) {
270
0
  return nullptr;
271
0
}
272
273
0
static void end_mutex_wait_noop(PSI_mutex_locker *, int) {}
274
275
0
static void unlock_mutex_noop(PSI_mutex *) {}
276
277
static PSI_mutex_service_t psi_mutex_noop = {
278
    register_mutex_noop,   init_mutex_noop,     destroy_mutex_noop,
279
    start_mutex_wait_noop, end_mutex_wait_noop, unlock_mutex_noop};
280
281
struct PSI_mutex_bootstrap *psi_mutex_hook = nullptr;
282
PSI_mutex_service_t *psi_mutex_service = &psi_mutex_noop;
283
284
0
void set_psi_mutex_service(void *psi) {
285
0
  psi_mutex_service = (PSI_mutex_service_t *)psi;
286
0
}
287
288
// ===========================================================================
289
290
0
static void register_rwlock_noop(const char *, PSI_rwlock_info *, int) {}
291
292
0
static PSI_rwlock *init_rwlock_noop(PSI_rwlock_key, const void *) {
293
0
  return nullptr;
294
0
}
295
296
0
static void destroy_rwlock_noop(PSI_rwlock *) {}
297
298
static PSI_rwlock_locker *start_rwlock_rdwait_noop(
299
    struct PSI_rwlock_locker_state_v1 *, struct PSI_rwlock *,
300
0
    enum PSI_rwlock_operation, const char *, uint) {
301
0
  return nullptr;
302
0
}
303
304
0
static void end_rwlock_rdwait_noop(PSI_rwlock_locker *, int) {}
305
306
static struct PSI_rwlock_locker *start_rwlock_wrwait_noop(
307
    struct PSI_rwlock_locker_state_v1 *, struct PSI_rwlock *,
308
0
    enum PSI_rwlock_operation, const char *, uint) {
309
0
  return nullptr;
310
0
}
311
312
0
static void end_rwlock_wrwait_noop(PSI_rwlock_locker *, int) {}
313
314
0
static void unlock_rwlock_noop(PSI_rwlock *, enum PSI_rwlock_operation) {}
315
316
static PSI_rwlock_service_t psi_rwlock_noop = {
317
    register_rwlock_noop,     init_rwlock_noop,       destroy_rwlock_noop,
318
    start_rwlock_rdwait_noop, end_rwlock_rdwait_noop, start_rwlock_wrwait_noop,
319
    end_rwlock_wrwait_noop,   unlock_rwlock_noop};
320
321
struct PSI_rwlock_bootstrap *psi_rwlock_hook = nullptr;
322
PSI_rwlock_service_t *psi_rwlock_service = &psi_rwlock_noop;
323
324
0
void set_psi_rwlock_service(void *psi) {
325
0
  psi_rwlock_service = (PSI_rwlock_service_t *)psi;
326
0
}
327
328
// ===========================================================================
329
330
0
static void register_cond_noop(const char *, PSI_cond_info *, int) {}
331
332
0
static PSI_cond *init_cond_noop(PSI_cond_key, const void *) { return nullptr; }
333
334
0
static void destroy_cond_noop(PSI_cond *) {}
335
336
0
static void signal_cond_noop(PSI_cond *) {}
337
338
0
static void broadcast_cond_noop(PSI_cond *) {}
339
340
static struct PSI_cond_locker *start_cond_wait_noop(
341
    struct PSI_cond_locker_state_v1 *, struct PSI_cond *, struct PSI_mutex *,
342
0
    enum PSI_cond_operation, const char *, uint) {
343
0
  return nullptr;
344
0
}
345
346
0
static void end_cond_wait_noop(PSI_cond_locker *, int) {}
347
348
static PSI_cond_service_t psi_cond_noop = {
349
    register_cond_noop, init_cond_noop,      destroy_cond_noop,
350
    signal_cond_noop,   broadcast_cond_noop, start_cond_wait_noop,
351
    end_cond_wait_noop};
352
353
struct PSI_cond_bootstrap *psi_cond_hook = nullptr;
354
PSI_cond_service_t *psi_cond_service = &psi_cond_noop;
355
356
0
void set_psi_cond_service(void *psi) {
357
0
  psi_cond_service = (PSI_cond_service_t *)psi;
358
0
}
359
360
// ===========================================================================
361
362
0
static void register_file_noop(const char *, PSI_file_info *, int) {}
363
364
static PSI_file_locker *get_thread_file_name_locker_noop(
365
    PSI_file_locker_state *, PSI_file_key, enum PSI_file_operation,
366
0
    const char *, const void *) {
367
0
  return nullptr;
368
0
}
369
370
static PSI_file_locker *get_thread_file_stream_locker_noop(
371
0
    PSI_file_locker_state *, PSI_file *, enum PSI_file_operation) {
372
0
  return nullptr;
373
0
}
374
375
static PSI_file_locker *get_thread_file_descriptor_locker_noop(
376
0
    PSI_file_locker_state *, File, enum PSI_file_operation) {
377
0
  return nullptr;
378
0
}
379
380
0
static void create_file_noop(PSI_file_key, const char *, File) {}
381
382
0
static void start_file_open_wait_noop(PSI_file_locker *, const char *, uint) {}
383
384
0
static PSI_file *end_file_open_wait_noop(PSI_file_locker *, void *) {
385
0
  return nullptr;
386
0
}
387
388
static void end_file_open_wait_and_bind_to_descriptor_noop(PSI_file_locker *,
389
0
                                                           File) {}
390
391
static void end_temp_file_open_wait_and_bind_to_descriptor_noop(
392
0
    PSI_file_locker *, File, const char *) {}
393
394
static void start_file_wait_noop(PSI_file_locker *, size_t, const char *,
395
0
                                 uint) {}
396
397
0
static void end_file_wait_noop(PSI_file_locker *, size_t) {}
398
399
0
static void start_file_close_wait_noop(PSI_file_locker *, const char *, uint) {}
400
401
0
static void end_file_close_wait_noop(PSI_file_locker *, int) {}
402
403
static void start_file_rename_wait_noop(PSI_file_locker *, size_t, const char *,
404
0
                                        const char *, const char *, uint) {}
405
406
static void end_file_rename_wait_noop(PSI_file_locker *, const char *,
407
0
                                      const char *, int) {}
408
409
static PSI_file_service_t psi_file_noop = {
410
    register_file_noop,
411
    create_file_noop,
412
    get_thread_file_name_locker_noop,
413
    get_thread_file_stream_locker_noop,
414
    get_thread_file_descriptor_locker_noop,
415
    start_file_open_wait_noop,
416
    end_file_open_wait_noop,
417
    end_file_open_wait_and_bind_to_descriptor_noop,
418
    end_temp_file_open_wait_and_bind_to_descriptor_noop,
419
    start_file_wait_noop,
420
    end_file_wait_noop,
421
    start_file_close_wait_noop,
422
    end_file_close_wait_noop,
423
    start_file_rename_wait_noop,
424
    end_file_rename_wait_noop};
425
426
struct PSI_file_bootstrap *psi_file_hook = nullptr;
427
PSI_file_service_t *psi_file_service = &psi_file_noop;
428
429
0
void set_psi_file_service(void *psi) {
430
0
  psi_file_service = (PSI_file_service_t *)psi;
431
0
}
432
433
// ===========================================================================
434
435
0
static void register_socket_noop(const char *, PSI_socket_info *, int) {}
436
437
static PSI_socket *init_socket_noop(PSI_socket_key, const my_socket *,
438
0
                                    const struct sockaddr *, socklen_t) {
439
0
  return nullptr;
440
0
}
441
442
0
static void destroy_socket_noop(PSI_socket *) {}
443
444
static PSI_socket_locker *start_socket_wait_noop(PSI_socket_locker_state *,
445
                                                 PSI_socket *,
446
                                                 PSI_socket_operation, size_t,
447
0
                                                 const char *, uint) {
448
0
  return nullptr;
449
0
}
450
451
0
static void end_socket_wait_noop(PSI_socket_locker *, size_t) {}
452
453
0
static void set_socket_state_noop(PSI_socket *, enum PSI_socket_state) {}
454
455
static void set_socket_info_noop(PSI_socket *, const my_socket *,
456
0
                                 const struct sockaddr *, socklen_t) {}
457
458
0
static void set_socket_thread_owner_noop(PSI_socket *) {}
459
460
static PSI_socket_service_t psi_socket_noop = {
461
    register_socket_noop, init_socket_noop,
462
    destroy_socket_noop,  start_socket_wait_noop,
463
    end_socket_wait_noop, set_socket_state_noop,
464
    set_socket_info_noop, set_socket_thread_owner_noop};
465
466
struct PSI_socket_bootstrap *psi_socket_hook = nullptr;
467
PSI_socket_service_t *psi_socket_service = &psi_socket_noop;
468
469
0
void set_psi_socket_service(void *psi) {
470
0
  psi_socket_service = (PSI_socket_service_t *)psi;
471
0
}
472
473
// ===========================================================================
474
475
0
static PSI_table_share *get_table_share_noop(bool, struct TABLE_SHARE *) {
476
0
  return nullptr;
477
0
}
478
479
0
static void release_table_share_noop(PSI_table_share *) {}
480
481
0
static void drop_table_share_noop(bool, const char *, int, const char *, int) {}
482
483
0
static PSI_table *open_table_noop(PSI_table_share *, const void *) {
484
0
  return nullptr;
485
0
}
486
487
0
static void unbind_table_noop(PSI_table *) {}
488
489
static PSI_table *rebind_table_noop(PSI_table_share *, const void *,
490
0
                                    PSI_table *) {
491
0
  return nullptr;
492
0
}
493
494
0
static void close_table_noop(struct TABLE_SHARE *, PSI_table *) {}
495
496
static struct PSI_table_locker *start_table_io_wait_noop(
497
    struct PSI_table_locker_state *, struct PSI_table *,
498
0
    enum PSI_table_io_operation, uint, const char *, uint) {
499
0
  return nullptr;
500
0
}
501
502
0
static void end_table_io_wait_noop(PSI_table_locker *, ulonglong) {}
503
504
static struct PSI_table_locker *start_table_lock_wait_noop(
505
    struct PSI_table_locker_state *, struct PSI_table *,
506
0
    enum PSI_table_lock_operation, ulong, const char *, uint) {
507
0
  return nullptr;
508
0
}
509
510
0
static void end_table_lock_wait_noop(PSI_table_locker *) {}
511
512
0
static void unlock_table_noop(PSI_table *) {}
513
514
static PSI_table_service_t psi_table_noop = {
515
    get_table_share_noop,     release_table_share_noop,
516
    drop_table_share_noop,    open_table_noop,
517
    unbind_table_noop,        rebind_table_noop,
518
    close_table_noop,         start_table_io_wait_noop,
519
    end_table_io_wait_noop,   start_table_lock_wait_noop,
520
    end_table_lock_wait_noop, unlock_table_noop};
521
522
struct PSI_table_bootstrap *psi_table_hook = nullptr;
523
PSI_table_service_t *psi_table_service = &psi_table_noop;
524
525
0
void set_psi_table_service(void *psi) {
526
0
  psi_table_service = (PSI_table_service_t *)psi;
527
0
}
528
529
// ===========================================================================
530
531
static PSI_metadata_lock *create_metadata_lock_noop(void *, const MDL_key *,
532
                                                    opaque_mdl_type,
533
                                                    opaque_mdl_duration,
534
                                                    opaque_mdl_status,
535
0
                                                    const char *, uint) {
536
0
  return nullptr;
537
0
}
538
539
static void set_metadata_lock_status_noop(PSI_metadata_lock *,
540
0
                                          opaque_mdl_status) {}
541
542
static void set_metadata_lock_duration_noop(PSI_metadata_lock *,
543
0
                                            opaque_mdl_duration) {}
544
545
0
static void set_metadata_lock_type_noop(PSI_metadata_lock *, opaque_mdl_type) {}
546
547
0
static void destroy_metadata_lock_noop(PSI_metadata_lock *) {}
548
549
static PSI_metadata_locker *start_metadata_wait_noop(
550
0
    PSI_metadata_locker_state *, PSI_metadata_lock *, const char *, uint) {
551
0
  return nullptr;
552
0
}
553
554
0
static void end_metadata_wait_noop(PSI_metadata_locker *, int) {}
555
556
static PSI_mdl_service_t psi_mdl_noop = {
557
    create_metadata_lock_noop,       set_metadata_lock_status_noop,
558
    set_metadata_lock_duration_noop, set_metadata_lock_type_noop,
559
    destroy_metadata_lock_noop,      start_metadata_wait_noop,
560
    end_metadata_wait_noop};
561
562
struct PSI_mdl_bootstrap *psi_mdl_hook = nullptr;
563
PSI_mdl_service_t *psi_mdl_service = &psi_mdl_noop;
564
565
0
void set_psi_mdl_service(void *psi) {
566
0
  psi_mdl_service = (PSI_mdl_service_t *)psi;
567
0
}
568
569
// ===========================================================================
570
571
static PSI_idle_locker *start_idle_wait_noop(PSI_idle_locker_state *,
572
0
                                             const char *, uint) {
573
0
  return nullptr;
574
0
}
575
576
0
static void end_idle_wait_noop(PSI_idle_locker *) {}
577
578
static PSI_idle_service_t psi_idle_noop = {start_idle_wait_noop,
579
                                           end_idle_wait_noop};
580
581
struct PSI_idle_bootstrap *psi_idle_hook = nullptr;
582
PSI_idle_service_t *psi_idle_service = &psi_idle_noop;
583
584
0
void set_psi_idle_service(void *psi) {
585
0
  psi_idle_service = (PSI_idle_service_t *)psi;
586
0
}
587
588
// ===========================================================================
589
590
0
static void register_stage_noop(const char *, PSI_stage_info **, int) {}
591
592
0
static PSI_stage_progress *start_stage_noop(PSI_stage_key, const char *, int) {
593
0
  return nullptr;
594
0
}
595
596
0
static PSI_stage_progress *get_current_stage_progress_noop() { return nullptr; }
597
598
0
static void end_stage_noop() {}
599
600
static PSI_stage_service_t psi_stage_noop = {
601
    register_stage_noop, start_stage_noop, get_current_stage_progress_noop,
602
    end_stage_noop};
603
604
struct PSI_stage_bootstrap *psi_stage_hook = nullptr;
605
PSI_stage_service_t *psi_stage_service = &psi_stage_noop;
606
607
0
void set_psi_stage_service(void *psi) {
608
0
  psi_stage_service = (PSI_stage_service_t *)psi;
609
0
}
610
611
// ===========================================================================
612
613
0
static void register_statement_noop(const char *, PSI_statement_info *, int) {}
614
615
static PSI_statement_locker *get_thread_statement_locker_noop(
616
    PSI_statement_locker_state *, PSI_statement_key, const void *,
617
0
    PSI_sp_share *) {
618
0
  return nullptr;
619
0
}
620
621
static PSI_statement_locker *refine_statement_noop(PSI_statement_locker *,
622
0
                                                   PSI_statement_key) {
623
0
  return nullptr;
624
0
}
625
626
static void start_statement_noop(PSI_statement_locker *, const char *, uint,
627
0
                                 const char *, uint) {}
628
629
static void set_statement_text_noop(PSI_statement_locker *, const char *,
630
0
                                    uint) {}
631
632
0
static void set_statement_query_id_noop(PSI_statement_locker *, ulonglong) {}
633
634
0
static void set_statement_lock_time_noop(PSI_statement_locker *, ulonglong) {}
635
636
0
static void set_statement_rows_sent_noop(PSI_statement_locker *, ulonglong) {}
637
638
static void set_statement_rows_examined_noop(PSI_statement_locker *,
639
0
                                             ulonglong) {}
640
641
static void inc_statement_created_tmp_disk_tables_noop(PSI_statement_locker *,
642
0
                                                       ulong) {}
643
644
static void inc_statement_created_tmp_tables_noop(PSI_statement_locker *,
645
0
                                                  ulong) {}
646
647
0
static void inc_statement_select_full_join_noop(PSI_statement_locker *, ulong) {
648
0
}
649
650
static void inc_statement_select_full_range_join_noop(PSI_statement_locker *,
651
0
                                                      ulong) {}
652
653
0
static void inc_statement_select_range_noop(PSI_statement_locker *, ulong) {}
654
655
static void inc_statement_select_range_check_noop(PSI_statement_locker *,
656
0
                                                  ulong) {}
657
658
0
static void inc_statement_select_scan_noop(PSI_statement_locker *, ulong) {}
659
660
static void inc_statement_sort_merge_passes_noop(PSI_statement_locker *,
661
0
                                                 ulong) {}
662
663
0
static void inc_statement_sort_range_noop(PSI_statement_locker *, ulong) {}
664
665
0
static void inc_statement_sort_rows_noop(PSI_statement_locker *, ulong) {}
666
667
0
static void inc_statement_sort_scan_noop(PSI_statement_locker *, ulong) {}
668
669
0
static void set_statement_no_index_used_noop(PSI_statement_locker *) {}
670
671
0
static void set_statement_no_good_index_used_noop(PSI_statement_locker *) {}
672
673
0
static void set_statement_secondary_engine_noop(PSI_statement_locker *, bool) {}
674
675
0
static void end_statement_noop(PSI_statement_locker *, void *) {}
676
677
static PSI_prepared_stmt *create_prepared_stmt_noop(void *, uint,
678
                                                    PSI_statement_locker *,
679
                                                    const char *, size_t,
680
0
                                                    const char *, size_t) {
681
0
  return nullptr;
682
0
}
683
684
0
static void destroy_prepared_stmt_noop(PSI_prepared_stmt *) {}
685
686
0
static void reprepare_prepared_stmt_noop(PSI_prepared_stmt *) {}
687
688
static void execute_prepared_stmt_noop(PSI_statement_locker *,
689
0
                                       PSI_prepared_stmt *) {}
690
691
static void set_prepared_stmt_text_noop(PSI_prepared_stmt *, const char *,
692
0
                                        uint) {}
693
694
0
static void set_prepared_stmt_secondary_engine_noop(PSI_prepared_stmt *, bool) {
695
0
}
696
697
0
static struct PSI_digest_locker *digest_start_noop(PSI_statement_locker *) {
698
0
  return nullptr;
699
0
}
700
701
static void digest_end_noop(PSI_digest_locker *,
702
0
                            const struct sql_digest_storage *) {}
703
704
static PSI_sp_share *get_sp_share_noop(uint, const char *, uint, const char *,
705
0
                                       uint) {
706
0
  return nullptr;
707
0
}
708
709
0
static void release_sp_share_noop(PSI_sp_share *) {}
710
711
0
static PSI_sp_locker *start_sp_noop(PSI_sp_locker_state *, PSI_sp_share *) {
712
0
  return nullptr;
713
0
}
714
715
0
static void end_sp_noop(PSI_sp_locker *) {}
716
717
0
static void drop_sp_noop(uint, const char *, uint, const char *, uint) {}
718
719
static void notify_statement_query_attributes_noop(PSI_statement_locker *,
720
0
                                                   bool) {}
721
722
0
static void abort_statement_telemetry_noop(PSI_statement_locker * /*unused*/) {}
723
724
static PSI_statement_service_t psi_statement_noop = {
725
    register_statement_noop,
726
    get_thread_statement_locker_noop,
727
    refine_statement_noop,
728
    start_statement_noop,
729
    set_statement_text_noop,
730
    set_statement_query_id_noop,
731
    set_statement_lock_time_noop,
732
    set_statement_rows_sent_noop,
733
    set_statement_rows_examined_noop,
734
    inc_statement_created_tmp_disk_tables_noop,
735
    inc_statement_created_tmp_tables_noop,
736
    inc_statement_select_full_join_noop,
737
    inc_statement_select_full_range_join_noop,
738
    inc_statement_select_range_noop,
739
    inc_statement_select_range_check_noop,
740
    inc_statement_select_scan_noop,
741
    inc_statement_sort_merge_passes_noop,
742
    inc_statement_sort_range_noop,
743
    inc_statement_sort_rows_noop,
744
    inc_statement_sort_scan_noop,
745
    set_statement_no_index_used_noop,
746
    set_statement_no_good_index_used_noop,
747
    set_statement_secondary_engine_noop,
748
    end_statement_noop,
749
    create_prepared_stmt_noop,
750
    destroy_prepared_stmt_noop,
751
    reprepare_prepared_stmt_noop,
752
    execute_prepared_stmt_noop,
753
    set_prepared_stmt_text_noop,
754
    set_prepared_stmt_secondary_engine_noop,
755
    digest_start_noop,
756
    digest_end_noop,
757
    get_sp_share_noop,
758
    release_sp_share_noop,
759
    start_sp_noop,
760
    end_sp_noop,
761
    drop_sp_noop,
762
    notify_statement_query_attributes_noop,
763
    abort_statement_telemetry_noop};
764
765
struct PSI_statement_bootstrap *psi_statement_hook = nullptr;
766
PSI_statement_service_t *psi_statement_service = &psi_statement_noop;
767
768
0
void set_psi_statement_service(void *psi) {
769
0
  psi_statement_service = (PSI_statement_service_t *)psi;
770
0
}
771
772
// ===========================================================================
773
774
static PSI_transaction_locker *get_thread_transaction_locker_noop(
775
    PSI_transaction_locker_state *, const void *, const ulonglong *, int, bool,
776
0
    bool) {
777
0
  return nullptr;
778
0
}
779
780
static void start_transaction_noop(PSI_transaction_locker *, const char *,
781
0
                                   uint) {}
782
783
static void set_transaction_xid_noop(PSI_transaction_locker *, const void *,
784
0
                                     int) {}
785
786
0
static void set_transaction_xa_state_noop(PSI_transaction_locker *, int) {}
787
788
static void set_transaction_gtid_noop(PSI_transaction_locker *, const void *,
789
0
                                      const void *) {}
790
791
static void set_transaction_trxid_noop(PSI_transaction_locker *,
792
0
                                       const ulonglong *) {}
793
794
0
static void inc_transaction_savepoints_noop(PSI_transaction_locker *, ulong) {}
795
796
static void inc_transaction_rollback_to_savepoint_noop(PSI_transaction_locker *,
797
0
                                                       ulong) {}
798
799
static void inc_transaction_release_savepoint_noop(PSI_transaction_locker *,
800
0
                                                   ulong) {}
801
802
0
static void end_transaction_noop(PSI_transaction_locker *, bool) {}
803
804
static PSI_transaction_service_t psi_transaction_noop = {
805
    get_thread_transaction_locker_noop,
806
    start_transaction_noop,
807
    set_transaction_xid_noop,
808
    set_transaction_xa_state_noop,
809
    set_transaction_gtid_noop,
810
    set_transaction_trxid_noop,
811
    inc_transaction_savepoints_noop,
812
    inc_transaction_rollback_to_savepoint_noop,
813
    inc_transaction_release_savepoint_noop,
814
    end_transaction_noop};
815
816
struct PSI_transaction_bootstrap *psi_transaction_hook = nullptr;
817
PSI_transaction_service_t *psi_transaction_service = &psi_transaction_noop;
818
819
0
void set_psi_transaction_service(void *psi) {
820
0
  psi_transaction_service = (PSI_transaction_service_t *)psi;
821
0
}
822
823
// ===========================================================================
824
825
0
static void log_error_noop(unsigned int, PSI_error_operation) {}
826
827
static PSI_error_service_t psi_error_noop = {log_error_noop};
828
829
struct PSI_error_bootstrap *psi_error_hook = nullptr;
830
PSI_error_service_t *psi_error_service = &psi_error_noop;
831
832
0
void set_psi_error_service(void *psi) {
833
0
  psi_error_service = (PSI_error_service_t *)psi;
834
0
}
835
836
// ===========================================================================
837
838
0
static void register_memory_noop(const char *, PSI_memory_info *, int) {}
839
840
static PSI_memory_key memory_alloc_noop(PSI_memory_key, size_t,
841
75.6k
                                        struct PSI_thread **owner) {
842
75.6k
  *owner = nullptr;
843
75.6k
  return PSI_NOT_INSTRUMENTED;
844
75.6k
}
845
846
static PSI_memory_key memory_realloc_noop(PSI_memory_key, size_t, size_t,
847
0
                                          struct PSI_thread **owner) {
848
0
  *owner = nullptr;
849
0
  return PSI_NOT_INSTRUMENTED;
850
0
}
851
852
static PSI_memory_key memory_claim_noop(PSI_memory_key, size_t,
853
0
                                        struct PSI_thread **owner, bool) {
854
0
  *owner = nullptr;
855
0
  return PSI_NOT_INSTRUMENTED;
856
0
}
857
858
75.6k
static void memory_free_noop(PSI_memory_key, size_t, struct PSI_thread *) {}
859
860
static PSI_memory_service_t psi_memory_noop = {
861
    register_memory_noop, memory_alloc_noop, memory_realloc_noop,
862
    memory_claim_noop, memory_free_noop};
863
864
struct PSI_memory_bootstrap *psi_memory_hook = nullptr;
865
PSI_memory_service_t *psi_memory_service = &psi_memory_noop;
866
867
0
void set_psi_memory_service(void *psi) {
868
0
  psi_memory_service = (PSI_memory_service_t *)psi;
869
0
}
870
871
// ===========================================================================
872
873
0
static void register_data_lock_noop(PSI_engine_data_lock_inspector *) {}
874
875
0
static void unregister_data_lock_noop(PSI_engine_data_lock_inspector *) {}
876
877
static PSI_data_lock_service_t psi_data_lock_noop = {register_data_lock_noop,
878
                                                     unregister_data_lock_noop};
879
880
struct PSI_data_lock_bootstrap *psi_data_lock_hook = nullptr;
881
PSI_data_lock_service_t *psi_data_lock_service = &psi_data_lock_noop;
882
883
0
void set_psi_data_lock_service(void *psi) {
884
0
  psi_data_lock_service = (PSI_data_lock_service_t *)psi;
885
0
}
886
887
// ===========================================================================
888
889
0
static void unload_plugin_noop(const char *) {}
890
891
static PSI_system_service_t psi_system_noop = {unload_plugin_noop};
892
893
struct PSI_system_bootstrap *psi_system_hook = nullptr;
894
PSI_system_service_t *psi_system_service = &psi_system_noop;
895
896
0
void set_psi_system_service(void *psi) {
897
0
  psi_system_service = (PSI_system_service_t *)psi;
898
0
}
899
900
// ===========================================================================
901
902
0
static void register_tls_channel_noop(TLS_channel_property_iterator *) {}
903
904
0
static void unregister_tls_channel_noop(TLS_channel_property_iterator *) {}
905
static PSI_tls_channel_service_t psi_tls_channel_noop = {
906
    register_tls_channel_noop, unregister_tls_channel_noop};
907
908
struct PSI_tls_channel_bootstrap *psi_tls_channel_hook = nullptr;
909
PSI_tls_channel_service_t *psi_tls_channel_service = &psi_tls_channel_noop;
910
911
0
void set_psi_tls_channel_service(void *psi) {
912
0
  psi_tls_channel_service = (PSI_tls_channel_service_t *)psi;
913
0
}
914
915
// ===========================================================================
916
917
0
static void register_meters_noop(PSI_meter_info_v1 *, size_t) {}
918
919
0
static void unregister_meters_noop(PSI_meter_info_v1 *, size_t) {}
920
921
0
static void register_change_notification_noop(meter_registration_changes_v1_t) {
922
0
}
923
924
static void unregister_change_notification_noop(
925
0
    meter_registration_changes_v1_t) {}
926
927
0
static void send_change_notification_noop(const char *, MeterNotifyType) {}
928
929
static PSI_metric_service_t psi_metric_noop = {
930
    register_meters_noop, unregister_meters_noop,
931
    register_change_notification_noop, unregister_change_notification_noop,
932
    send_change_notification_noop};
933
934
struct PSI_metric_bootstrap *psi_metric_hook = nullptr;
935
PSI_metric_service_t *psi_metric_service = &psi_metric_noop;
936
937
0
void set_psi_metric_service(void *psi) {
938
0
  psi_metric_service = (PSI_metric_service_t *)psi;
939
0
}
940
941
// ===========================================================================
942
943
static void register_logger_client_noop(PSI_logger_info_v1 *, size_t,
944
0
                                        const char *) {}
945
946
0
static void unregister_logger_client_noop(PSI_logger_info_v1 *, size_t) {}
947
948
0
static PSI_logger *check_enabled_noop(PSI_logger_key, OTELLogLevel) {
949
0
  return nullptr;
950
0
}
951
952
static void log_emit_noop(PSI_logger *, OTELLogLevel, const char *, time_t,
953
0
                          const log_attribute_t *, size_t) {}
954
955
static PSI_logs_client_service_t psi_logs_client_noop = {
956
    register_logger_client_noop, unregister_logger_client_noop,
957
    check_enabled_noop, log_emit_noop};
958
959
struct PSI_logs_client_bootstrap *psi_logs_client_hook = nullptr;
960
PSI_logs_client_service_t *psi_logs_client_service = &psi_logs_client_noop;
961
962
0
void set_psi_logs_client_service(void *psi) {
963
0
  psi_logs_client_service = (PSI_logs_client_service_t *)psi;
964
0
}
965
966
// ===========================================================================