MySQL  8.0.17
Source Code Documentation
psi_statement_bits.h
Go to the documentation of this file.
1 /* Copyright (c) 2008, 2019, Oracle and/or its affiliates. All rights reserved.
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 also distributed 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 included with MySQL.
13 
14  This program is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  GNU General Public License, version 2.0, for more details.
18 
19  You should have received a copy of the GNU General Public License
20  along with this program; if not, write to the Free Software
21  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
22 
23 #ifndef COMPONENTS_SERVICES_PSI_STATEMENT_BITS_H
24 #define COMPONENTS_SERVICES_PSI_STATEMENT_BITS_H
25 
26 #ifndef MYSQL_ABI_CHECK
27 #include <stddef.h> /* size_t */
28 #endif
29 
30 /**
31  @file
32  Performance schema instrumentation interface.
33 
34  @defgroup psi_abi_statement Statement Instrumentation (ABI)
35  @ingroup psi_abi
36  @{
37 */
38 
39 /**
40  Instrumented statement key.
41  To instrument a statement, a statement key must be obtained using @c
42  register_statement.
43  Using a zero key always disable the instrumentation.
44 */
45 typedef unsigned int PSI_statement_key;
46 
47 /**
48  @def PSI_STATEMENT_VERSION_1
49  Performance Schema Statement Interface number for version 1.
50  This version is deprecated.
51 */
52 #define PSI_STATEMENT_VERSION_1 1
53 
54 /**
55  @def PSI_STATEMENT_VERSION_2
56  Performance Schema Statement Interface number for version 2.
57  This version is supported.
58 */
59 #define PSI_STATEMENT_VERSION_2 2
60 
61 /**
62  @def PSI_CURRENT_STATEMENT_VERSION
63  Performance Schema Statement Interface number for the most recent version.
64  The most current version is @c PSI_STATEMENT_VERSION_2
65 */
66 #define PSI_CURRENT_STATEMENT_VERSION 2
67 
68 /**
69  Interface for an instrumented statement.
70  This is an opaque structure.
71 */
74 
75 /**
76  Interface for an instrumented prepared statement.
77  This is an opaque structure.
78 */
79 struct PSI_prepared_stmt;
81 
82 /**
83  Interface for an instrumented statement digest operation.
84  This is an opaque structure.
85 */
86 struct PSI_digest_locker;
88 
89 /**
90  Interface for an instrumented stored procedure share.
91  This is an opaque structure.
92 */
93 struct PSI_sp_share;
94 typedef struct PSI_sp_share PSI_sp_share;
95 
96 /**
97  Interface for an instrumented stored program.
98  This is an opaque structure.
99 */
100 struct PSI_sp_locker;
102 
103 /**
104  Statement instrument information.
105  @since PSI_STATEMENT_VERSION_1
106  This structure is used to register an instrumented statement.
107 */
109  /** The registered statement key. */
111  /** The name of the statement instrument to register. */
112  const char *m_name;
113  /**
114  The flags of the statement instrument to register.
115  @sa PSI_FLAG_MUTABLE
116  */
117  unsigned int m_flags;
118  /** Documentation. */
119  const char *m_documentation;
120 };
122 
123 /* Duplicate of NAME_LEN, to avoid dependency on mysql_com.h */
124 #define PSI_SCHEMA_NAME_LEN (64 * 3)
125 
126 /**
127  State data storage for @c get_thread_statement_locker_v1_t,
128  @c get_thread_statement_locker_v1_t.
129  This structure provide temporary storage to a statement locker.
130  The content of this structure is considered opaque,
131  the fields are only hints of what an implementation
132  of the psi interface can use.
133  This memory is provided by the instrumented code for performance reasons.
134  @sa get_thread_statement_locker_v1_t
135 */
137  /** Discarded flag. */
139  /** In prepare flag. */
141  /** Metric, no index used flag. */
142  unsigned char m_no_index_used;
143  /** Metric, no good index used flag. */
144  unsigned char m_no_good_index_used;
145  /** Internal state. */
146  unsigned int m_flags;
147  /** Instrumentation class. */
148  void *m_class;
149  /** Current thread. */
151  /** Timer start. */
152  unsigned long long m_timer_start;
153  /** Timer function. */
154  unsigned long long (*m_timer)(void);
155  /** Internal data. */
156  void *m_statement;
157  /** Locked time. */
158  unsigned long long m_lock_time;
159  /** Rows sent. */
160  unsigned long long m_rows_sent;
161  /** Rows examined. */
162  unsigned long long m_rows_examined;
163  /** Metric, temporary tables created on disk. */
165  /** Metric, temporary tables created. */
166  unsigned long m_created_tmp_tables;
167  /** Metric, number of select full join. */
168  unsigned long m_select_full_join;
169  /** Metric, number of select full range join. */
171  /** Metric, number of select range. */
172  unsigned long m_select_range;
173  /** Metric, number of select range check. */
174  unsigned long m_select_range_check;
175  /** Metric, number of select scan. */
176  unsigned long m_select_scan;
177  /** Metric, number of sort merge passes. */
178  unsigned long m_sort_merge_passes;
179  /** Metric, number of sort merge. */
180  unsigned long m_sort_range;
181  /** Metric, number of sort rows. */
182  unsigned long m_sort_rows;
183  /** Metric, number of sort scans. */
184  unsigned long m_sort_scan;
185  /** Statement digest. */
187  /** Current schema name. */
189  /** Length in bytes of @c m_schema_name. */
190  unsigned int m_schema_name_length;
191  /** Statement character set number. */
192  unsigned int m_cs_number;
193  /** Statement query sample. */
194  const char *m_query_sample;
195  /** Length in bytes of @c m_query_sample. */
196  unsigned int m_query_sample_length;
197  /** True if @c m_query_sample was truncated. */
199 
202 };
204 
206  /** Internal state. */
207  unsigned int m_flags;
208  /** Current thread. */
210  /** Timer start. */
211  unsigned long long m_timer_start;
212  /** Timer function. */
213  unsigned long long (*m_timer)(void);
214  /** Stored Procedure share. */
216 };
218 
219 /**
220  Statement registration API.
221  @param category a category name
222  @param info an array of statement info to register
223  @param count the size of the info array
224 */
225 typedef void (*register_statement_v1_t)(const char *category,
226  struct PSI_statement_info_v1 *info,
227  int count);
228 
229 /**
230  Get a statement instrumentation locker.
231  @param state data storage for the locker
232  @param key the statement instrumentation key
233  @param charset client character set
234  @return a statement locker, or NULL
235 */
236 typedef struct PSI_statement_locker *(*get_thread_statement_locker_v1_t)(
238  const void *charset, PSI_sp_share *sp_share);
239 
240 /**
241  Refine a statement locker to a more specific key.
242  Note that only events declared mutable can be refined.
243  @param locker the statement locker for the current event
244  @param key the new key for the event
245  @sa PSI_FLAG_MUTABLE
246 */
247 typedef struct PSI_statement_locker *(*refine_statement_v1_t)(
248  struct PSI_statement_locker *locker, PSI_statement_key key);
249 
250 /**
251  Start a new statement event.
252  @param locker the statement locker for this event
253  @param db the active database name for this statement
254  @param db_length the active database name length for this statement
255  @param src_file source file name
256  @param src_line source line number
257 */
258 typedef void (*start_statement_v1_t)(struct PSI_statement_locker *locker,
259  const char *db, unsigned int db_length,
260  const char *src_file,
261  unsigned int src_line);
262 
263 /**
264  Set the statement text for a statement event.
265  Note that the statement text pointer must remain valid until end statement
266  is called.
267  @param locker the current statement locker
268  @param text the statement text
269  @param text_len the statement text length
270 */
271 typedef void (*set_statement_text_v1_t)(struct PSI_statement_locker *locker,
272  const char *text,
273  unsigned int text_len);
274 
275 /**
276  Set a statement query id.
277  Introduced in MySQL 8.0.14
278  @param locker the statement locker
279  @param query_id the query id
280 */
281 typedef void (*set_statement_query_id_t)(struct PSI_statement_locker *locker,
282  unsigned long long query_id);
283 
284 /**
285  Set a statement event lock time.
286  @param locker the statement locker
287  @param lock_time the locked time, in microseconds
288 */
289 typedef void (*set_statement_lock_time_t)(struct PSI_statement_locker *locker,
290  unsigned long long lock_time);
291 
292 /**
293  Set a statement event rows sent metric.
294  @param locker the statement locker
295  @param count the number of rows sent
296 */
297 typedef void (*set_statement_rows_sent_t)(struct PSI_statement_locker *locker,
298  unsigned long long count);
299 
300 /**
301  Set a statement event rows examined metric.
302  @param locker the statement locker
303  @param count the number of rows examined
304 */
306  struct PSI_statement_locker *locker, unsigned long long count);
307 
308 /**
309  Increment a statement event "created tmp disk tables" metric.
310  @param locker the statement locker
311  @param count the metric increment value
312 */
314  struct PSI_statement_locker *locker, unsigned long count);
315 
316 /**
317  Increment a statement event "created tmp tables" metric.
318  @param locker the statement locker
319  @param count the metric increment value
320 */
322  struct PSI_statement_locker *locker, unsigned long count);
323 
324 /**
325  Increment a statement event "select full join" metric.
326  @param locker the statement locker
327  @param count the metric increment value
328 */
330  struct PSI_statement_locker *locker, unsigned long count);
331 
332 /**
333  Increment a statement event "select full range join" metric.
334  @param locker the statement locker
335  @param count the metric increment value
336 */
338  struct PSI_statement_locker *locker, unsigned long count);
339 
340 /**
341  Increment a statement event "select range join" metric.
342  @param locker the statement locker
343  @param count the metric increment value
344 */
346  struct PSI_statement_locker *locker, unsigned long count);
347 
348 /**
349  Increment a statement event "select range check" metric.
350  @param locker the statement locker
351  @param count the metric increment value
352 */
354  struct PSI_statement_locker *locker, unsigned long count);
355 
356 /**
357  Increment a statement event "select scan" metric.
358  @param locker the statement locker
359  @param count the metric increment value
360 */
361 typedef void (*inc_statement_select_scan_t)(struct PSI_statement_locker *locker,
362  unsigned long count);
363 
364 /**
365  Increment a statement event "sort merge passes" metric.
366  @param locker the statement locker
367  @param count the metric increment value
368 */
370  struct PSI_statement_locker *locker, unsigned long count);
371 
372 /**
373  Increment a statement event "sort range" metric.
374  @param locker the statement locker
375  @param count the metric increment value
376 */
377 typedef void (*inc_statement_sort_range_t)(struct PSI_statement_locker *locker,
378  unsigned long count);
379 
380 /**
381  Increment a statement event "sort rows" metric.
382  @param locker the statement locker
383  @param count the metric increment value
384 */
385 typedef void (*inc_statement_sort_rows_t)(struct PSI_statement_locker *locker,
386  unsigned long count);
387 
388 /**
389  Increment a statement event "sort scan" metric.
390  @param locker the statement locker
391  @param count the metric increment value
392 */
393 typedef void (*inc_statement_sort_scan_t)(struct PSI_statement_locker *locker,
394  unsigned long count);
395 
396 /**
397  Set a statement event "no index used" metric.
398  @param locker the statement locker
399 */
401  struct PSI_statement_locker *locker);
402 
403 /**
404  Set a statement event "no good index used" metric.
405  @param locker the statement locker
406 */
408  struct PSI_statement_locker *locker);
409 
410 /**
411  End a statement event.
412  @param locker the statement locker
413  @param stmt_da the statement diagnostics area.
414  @sa Diagnostics_area
415 */
416 typedef void (*end_statement_v1_t)(struct PSI_statement_locker *locker,
417  void *stmt_da);
418 
419 /**
420  Get a prepare statement.
421  @param locker a statement locker for the running thread.
422 */
423 typedef PSI_prepared_stmt *(*create_prepared_stmt_v1_t)(
424  void *identity, unsigned int stmt_id, PSI_statement_locker *locker,
425  const char *stmt_name, size_t stmt_name_length, const char *name,
426  size_t length);
427 
428 /**
429  destroy a prepare statement.
430  @param prepared_stmt prepared statement.
431 */
432 typedef void (*destroy_prepared_stmt_v1_t)(PSI_prepared_stmt *prepared_stmt);
433 
434 /**
435  repreare a prepare statement.
436  @param prepared_stmt prepared statement.
437 */
438 typedef void (*reprepare_prepared_stmt_v1_t)(PSI_prepared_stmt *prepared_stmt);
439 
440 /**
441  Record a prepare statement instrumentation execute event.
442  @param locker a statement locker for the running thread.
443  @param prepared_stmt prepared statement.
444 */
446  PSI_prepared_stmt *prepared_stmt);
447 
448 /**
449  Set the statement text for a prepared statment event.
450  @param prepared_stmt prepared statement.
451  @param text the prepared statement text
452  @param text_len the prepared statement text length
453 */
454 typedef void (*set_prepared_stmt_text_v1_t)(PSI_prepared_stmt *prepared_stmt,
455  const char *text,
456  unsigned int text_len);
457 /**
458  Get a digest locker for the current statement.
459  @param locker a statement locker for the running thread
460 */
461 typedef struct PSI_digest_locker *(*digest_start_v1_t)(
462  struct PSI_statement_locker *locker);
463 
464 /**
465  Add a computed digest to the current digest instrumentation.
466  @param locker a digest locker for the current statement
467  @param digest the computed digest
468 */
469 typedef void (*digest_end_v1_t)(struct PSI_digest_locker *locker,
470  const struct sql_digest_storage *digest);
471 
472 /**
473  Acquire a sp share instrumentation.
474  @param object_type type of stored program
475  @param schema_name schema name of stored program
476  @param schema_name_length length of schema_name
477  @param object_name object name of stored program
478  @param object_name_length length of object_name
479  @return a stored program share instrumentation, or NULL
480 */
481 typedef struct PSI_sp_share *(*get_sp_share_v1_t)(
482  unsigned int object_type, const char *schema_name,
483  unsigned int schema_name_length, const char *object_name,
484  unsigned int object_name_length);
485 
486 /**
487  Release a stored program share.
488  @param share the stored program share to release
489 */
490 typedef void (*release_sp_share_v1_t)(struct PSI_sp_share *share);
491 
492 typedef PSI_sp_locker *(*start_sp_v1_t)(struct PSI_sp_locker_state_v1 *state,
493  struct PSI_sp_share *sp_share);
494 
495 typedef void (*end_sp_v1_t)(struct PSI_sp_locker *locker);
496 
497 typedef void (*drop_sp_v1_t)(unsigned int object_type, const char *schema_name,
498  unsigned int schema_name_length,
499  const char *object_name,
500  unsigned int object_name_length);
501 
505 
506 /** @} (end of group psi_abi_statement) */
507 
508 #endif /* COMPONENTS_SERVICES_PSI_STATEMENT_BITS_H */
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:271
PSI_statement_key m_key
The registered statement key.
Definition: psi_statement_bits.h:110
unsigned int m_flags
Internal state.
Definition: psi_statement_bits.h:207
unsigned char m_no_good_index_used
Metric, no good index used flag.
Definition: psi_statement_bits.h:144
struct PSI_thread * m_thread
Current thread.
Definition: psi_statement_bits.h:209
unsigned long long(* m_timer)(void)
Timer function.
Definition: psi_statement_bits.h:154
ssize_t count
Definition: memcached.c:386
const string name("\ame\)
unsigned int m_query_sample_length
Length in bytes of m_query_sample.
Definition: psi_statement_bits.h:196
unsigned int m_flags
Internal state.
Definition: psi_statement_bits.h:146
void(* end_statement_v1_t)(struct PSI_statement_locker *locker, void *stmt_da)
End a statement event.
Definition: psi_statement_bits.h:416
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:385
const char * m_documentation
Documentation.
Definition: psi_statement_bits.h:119
void * m_statement
Internal data.
Definition: psi_statement_bits.h:156
State data storage for get_thread_statement_locker_v1_t, get_thread_statement_locker_v1_t.
Definition: psi_statement_bits.h:136
PSI_sp_share * m_sp_share
Stored Procedure share.
Definition: psi_statement_bits.h:215
unsigned long m_select_full_range_join
Metric, number of select full range join.
Definition: psi_statement_bits.h:170
void(* reprepare_prepared_stmt_v1_t)(PSI_prepared_stmt *prepared_stmt)
repreare a prepare statement.
Definition: psi_statement_bits.h:438
unsigned long m_select_range_check
Metric, number of select range check.
Definition: psi_statement_bits.h:174
void(* release_sp_share_v1_t)(struct PSI_sp_share *share)
Release a stored program share.
Definition: psi_statement_bits.h:490
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:289
void(* end_sp_v1_t)(struct PSI_sp_locker *locker)
Definition: psi_statement_bits.h:495
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:258
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 statment event.
Definition: psi_statement_bits.h:454
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:377
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:329
void * m_class
Instrumentation class.
Definition: psi_statement_bits.h:148
struct PSI_sp_locker PSI_sp_locker
Definition: psi_statement_bits.h:101
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:497
unsigned int m_schema_name_length
Length in bytes of m_schema_name.
Definition: psi_statement_bits.h:190
struct PSI_sp_share PSI_sp_share
Definition: psi_statement_bits.h:94
unsigned long long m_rows_examined
Rows examined.
Definition: psi_statement_bits.h:162
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:393
unsigned long m_select_scan
Metric, number of select scan.
Definition: psi_statement_bits.h:176
bool m_discarded
Discarded flag.
Definition: psi_statement_bits.h:138
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:445
struct PSI_digest_locker PSI_digest_locker
Definition: psi_statement_bits.h:87
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:313
PSI_sp_share * m_parent_sp_share
Definition: psi_statement_bits.h:200
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:305
unsigned long m_sort_merge_passes
Metric, number of sort merge passes.
Definition: psi_statement_bits.h:178
unsigned int m_cs_number
Statement character set number.
Definition: psi_statement_bits.h:192
bool m_in_prepare
In prepare flag.
Definition: psi_statement_bits.h:140
struct PSI_prepared_stmt PSI_prepared_stmt
Definition: psi_statement_bits.h:80
unsigned long m_sort_range
Metric, number of sort merge.
Definition: psi_statement_bits.h:180
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:345
unsigned long m_created_tmp_tables
Metric, temporary tables created.
Definition: psi_statement_bits.h:166
unsigned long long m_rows_sent
Rows sent.
Definition: psi_statement_bits.h:160
Statement instrument information.
Definition: psi_statement_bits.h:108
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:297
unsigned long long m_timer_start
Timer start.
Definition: psi_statement_bits.h:211
unsigned long m_created_tmp_disk_tables
Metric, temporary tables created on disk.
Definition: psi_statement_bits.h:164
void(* register_statement_v1_t)(const char *category, struct PSI_statement_info_v1 *info, int count)
Statement registration API.
Definition: psi_statement_bits.h:225
unsigned long m_sort_rows
Metric, number of sort rows.
Definition: psi_statement_bits.h:182
struct PSI_statement_locker PSI_statement_locker
Definition: psi_statement_bits.h:73
Definition: psi_statement_bits.h:205
static const char * key
Definition: suite_stubs.c:14
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:369
unsigned long long(* m_timer)(void)
Timer function.
Definition: psi_statement_bits.h:213
const char * m_name
The name of the statement instrument to register.
Definition: psi_statement_bits.h:112
PSI_prepared_stmt * m_parent_prepared_stmt
Definition: psi_statement_bits.h:201
static const char * category
Definition: sha2_password.cc:168
unsigned long m_select_range
Metric, number of select range.
Definition: psi_statement_bits.h:172
unsigned int PSI_statement_key
Instrumented statement key.
Definition: psi_statement_bits.h:45
Structure to store token count/array for a statement on which digest is to be calculated.
Definition: sql_digest.h:97
unsigned long long m_timer_start
Timer start.
Definition: psi_statement_bits.h:152
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:321
struct PSI_thread * m_thread
Current thread.
Definition: psi_statement_bits.h:150
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:400
unsigned char m_no_index_used
Metric, no index used flag.
Definition: psi_statement_bits.h:142
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:361
unsigned long m_sort_scan
Metric, number of sort scans.
Definition: psi_statement_bits.h:184
unsigned long long m_lock_time
Locked time.
Definition: psi_statement_bits.h:158
void(* destroy_prepared_stmt_v1_t)(PSI_prepared_stmt *prepared_stmt)
destroy a prepare statement.
Definition: psi_statement_bits.h:432
char m_schema_name[PSI_SCHEMA_NAME_LEN]
Current schema name.
Definition: psi_statement_bits.h:188
#define PSI_SCHEMA_NAME_LEN
Definition: psi_statement_bits.h:124
Log info(cout, "NOTE")
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:281
bool m_query_sample_truncated
True if m_query_sample was truncated.
Definition: psi_statement_bits.h:198
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:469
const struct sql_digest_storage * m_digest
Statement digest.
Definition: psi_statement_bits.h:186
struct PSI_thread PSI_thread
Definition: psi_thread_bits.h:71
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:75
const char * m_query_sample
Statement query sample.
Definition: psi_statement_bits.h:194
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:353
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:337
unsigned int m_flags
The flags of the statement instrument to register.
Definition: psi_statement_bits.h:117
unsigned long m_select_full_join
Metric, number of select full join.
Definition: psi_statement_bits.h:168
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:407