MySQL 9.7.0
Source Code Documentation
psi_statement.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 MYSQL_PSI_STATEMENT_H
25#define MYSQL_PSI_STATEMENT_H
26
27/**
28 @file include/mysql/psi/psi_statement.h
29 Performance schema instrumentation interface.
30
31 @defgroup psi_abi_statement Statement Instrumentation (ABI)
32 @ingroup psi_abi
33 @{
34*/
35
36#include "my_inttypes.h"
37#include "my_macros.h"
38
39/* HAVE_PSI_*_INTERFACE */
40#include "my_psi_config.h" // IWYU pragma: keep
41
42#include "my_sharedlib.h"
44
45/** Entry point for the performance schema interface. */
47 /**
48 ABI interface finder.
49 Calling this method with an interface version number returns either
50 an instance of the ABI for this version, or NULL.
51 @sa PSI_STATEMENT_VERSION_1
52 @sa PSI_STATEMENT_VERSION_2
53 @sa PSI_STATEMENT_VERSION_3
54 @sa PSI_STATEMENT_VERSION_4
55 @sa PSI_CURRENT_STATEMENT_VERSION
56 */
57 void *(*get_interface)(int version);
58};
60
61#ifdef HAVE_PSI_STATEMENT_INTERFACE
62
63/**
64 Performance Schema Statement Interface, version 1.
65 @since PSI_STATEMENT_VERSION_1
66*/
68 /* No binary compatibility with old PLUGIN */
70};
71
72/**
73 Performance Schema Statement Interface, version 2.
74 @since PSI_STATEMENT_VERSION_2
75*/
77 /* No binary compatibility with old PLUGIN */
79};
80
81/**
82 Performance Schema Statement Interface, version 3.
83 @since PSI_STATEMENT_VERSION_3
84*/
86 /* No binary compatibility with old PLUGIN */
88};
89
90/**
91 Performance Schema Statement Interface, version 4.
92 @since PSI_STATEMENT_VERSION_4
93*/
95 /* No binary compatibility with old PLUGIN */
97};
98
99/**
100 Performance Schema Statement Interface, version 5.
101 @since PSI_STATEMENT_VERSION_5
102*/
104 /* No binary compatibility with old PLUGIN */
106};
107
108/**
109 Performance Schema Statement Interface, version 6.
110 @since PSI_STATEMENT_VERSION_6
111*/
113 /** @sa register_statement_v1_t. */
115 /** @sa get_thread_statement_locker_v5_t. */
117 /** @sa refine_statement_v1_t. */
119 /** @sa start_statement_v1_t. */
121 /** @sa set_statement_text_v1_t. */
123 /** @sa set_statement_query_id. */
125 /** @sa set_statement_lock_time_t. */
127 /** @sa set_statement_rows_sent_t. */
129 /** @sa set_statement_rows_examined_t. */
131 /** @sa inc_statement_created_tmp_disk_tables. */
133 /** @sa inc_statement_created_tmp_tables. */
135 /** @sa inc_statement_select_full_join. */
137 /** @sa inc_statement_select_full_range_join. */
139 /** @sa inc_statement_select_range. */
141 /** @sa inc_statement_select_range_check. */
143 /** @sa inc_statement_select_scan. */
145 /** @sa inc_statement_sort_merge_passes. */
147 /** @sa inc_statement_sort_range. */
149 /** @sa inc_statement_sort_rows. */
151 /** @sa inc_statement_sort_scan. */
153 /** @sa set_statement_no_index_used. */
155 /** @sa set_statement_no_good_index_used. */
157 /** @sa set_statement_secondary_engine_v3_t. */
159 /** @sa end_statement_v1_t. */
161
162 /** @sa create_prepared_stmt_v1_t. */
164 /** @sa destroy_prepared_stmt_v1_t. */
166 /** @sa reprepare_prepared_stmt_v1_t. */
168 /** @sa execute_prepared_stmt_v1_t. */
170 /** @sa set_prepared_stmt_text_v1_t. */
172 /** @sa set_prepared_stmt_secondary_engine_v3_t */
174
175 /** @sa digest_start_v1_t. */
177 /** @sa digest_end_v1_t. */
179
180 /** @sa get_sp_share_v1_t. */
182 /** @sa release_sp_share_v1_t. */
184 /** @sa start_sp_v1_t. */
186 /** @sa start_sp_v1_t. */
188 /** @sa drop_sp_v1_t. */
190
193
194 /** @sa digest_set_v6_t. */
196};
197
199
201
202#endif /* HAVE_PSI_STATEMENT_INTERFACE */
203
204/** @} (end of group psi_abi_statement) */
205
206#endif /* MYSQL_PSI_STATEMENT_H */
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
MYSQL_PLUGIN_IMPORT PSI_statement_service_t * psi_statement_service
Definition: psi_noop.cc:770
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
struct PSI_digest_locker *(* digest_start_v1_t)(struct PSI_statement_locker *locker)
Get a digest locker for the current statement.
Definition: psi_statement_bits.h:542
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
struct PSI_statement_locker *(* get_thread_statement_locker_v5_t)(struct PSI_statement_locker_state_v5 *state, PSI_statement_key key, const void *charset, PSI_sp_share *sp_share)
Get a statement instrumentation locker.
Definition: psi_statement_bits.h:294
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_sp_share *(* get_sp_share_v1_t)(unsigned int object_type, const char *schema_name, unsigned int schema_name_length, const char *object_name, unsigned int object_name_length)
Acquire a sp share instrumentation.
Definition: psi_statement_bits.h:573
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
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
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 *(* refine_statement_v1_t)(struct PSI_statement_locker *locker, PSI_statement_key key)
Refine a statement locker to a more specific key.
Definition: psi_statement_bits.h:305
PSI_prepared_stmt *(* create_prepared_stmt_v1_t)(void *identity, unsigned int stmt_id, PSI_statement_locker *locker, const char *stmt_name, size_t stmt_name_length, const char *sql_text, size_t sql_text_length)
Get a prepare statement.
Definition: psi_statement_bits.h:495
PSI_sp_locker *(* start_sp_v1_t)(struct PSI_sp_locker_state_v1 *state, struct PSI_sp_share *sp_share)
Definition: psi_statement_bits.h:584
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
Some integer typedefs for easier portability.
Some common macros.
Defines various enable/disable and HAVE_ macros related to the performance schema instrumentation sys...
Functions related to handling of plugins and other dynamically loaded libraries.
#define MYSQL_PLUGIN_IMPORT
Definition: my_sharedlib.h:71
Performance schema instrumentation interface.
required uint64 version
Definition: replication_group_member_actions.proto:41
Entry point for the performance schema interface.
Definition: psi_statement.h:46
Performance Schema Statement Interface, version 1.
Definition: psi_statement.h:67
void * this_interface_is_obsolete
Definition: psi_statement.h:69
Performance Schema Statement Interface, version 2.
Definition: psi_statement.h:76
void * this_interface_is_obsolete
Definition: psi_statement.h:78
Performance Schema Statement Interface, version 3.
Definition: psi_statement.h:85
void * this_interface_is_obsolete
Definition: psi_statement.h:87
Performance Schema Statement Interface, version 4.
Definition: psi_statement.h:94
void * this_interface_is_obsolete
Definition: psi_statement.h:96
Performance Schema Statement Interface, version 5.
Definition: psi_statement.h:103
void * this_interface_is_obsolete
Definition: psi_statement.h:105
Performance Schema Statement Interface, version 6.
Definition: psi_statement.h:112
digest_set_v6_t digest_set
Definition: psi_statement.h:195
inc_statement_select_range_t inc_statement_select_range
Definition: psi_statement.h:140
destroy_prepared_stmt_v1_t destroy_prepared_stmt
Definition: psi_statement.h:165
set_statement_secondary_engine_v3_t set_statement_secondary_engine
Definition: psi_statement.h:158
statement_abort_telemetry_v5_t statement_abort_telemetry
Definition: psi_statement.h:192
inc_statement_sort_range_t inc_statement_sort_range
Definition: psi_statement.h:148
digest_end_v1_t digest_end
Definition: psi_statement.h:178
get_thread_statement_locker_v5_t get_thread_statement_locker
Definition: psi_statement.h:116
refine_statement_v1_t refine_statement
Definition: psi_statement.h:118
inc_statement_select_range_check_t inc_statement_select_range_check
Definition: psi_statement.h:142
set_prepared_stmt_text_v1_t set_prepared_stmt_text
Definition: psi_statement.h:171
get_sp_share_v1_t get_sp_share
Definition: psi_statement.h:181
inc_statement_sort_scan_t inc_statement_sort_scan
Definition: psi_statement.h:152
digest_start_v1_t digest_start
Definition: psi_statement.h:176
execute_prepared_stmt_v1_t execute_prepared_stmt
Definition: psi_statement.h:169
set_statement_query_id_t set_statement_query_id
Definition: psi_statement.h:124
set_statement_rows_sent_t set_statement_rows_sent
Definition: psi_statement.h:128
inc_statement_created_tmp_disk_tables_t inc_statement_created_tmp_disk_tables
Definition: psi_statement.h:132
inc_statement_sort_merge_passes_t inc_statement_sort_merge_passes
Definition: psi_statement.h:146
start_sp_v1_t start_sp
Definition: psi_statement.h:185
inc_statement_sort_rows_t inc_statement_sort_rows
Definition: psi_statement.h:150
inc_statement_select_full_join_t inc_statement_select_full_join
Definition: psi_statement.h:136
notify_statement_query_attributes_v5_t notify_statement_query_attributes
Definition: psi_statement.h:191
inc_statement_created_tmp_tables_t inc_statement_created_tmp_tables
Definition: psi_statement.h:134
end_sp_v1_t end_sp
Definition: psi_statement.h:187
set_statement_text_v1_t set_statement_text
Definition: psi_statement.h:122
create_prepared_stmt_v1_t create_prepared_stmt
Definition: psi_statement.h:163
drop_sp_v1_t drop_sp
Definition: psi_statement.h:189
set_prepared_stmt_secondary_engine_v3_t set_prepared_stmt_secondary_engine
Definition: psi_statement.h:173
inc_statement_select_scan_t inc_statement_select_scan
Definition: psi_statement.h:144
inc_statement_select_full_range_join_t inc_statement_select_full_range_join
Definition: psi_statement.h:138
register_statement_v1_t register_statement
Definition: psi_statement.h:114
end_statement_v1_t end_statement
Definition: psi_statement.h:160
reprepare_prepared_stmt_v1_t reprepare_prepared_stmt
Definition: psi_statement.h:167
set_statement_lock_time_t set_statement_lock_time
Definition: psi_statement.h:126
set_statement_rows_examined_t set_statement_rows_examined
Definition: psi_statement.h:130
release_sp_share_v1_t release_sp_share
Definition: psi_statement.h:183
start_statement_v1_t start_statement
Definition: psi_statement.h:120
set_statement_no_index_used_t set_statement_no_index_used
Definition: psi_statement.h:154
set_statement_no_good_index_used_t set_statement_no_good_index_used
Definition: psi_statement.h:156