MySQL 9.7.0
Source Code Documentation
psi_statement_bits.h
Go to the documentation of this file.
1/* Copyright (c) 2008, 2026, 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 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License, version 2.0, for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software
22 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
23
24#ifndef COMPONENTS_SERVICES_BITS_PSI_STATEMENT_BITS_H
25#define COMPONENTS_SERVICES_BITS_PSI_STATEMENT_BITS_H
26
27#ifndef MYSQL_ABI_CHECK
28#include <stddef.h> /* size_t */
29#include <stdint.h> /* uint64_t */
30#endif
31
33
34/**
35 @file mysql/components/services/bits/psi_statement_bits.h
36 Performance schema instrumentation interface.
37
38 @defgroup psi_abi_statement Statement Instrumentation (ABI)
39 @ingroup psi_abi
40 @{
41*/
42
43/**
44 Instrumented statement key.
45 To instrument a statement, a statement key must be obtained using @c
46 register_statement.
47 Using a zero key always disable the instrumentation.
48*/
49typedef unsigned int PSI_statement_key;
50
51/**
52 @def PSI_STATEMENT_VERSION_1
53 Performance Schema Statement Interface number for version 1.
54 This version is obsolete.
55*/
56#define PSI_STATEMENT_VERSION_1 1
57
58/**
59 @def PSI_STATEMENT_VERSION_2
60 Performance Schema Statement Interface number for version 2.
61 This version is obsolete.
62*/
63#define PSI_STATEMENT_VERSION_2 2
64
65/**
66 @def PSI_STATEMENT_VERSION_3
67 Performance Schema Statement Interface number for version 3.
68 This version is obsolete.
69*/
70#define PSI_STATEMENT_VERSION_3 3
71
72/**
73 @def PSI_STATEMENT_VERSION_4
74 Performance Schema Statement Interface number for version 4.
75 This version is obsolete.
76*/
77#define PSI_STATEMENT_VERSION_4 4
78
79/**
80 @def PSI_STATEMENT_VERSION_5
81 Performance Schema Statement Interface number for version 5.
82 This version is obsolete.
83*/
84#define PSI_STATEMENT_VERSION_5 5
85
86/**
87 @def PSI_STATEMENT_VERSION_6
88 Performance Schema Statement Interface number for version 6.
89 This version is supported.
90*/
91#define PSI_STATEMENT_VERSION_6 6
92
93/**
94 @def PSI_CURRENT_STATEMENT_VERSION
95 Performance Schema Statement Interface number for the most recent version.
96 The most current version is @c PSI_STATEMENT_VERSION_6
97*/
98#define PSI_CURRENT_STATEMENT_VERSION 6
99
100/**
101 Interface for an instrumented statement.
102 This is an opaque structure.
103*/
106
107/**
108 Interface for an instrumented prepared statement.
109 This is an opaque structure.
110*/
111struct PSI_prepared_stmt;
113
114/**
115 Interface for an instrumented statement digest operation.
116 This is an opaque structure.
117*/
118struct PSI_digest_locker;
120
121/**
122 Interface for an instrumented stored procedure share.
123 This is an opaque structure.
124*/
125struct PSI_sp_share;
127
128/**
129 Interface for an instrumented stored program.
130 This is an opaque structure.
131*/
132struct PSI_sp_locker;
134
135/**
136 Statement instrument information.
137 @since PSI_STATEMENT_VERSION_1
138 This structure is used to register an instrumented statement.
139*/
141 /** The registered statement key. */
143 /** The name of the statement instrument to register. */
144 const char *m_name;
145 /**
146 The flags of the statement instrument to register.
147 @sa PSI_FLAG_MUTABLE
148 */
149 unsigned int m_flags;
150 /** Documentation. */
151 const char *m_documentation;
152};
154
155/* Duplicate of NAME_LEN, to avoid dependency on mysql_com.h */
156#define PSI_SCHEMA_NAME_LEN (64 * 3)
157
158/* Opaque. */
159struct telemetry_session_t;
160
161/* Opaque. */
162struct telemetry_locker_t;
163
164/**
165 State data storage for @c get_thread_statement_locker_v5_t.
166 This structure provide temporary storage to a statement locker.
167 The content of this structure is considered opaque,
168 the fields are only hints of what an implementation
169 of the psi interface can use.
170 This memory is provided by the instrumented code for performance reasons.
171 @sa get_thread_statement_locker_v5_t
172*/
174 /** In prepare flag. */
176 /** Using secondary engine. */
178 /** Metric, no index used flag. */
179 unsigned char m_no_index_used;
180 /** Metric, no good index used flag. */
181 unsigned char m_no_good_index_used;
182 /** Internal state. */
183 unsigned int m_collect_flags;
184 /** Internal PFS flags. */
185 unsigned int m_pfs_flags;
186 /** Internal telemetry flags. */
187 unsigned int m_tel_flags;
188 /** Instrumentation class. */
189 void *m_class;
190 /** Current thread. */
192 /** Timer start. */
193 unsigned long long m_timer_start;
194 /** THREAD CPU time start. */
195 unsigned long long m_cpu_time_start;
196 /** State temporary data for CONTROLLED_MEMORY. */
198 /** State temporary data for MAX_CONTROLLED_MEMORY. */
200 /** State temporary data for TOTAL_MEMORY. */
202 /** State temporary data for MAX_TOTAL_MEMORY. */
204 /** Internal data. */
206 /** Locked time. */
207 unsigned long long m_lock_time;
208 /** Rows sent. */
209 unsigned long long m_rows_sent;
210 /** Rows examined. */
211 unsigned long long m_rows_examined;
212 /** Metric, temporary tables created on disk. */
214 /** Metric, temporary tables created. */
215 unsigned long m_created_tmp_tables;
216 /** Metric, number of select full join. */
217 unsigned long m_select_full_join;
218 /** Metric, number of select full range join. */
220 /** Metric, number of select range. */
221 unsigned long m_select_range;
222 /** Metric, number of select range check. */
223 unsigned long m_select_range_check;
224 /** Metric, number of select scan. */
225 unsigned long m_select_scan;
226 /** Metric, number of sort merge passes. */
227 unsigned long m_sort_merge_passes;
228 /** Metric, number of sort merge. */
229 unsigned long m_sort_range;
230 /** Metric, number of sort rows. */
231 unsigned long m_sort_rows;
232 /** Metric, number of sort scans. */
233 unsigned long m_sort_scan;
234 /** Statement digest. */
236 /** Current schema name. */
238 /** Length in bytes of @c m_schema_name. */
240 /** Statement character set number. */
241 unsigned int m_cs_number;
242 /** Statement query sample. */
243 const char *m_query_sample;
244 /** Length in bytes of @c m_query_sample. */
246 /** True if @c m_query_sample was truncated. */
248
251
252 /** Telemetry can force instruments creation regardless if
253 * the respective consumer is enabled or not through configuration. */
255
257 telemetry_session_t *m_telemetry_session;
258 telemetry_locker_t *m_telemetry_locker;
259};
261
263 /** Internal state. */
264 unsigned int m_flags;
265 /** Current thread. */
267 /** Timer start. */
268 unsigned long long m_timer_start;
269 /** Timer function. */
270 unsigned long long (*m_timer)(void);
271 /** Stored Procedure share. */
273};
275
276/**
277 Statement registration API.
278 @param category a category name
279 @param info an array of statement info to register
280 @param count the size of the info array
281*/
282typedef void (*register_statement_v1_t)(const char *category,
283 struct PSI_statement_info_v1 *info,
284 int count);
285
286/**
287 Get a statement instrumentation locker.
288 @param state data storage for the locker
289 @param key the statement instrumentation key
290 @param charset client character set
291 @param sp_share Parent stored procedure share, if any.
292 @return a statement locker, or NULL
293*/
294typedef struct PSI_statement_locker *(*get_thread_statement_locker_v5_t)(
296 const void *charset, PSI_sp_share *sp_share);
297
298/**
299 Refine a statement locker to a more specific key.
300 Note that only events declared mutable can be refined.
301 @param locker the statement locker for the current event
302 @param key the new key for the event
303 @sa PSI_FLAG_MUTABLE
304*/
305typedef struct PSI_statement_locker *(*refine_statement_v1_t)(
307
308/**
309 Start a new statement event.
310 @param locker the statement locker for this event
311 @param db the active database name for this statement
312 @param db_length the active database name length for this statement
313 @param src_file source file name
314 @param src_line source line number
315*/
316typedef void (*start_statement_v1_t)(struct PSI_statement_locker *locker,
317 const char *db, unsigned int db_length,
318 const char *src_file,
319 unsigned int src_line);
320
321/**
322 Set the statement text for a statement event.
323 Note that the statement text pointer must remain valid until end statement
324 is called.
325 @param locker the current statement locker
326 @param text the statement text
327 @param text_len the statement text length
328*/
329typedef void (*set_statement_text_v1_t)(struct PSI_statement_locker *locker,
330 const char *text,
331 unsigned int text_len);
332
333/**
334 Set a statement query id.
335 Introduced in MySQL 8.0.14
336 @param locker the statement locker
337 @param query_id the query id
338*/
339typedef void (*set_statement_query_id_t)(struct PSI_statement_locker *locker,
340 unsigned long long query_id);
341
342/**
343 Set a statement event lock time.
344 @param locker the statement locker
345 @param lock_time the locked time, in microseconds
346*/
347typedef void (*set_statement_lock_time_t)(struct PSI_statement_locker *locker,
348 unsigned long long lock_time);
349
350/**
351 Set a statement event rows sent metric.
352 @param locker the statement locker
353 @param count the number of rows sent
354*/
355typedef void (*set_statement_rows_sent_t)(struct PSI_statement_locker *locker,
356 unsigned long long count);
357
358/**
359 Set a statement event rows examined metric.
360 @param locker the statement locker
361 @param count the number of rows examined
362*/
364 struct PSI_statement_locker *locker, unsigned long long count);
365
366/**
367 Increment a statement event "created tmp disk tables" metric.
368 @param locker the statement locker
369 @param count the metric increment value
370*/
372 struct PSI_statement_locker *locker, unsigned long count);
373
374/**
375 Increment a statement event "created tmp tables" metric.
376 @param locker the statement locker
377 @param count the metric increment value
378*/
380 struct PSI_statement_locker *locker, unsigned long count);
381
382/**
383 Increment a statement event "select full join" metric.
384 @param locker the statement locker
385 @param count the metric increment value
386*/
388 struct PSI_statement_locker *locker, unsigned long count);
389
390/**
391 Increment a statement event "select full range join" metric.
392 @param locker the statement locker
393 @param count the metric increment value
394*/
396 struct PSI_statement_locker *locker, unsigned long count);
397
398/**
399 Increment a statement event "select range join" metric.
400 @param locker the statement locker
401 @param count the metric increment value
402*/
404 struct PSI_statement_locker *locker, unsigned long count);
405
406/**
407 Increment a statement event "select range check" metric.
408 @param locker the statement locker
409 @param count the metric increment value
410*/
412 struct PSI_statement_locker *locker, unsigned long count);
413
414/**
415 Increment a statement event "select scan" metric.
416 @param locker the statement locker
417 @param count the metric increment value
418*/
420 unsigned long count);
421
422/**
423 Increment a statement event "sort merge passes" metric.
424 @param locker the statement locker
425 @param count the metric increment value
426*/
428 struct PSI_statement_locker *locker, unsigned long count);
429
430/**
431 Increment a statement event "sort range" metric.
432 @param locker the statement locker
433 @param count the metric increment value
434*/
436 unsigned long count);
437
438/**
439 Increment a statement event "sort rows" metric.
440 @param locker the statement locker
441 @param count the metric increment value
442*/
443typedef void (*inc_statement_sort_rows_t)(struct PSI_statement_locker *locker,
444 unsigned long count);
445
446/**
447 Increment a statement event "sort scan" metric.
448 @param locker the statement locker
449 @param count the metric increment value
450*/
451typedef void (*inc_statement_sort_scan_t)(struct PSI_statement_locker *locker,
452 unsigned long count);
453
454/**
455 Set a statement event "no index used" metric.
456 @param locker the statement locker
457*/
459 struct PSI_statement_locker *locker);
460
461/**
462 Set a statement event "no good index used" metric.
463 @param locker the statement locker
464*/
466 struct PSI_statement_locker *locker);
467
468/**
469 Set a statement EXECUTION_ENGINE attribute.
470 @param locker the statement locker
471 @param secondary True for SECONDARY, false for PRIMARY.
472*/
474 struct PSI_statement_locker *locker, bool secondary);
475
476/**
477 End a statement event.
478 @param locker the statement locker
479 @param stmt_da the statement diagnostics area.
480 @sa Diagnostics_area
481*/
482typedef void (*end_statement_v1_t)(struct PSI_statement_locker *locker,
483 void *stmt_da);
484
485/**
486 Get a prepare statement.
487 @param identity Prepared statement identity, typically a memory address.
488 @param stmt_id Prepared statement identifier.
489 @param locker A statement locker for the running thread.
490 @param stmt_name Prepared statement name.
491 @param stmt_name_length Prepared statement name length.
492 @param sql_text Query text.
493 @param sql_text_length Query text length.
494*/
495typedef PSI_prepared_stmt *(*create_prepared_stmt_v1_t)(
496 void *identity, unsigned int stmt_id, PSI_statement_locker *locker,
497 const char *stmt_name, size_t stmt_name_length, const char *sql_text,
498 size_t sql_text_length);
499
500/**
501 destroy a prepare statement.
502 @param prepared_stmt prepared statement.
503*/
504typedef void (*destroy_prepared_stmt_v1_t)(PSI_prepared_stmt *prepared_stmt);
505
506/**
507 reprepare a prepare statement.
508 @param prepared_stmt prepared statement.
509*/
510typedef void (*reprepare_prepared_stmt_v1_t)(PSI_prepared_stmt *prepared_stmt);
511
512/**
513 Record a prepare statement instrumentation execute event.
514 @param locker a statement locker for the running thread.
515 @param prepared_stmt prepared statement.
516*/
518 PSI_prepared_stmt *prepared_stmt);
519
520/**
521 Set the statement text for a prepared statement event.
522 @param prepared_stmt prepared statement.
523 @param text the prepared statement text
524 @param text_len the prepared statement text length
525*/
526typedef void (*set_prepared_stmt_text_v1_t)(PSI_prepared_stmt *prepared_stmt,
527 const char *text,
528 unsigned int text_len);
529
530/**
531 Set a prepared statement EXECUTION_ENGINE attribute.
532 @param prepared_stmt prepared statement.
533 @param secondary True for SECONDARY, false for PRIMARY.
534*/
536 PSI_prepared_stmt *prepared_stmt, bool secondary);
537
538/**
539 Get a digest locker for the current statement.
540 @param locker a statement locker for the running thread
541*/
542typedef struct PSI_digest_locker *(*digest_start_v1_t)(
543 struct PSI_statement_locker *locker);
544
545/**
546 Add a computed digest to the current digest instrumentation.
547 @param locker a digest locker for the current statement
548 @param digest the computed digest
549*/
550typedef void (*digest_end_v1_t)(struct PSI_digest_locker *locker,
551 const struct sql_digest_storage *digest);
552
553/**
554 Set a digest for the current statement.
555 @param locker a statement locker for the running thread
556 @param digest the computed digest
557 This API is used to set a complete digest directly.
558 This is useful for prepared statements, where the digest is
559 computed up front and already available.
560*/
561typedef void (*digest_set_v6_t)(struct PSI_statement_locker *locker,
562 const struct sql_digest_storage *digest);
563
564/**
565 Acquire a sp share instrumentation.
566 @param object_type type of stored program
567 @param schema_name schema name of stored program
568 @param schema_name_length length of schema_name
569 @param object_name object name of stored program
570 @param object_name_length length of object_name
571 @return a stored program share instrumentation, or NULL
572*/
573typedef struct PSI_sp_share *(*get_sp_share_v1_t)(
574 unsigned int object_type, const char *schema_name,
575 unsigned int schema_name_length, const char *object_name,
576 unsigned int object_name_length);
577
578/**
579 Release a stored program share.
580 @param share the stored program share to release
581*/
582typedef void (*release_sp_share_v1_t)(struct PSI_sp_share *share);
583
584typedef PSI_sp_locker *(*start_sp_v1_t)(struct PSI_sp_locker_state_v1 *state,
585 struct PSI_sp_share *sp_share);
586
587typedef void (*end_sp_v1_t)(struct PSI_sp_locker *locker);
588
589typedef void (*drop_sp_v1_t)(unsigned int object_type, const char *schema_name,
590 unsigned int schema_name_length,
591 const char *object_name,
592 unsigned int object_name_length);
593
597
599 struct PSI_statement_locker *locker, bool with_query_attributes);
600
602
603/** @} (end of group psi_abi_statement) */
604
605#endif /* COMPONENTS_SERVICES_BITS_PSI_STATEMENT_BITS_H */
struct PSI_digest_locker PSI_digest_locker
Definition: psi_statement_bits.h:119
unsigned int PSI_statement_key
Instrumented statement key.
Definition: psi_statement_bits.h:49
void(* destroy_prepared_stmt_v1_t)(PSI_prepared_stmt *prepared_stmt)
destroy a prepare statement.
Definition: psi_statement_bits.h:504
void(* inc_statement_sort_merge_passes_t)(struct PSI_statement_locker *locker, unsigned long count)
Increment a statement event "sort merge passes" metric.
Definition: psi_statement_bits.h:427
void(* inc_statement_sort_rows_t)(struct PSI_statement_locker *locker, unsigned long count)
Increment a statement event "sort rows" metric.
Definition: psi_statement_bits.h:443
void(* inc_statement_select_full_range_join_t)(struct PSI_statement_locker *locker, unsigned long count)
Increment a statement event "select full range join" metric.
Definition: psi_statement_bits.h:395
void(* set_statement_text_v1_t)(struct PSI_statement_locker *locker, const char *text, unsigned int text_len)
Set the statement text for a statement event.
Definition: psi_statement_bits.h:329
void(* inc_statement_select_range_check_t)(struct PSI_statement_locker *locker, unsigned long count)
Increment a statement event "select range check" metric.
Definition: psi_statement_bits.h:411
void(* inc_statement_select_scan_t)(struct PSI_statement_locker *locker, unsigned long count)
Increment a statement event "select scan" metric.
Definition: psi_statement_bits.h:419
void(* set_prepared_stmt_secondary_engine_v3_t)(PSI_prepared_stmt *prepared_stmt, bool secondary)
Set a prepared statement EXECUTION_ENGINE attribute.
Definition: psi_statement_bits.h:535
void(* register_statement_v1_t)(const char *category, struct PSI_statement_info_v1 *info, int count)
Statement registration API.
Definition: psi_statement_bits.h:282
void(* reprepare_prepared_stmt_v1_t)(PSI_prepared_stmt *prepared_stmt)
reprepare a prepare statement.
Definition: psi_statement_bits.h:510
void(* statement_abort_telemetry_v5_t)(PSI_statement_locker *locker)
Definition: psi_statement_bits.h:601
void(* inc_statement_sort_scan_t)(struct PSI_statement_locker *locker, unsigned long count)
Increment a statement event "sort scan" metric.
Definition: psi_statement_bits.h:451
void(* execute_prepared_stmt_v1_t)(PSI_statement_locker *locker, PSI_prepared_stmt *prepared_stmt)
Record a prepare statement instrumentation execute event.
Definition: psi_statement_bits.h:517
void(* set_statement_no_index_used_t)(struct PSI_statement_locker *locker)
Set a statement event "no index used" metric.
Definition: psi_statement_bits.h:458
struct PSI_prepared_stmt PSI_prepared_stmt
Definition: psi_statement_bits.h:112
void(* inc_statement_sort_range_t)(struct PSI_statement_locker *locker, unsigned long count)
Increment a statement event "sort range" metric.
Definition: psi_statement_bits.h:435
void(* start_statement_v1_t)(struct PSI_statement_locker *locker, const char *db, unsigned int db_length, const char *src_file, unsigned int src_line)
Start a new statement event.
Definition: psi_statement_bits.h:316
struct PSI_sp_locker PSI_sp_locker
Definition: psi_statement_bits.h:133
void(* release_sp_share_v1_t)(struct PSI_sp_share *share)
Release a stored program share.
Definition: psi_statement_bits.h:582
void(* set_statement_query_id_t)(struct PSI_statement_locker *locker, unsigned long long query_id)
Set a statement query id.
Definition: psi_statement_bits.h:339
void(* set_statement_secondary_engine_v3_t)(struct PSI_statement_locker *locker, bool secondary)
Set a statement EXECUTION_ENGINE attribute.
Definition: psi_statement_bits.h:473
void(* drop_sp_v1_t)(unsigned int object_type, const char *schema_name, unsigned int schema_name_length, const char *object_name, unsigned int object_name_length)
Definition: psi_statement_bits.h:589
void(* set_statement_rows_examined_t)(struct PSI_statement_locker *locker, unsigned long long count)
Set a statement event rows examined metric.
Definition: psi_statement_bits.h:363
void(* digest_set_v6_t)(struct PSI_statement_locker *locker, const struct sql_digest_storage *digest)
Set a digest for the current statement.
Definition: psi_statement_bits.h:561
void(* set_statement_no_good_index_used_t)(struct PSI_statement_locker *locker)
Set a statement event "no good index used" metric.
Definition: psi_statement_bits.h:465
#define PSI_SCHEMA_NAME_LEN
Definition: psi_statement_bits.h:156
struct PSI_sp_share PSI_sp_share
Definition: psi_statement_bits.h:126
void(* digest_end_v1_t)(struct PSI_digest_locker *locker, const struct sql_digest_storage *digest)
Add a computed digest to the current digest instrumentation.
Definition: psi_statement_bits.h:550
void(* inc_statement_select_range_t)(struct PSI_statement_locker *locker, unsigned long count)
Increment a statement event "select range join" metric.
Definition: psi_statement_bits.h:403
void(* set_prepared_stmt_text_v1_t)(PSI_prepared_stmt *prepared_stmt, const char *text, unsigned int text_len)
Set the statement text for a prepared statement event.
Definition: psi_statement_bits.h:526
void(* end_sp_v1_t)(struct PSI_sp_locker *locker)
Definition: psi_statement_bits.h:587
void(* inc_statement_select_full_join_t)(struct PSI_statement_locker *locker, unsigned long count)
Increment a statement event "select full join" metric.
Definition: psi_statement_bits.h:387
void(* end_statement_v1_t)(struct PSI_statement_locker *locker, void *stmt_da)
End a statement event.
Definition: psi_statement_bits.h:482
void(* set_statement_lock_time_t)(struct PSI_statement_locker *locker, unsigned long long lock_time)
Set a statement event lock time.
Definition: psi_statement_bits.h:347
void(* set_statement_rows_sent_t)(struct PSI_statement_locker *locker, unsigned long long count)
Set a statement event rows sent metric.
Definition: psi_statement_bits.h:355
void(* notify_statement_query_attributes_v5_t)(struct PSI_statement_locker *locker, bool with_query_attributes)
Definition: psi_statement_bits.h:598
struct PSI_statement_locker PSI_statement_locker
Definition: psi_statement_bits.h:105
void(* inc_statement_created_tmp_disk_tables_t)(struct PSI_statement_locker *locker, unsigned long count)
Increment a statement event "created tmp disk tables" metric.
Definition: psi_statement_bits.h:371
void(* inc_statement_created_tmp_tables_t)(struct PSI_statement_locker *locker, unsigned long count)
Increment a statement event "created tmp tables" metric.
Definition: psi_statement_bits.h:379
struct PSI_thread PSI_thread
Definition: psi_thread_bits.h:82
static int count
Definition: myisam_ftdump.cc:45
static PFS_engine_table_share_proxy share
Definition: connection_control_pfs_table.cc:92
const std::string charset("charset")
static const char * category
Definition: sha2_password.cc:190
Performance schema instrumentation interface.
required string key
Definition: replication_asynchronous_connection_failover.proto:60
Definition: psi_statement_bits.h:262
unsigned long long m_timer_start
Timer start.
Definition: psi_statement_bits.h:268
PSI_sp_share * m_sp_share
Stored Procedure share.
Definition: psi_statement_bits.h:272
unsigned long long(* m_timer)(void)
Timer function.
Definition: psi_statement_bits.h:270
unsigned int m_flags
Internal state.
Definition: psi_statement_bits.h:264
struct PSI_thread * m_thread
Current thread.
Definition: psi_statement_bits.h:266
Statement instrument information.
Definition: psi_statement_bits.h:140
const char * m_name
The name of the statement instrument to register.
Definition: psi_statement_bits.h:144
PSI_statement_key m_key
The registered statement key.
Definition: psi_statement_bits.h:142
const char * m_documentation
Documentation.
Definition: psi_statement_bits.h:151
unsigned int m_flags
The flags of the statement instrument to register.
Definition: psi_statement_bits.h:149
State data storage for get_thread_statement_locker_v5_t.
Definition: psi_statement_bits.h:173
unsigned long m_select_full_range_join
Metric, number of select full range join.
Definition: psi_statement_bits.h:219
unsigned long long m_timer_start
Timer start.
Definition: psi_statement_bits.h:193
unsigned char m_no_good_index_used
Metric, no good index used flag.
Definition: psi_statement_bits.h:181
unsigned int m_collect_flags
Internal state.
Definition: psi_statement_bits.h:183
unsigned int m_pfs_flags
Internal PFS flags.
Definition: psi_statement_bits.h:185
unsigned int m_schema_name_length
Length in bytes of m_schema_name.
Definition: psi_statement_bits.h:239
bool m_query_sample_truncated
True if m_query_sample was truncated.
Definition: psi_statement_bits.h:247
size_t m_controlled_stmt_size_start
State temporary data for MAX_CONTROLLED_MEMORY.
Definition: psi_statement_bits.h:199
unsigned long long m_rows_sent
Rows sent.
Definition: psi_statement_bits.h:209
size_t m_controlled_local_size_start
State temporary data for CONTROLLED_MEMORY.
Definition: psi_statement_bits.h:197
unsigned int m_cs_number
Statement character set number.
Definition: psi_statement_bits.h:241
void * m_statement
Internal data.
Definition: psi_statement_bits.h:205
unsigned long m_select_range
Metric, number of select range.
Definition: psi_statement_bits.h:221
unsigned long m_select_full_join
Metric, number of select full join.
Definition: psi_statement_bits.h:217
unsigned int m_tel_flags
Internal telemetry flags.
Definition: psi_statement_bits.h:187
size_t m_total_stmt_size_start
State temporary data for MAX_TOTAL_MEMORY.
Definition: psi_statement_bits.h:203
telemetry_locker_t * m_telemetry_locker
Definition: psi_statement_bits.h:258
unsigned long m_select_scan
Metric, number of select scan.
Definition: psi_statement_bits.h:225
uint64_t m_telemetry_scope
Telemetry can force instruments creation regardless if the respective consumer is enabled or not thro...
Definition: psi_statement_bits.h:254
char m_schema_name[PSI_SCHEMA_NAME_LEN]
Current schema name.
Definition: psi_statement_bits.h:237
unsigned char m_no_index_used
Metric, no index used flag.
Definition: psi_statement_bits.h:179
PSI_sp_share * m_parent_sp_share
Definition: psi_statement_bits.h:249
unsigned long m_created_tmp_disk_tables
Metric, temporary tables created on disk.
Definition: psi_statement_bits.h:213
size_t m_total_local_size_start
State temporary data for TOTAL_MEMORY.
Definition: psi_statement_bits.h:201
unsigned long m_sort_rows
Metric, number of sort rows.
Definition: psi_statement_bits.h:231
unsigned long m_created_tmp_tables
Metric, temporary tables created.
Definition: psi_statement_bits.h:215
bool m_in_prepare
In prepare flag.
Definition: psi_statement_bits.h:175
unsigned long long m_rows_examined
Rows examined.
Definition: psi_statement_bits.h:211
unsigned long m_sort_merge_passes
Metric, number of sort merge passes.
Definition: psi_statement_bits.h:227
const struct sql_digest_storage * m_digest
Statement digest.
Definition: psi_statement_bits.h:235
unsigned long long m_lock_time
Locked time.
Definition: psi_statement_bits.h:207
unsigned long m_sort_range
Metric, number of sort merge.
Definition: psi_statement_bits.h:229
bool m_secondary
Using secondary engine.
Definition: psi_statement_bits.h:177
const char * m_query_sample
Statement query sample.
Definition: psi_statement_bits.h:243
unsigned long m_select_range_check
Metric, number of select range check.
Definition: psi_statement_bits.h:223
PSI_prepared_stmt * m_parent_prepared_stmt
Definition: psi_statement_bits.h:250
void * m_telemetry
Definition: psi_statement_bits.h:256
unsigned long m_sort_scan
Metric, number of sort scans.
Definition: psi_statement_bits.h:233
telemetry_session_t * m_telemetry_session
Definition: psi_statement_bits.h:257
struct PSI_thread * m_thread
Current thread.
Definition: psi_statement_bits.h:191
unsigned long long m_cpu_time_start
THREAD CPU time start.
Definition: psi_statement_bits.h:195
unsigned int m_query_sample_length
Length in bytes of m_query_sample.
Definition: psi_statement_bits.h:245
void * m_class
Instrumentation class.
Definition: psi_statement_bits.h:189
Structure to store token count/array for a statement on which digest is to be calculated.
Definition: sql_digest.h:98