MySQL 9.7.0
Source Code Documentation
psi_statement_service.h
Go to the documentation of this file.
1/* Copyright (c) 2017, 2026, Oracle and/or its affiliates.
2
3This program is free software; you can redistribute it and/or modify
4it under the terms of the GNU General Public License, version 2.0,
5as published by the Free Software Foundation.
6
7This program is designed to work with certain software (including
8but not limited to OpenSSL) that is licensed under separate terms,
9as designated in a particular file or component or in included license
10documentation. The authors of MySQL hereby grant you an additional
11permission to link the program and your derivative works with the
12separately licensed software that they have either included with
13the program or referenced in the documentation.
14
15This program is distributed in the hope that it will be useful,
16but WITHOUT ANY WARRANTY; without even the implied warranty of
17MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18GNU General Public License, version 2.0, for more details.
19
20You should have received a copy of the GNU General Public License
21along with this program; if not, write to the Free Software
22Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
23
24#ifndef COMPONENTS_SERVICES_PSI_STATEMENT_SERVICE_H
25#define COMPONENTS_SERVICES_PSI_STATEMENT_SERVICE_H
26
29
30/*
31 Version 1.
32 Introduced in MySQL 8.0.3
33 Deprecated in MySQL 8.0.14
34 Obsoleted in MySQL 8.0.31
35 Status: Obsolete, use version 4 instead.
36*/
37
38/*
39 Version 2.
40 Introduced in MySQL 8.0.14
41 Deprecated in MySQL 8.0.28
42 Obsoleted in MySQL 8.0.31
43 Status: Obsolete, use version 4 instead.
44*/
45
46/*
47 Version 3.
48 Introduced in MySQL 8.0.28
49 Obsoleted in MySQL 8.0.31
50 Status: Obsolete, use version 4 instead.
51*/
52
53/*
54 Version 4.
55 Introduced in MySQL 8.0.31
56 Obsoleted in MySQL 8.0.33
57 Status: Obsolete, use version 5 instead.
58 Changes compared to version 3:
59 - get_thread_statement_locker_v4_t,
60 the state structure is bigger.
61*/
62
63/*
64 Version 5.
65 Introduced in MySQL 8.0.33
66 Status: active.
67 Changes compared to version 4:
68 - get_thread_statement_locker_v5_t
69 (the state structure is bigger),
70 notify_statement_query_attributes_v5_t,
71 statement_abort_telemetry_v5_t.
72*/
73BEGIN_SERVICE_DEFINITION(psi_statement_v5)
74/** @sa register_statement_v1_t. */
75register_statement_v1_t register_statement;
76/** @sa get_thread_statement_locker_v1_t. */
77get_thread_statement_locker_v5_t get_thread_statement_locker;
78/** @sa refine_statement_v1_t. */
79refine_statement_v1_t refine_statement;
80/** @sa start_statement_v1_t. */
81start_statement_v1_t start_statement;
82/** @sa set_statement_text_v1_t. */
83set_statement_text_v1_t set_statement_text;
84/** @sa set_statement_query_id_t. */
85set_statement_query_id_t set_statement_query_id;
86/** @sa set_statement_lock_time_t. */
87set_statement_lock_time_t set_statement_lock_time;
88/** @sa set_statement_rows_sent_t. */
89set_statement_rows_sent_t set_statement_rows_sent;
90/** @sa set_statement_rows_examined_t. */
91set_statement_rows_examined_t set_statement_rows_examined;
92/** @sa inc_statement_created_tmp_disk_tables. */
93inc_statement_created_tmp_disk_tables_t inc_statement_created_tmp_disk_tables;
94/** @sa inc_statement_created_tmp_tables. */
95inc_statement_created_tmp_tables_t inc_statement_created_tmp_tables;
96/** @sa inc_statement_select_full_join. */
97inc_statement_select_full_join_t inc_statement_select_full_join;
98/** @sa inc_statement_select_full_range_join. */
99inc_statement_select_full_range_join_t inc_statement_select_full_range_join;
100/** @sa inc_statement_select_range. */
101inc_statement_select_range_t inc_statement_select_range;
102/** @sa inc_statement_select_range_check. */
103inc_statement_select_range_check_t inc_statement_select_range_check;
104/** @sa inc_statement_select_scan. */
105inc_statement_select_scan_t inc_statement_select_scan;
106/** @sa inc_statement_sort_merge_passes. */
107inc_statement_sort_merge_passes_t inc_statement_sort_merge_passes;
108/** @sa inc_statement_sort_range. */
109inc_statement_sort_range_t inc_statement_sort_range;
110/** @sa inc_statement_sort_rows. */
111inc_statement_sort_rows_t inc_statement_sort_rows;
112/** @sa inc_statement_sort_scan. */
113inc_statement_sort_scan_t inc_statement_sort_scan;
114/** @sa set_statement_no_index_used. */
115set_statement_no_index_used_t set_statement_no_index_used;
116/** @sa set_statement_no_good_index_used. */
117set_statement_no_good_index_used_t set_statement_no_good_index_used;
118/** @sa set_statement_secondary_engine_v3_t. */
119set_statement_secondary_engine_v3_t set_statement_secondary_engine;
120/** @sa end_statement_v1_t. */
121end_statement_v1_t end_statement;
122
123/** @sa create_prepared_stmt_v1_t. */
125/** @sa destroy_prepared_stmt_v1_t. */
126destroy_prepared_stmt_v1_t destroy_prepared_stmt;
127/** @sa reprepare_prepared_stmt_v1_t. */
128reprepare_prepared_stmt_v1_t reprepare_prepared_stmt;
129/** @sa execute_prepared_stmt_v1_t. */
130execute_prepared_stmt_v1_t execute_prepared_stmt;
131/** @sa set_prepared_stmt_text_v1_t. */
132set_prepared_stmt_text_v1_t set_prepared_stmt_text;
133/** @sa set_prepared_stmt_secondary_engine_v3_t */
134set_prepared_stmt_secondary_engine_v3_t set_prepared_stmt_secondary_engine;
135
136/** @sa digest_start_v1_t. */
137digest_start_v1_t digest_start;
138/** @sa digest_end_v1_t. */
140
141/** @sa get_sp_share_v1_t. */
142get_sp_share_v1_t get_sp_share;
143/** @sa release_sp_share_v1_t. */
144release_sp_share_v1_t release_sp_share;
145/** @sa start_sp_v1_t. */
147/** @sa start_sp_v1_t. */
149/** @sa drop_sp_v1_t. */
151
152notify_statement_query_attributes_v5_t notify_statement_query_attributes;
153statement_abort_telemetry_v5_t statement_abort_telemetry;
154END_SERVICE_DEFINITION(psi_statement_v5)
155
156/*
157 Version 6.
158 Introduced in MySQL 8.4.9 / 9.7.0
159 Status: active.
160 Changes compared to version 5:
161 - digest_set_v6_t
162*/
164/** @sa register_statement_v1_t. */
165register_statement_v1_t register_statement;
166/** @sa get_thread_statement_locker_v1_t. */
167get_thread_statement_locker_v5_t get_thread_statement_locker;
168/** @sa refine_statement_v1_t. */
169refine_statement_v1_t refine_statement;
170/** @sa start_statement_v1_t. */
171start_statement_v1_t start_statement;
172/** @sa set_statement_text_v1_t. */
173set_statement_text_v1_t set_statement_text;
174/** @sa set_statement_query_id_t. */
175set_statement_query_id_t set_statement_query_id;
176/** @sa set_statement_lock_time_t. */
177set_statement_lock_time_t set_statement_lock_time;
178/** @sa set_statement_rows_sent_t. */
179set_statement_rows_sent_t set_statement_rows_sent;
180/** @sa set_statement_rows_examined_t. */
181set_statement_rows_examined_t set_statement_rows_examined;
182/** @sa inc_statement_created_tmp_disk_tables. */
183inc_statement_created_tmp_disk_tables_t inc_statement_created_tmp_disk_tables;
184/** @sa inc_statement_created_tmp_tables. */
185inc_statement_created_tmp_tables_t inc_statement_created_tmp_tables;
186/** @sa inc_statement_select_full_join. */
187inc_statement_select_full_join_t inc_statement_select_full_join;
188/** @sa inc_statement_select_full_range_join. */
189inc_statement_select_full_range_join_t inc_statement_select_full_range_join;
190/** @sa inc_statement_select_range. */
191inc_statement_select_range_t inc_statement_select_range;
192/** @sa inc_statement_select_range_check. */
193inc_statement_select_range_check_t inc_statement_select_range_check;
194/** @sa inc_statement_select_scan. */
195inc_statement_select_scan_t inc_statement_select_scan;
196/** @sa inc_statement_sort_merge_passes. */
197inc_statement_sort_merge_passes_t inc_statement_sort_merge_passes;
198/** @sa inc_statement_sort_range. */
199inc_statement_sort_range_t inc_statement_sort_range;
200/** @sa inc_statement_sort_rows. */
201inc_statement_sort_rows_t inc_statement_sort_rows;
202/** @sa inc_statement_sort_scan. */
203inc_statement_sort_scan_t inc_statement_sort_scan;
204/** @sa set_statement_no_index_used. */
205set_statement_no_index_used_t set_statement_no_index_used;
206/** @sa set_statement_no_good_index_used. */
207set_statement_no_good_index_used_t set_statement_no_good_index_used;
208/** @sa set_statement_secondary_engine_v3_t. */
209set_statement_secondary_engine_v3_t set_statement_secondary_engine;
210/** @sa end_statement_v1_t. */
211end_statement_v1_t end_statement;
212
213/** @sa create_prepared_stmt_v1_t. */
215/** @sa destroy_prepared_stmt_v1_t. */
216destroy_prepared_stmt_v1_t destroy_prepared_stmt;
217/** @sa reprepare_prepared_stmt_v1_t. */
218reprepare_prepared_stmt_v1_t reprepare_prepared_stmt;
219/** @sa execute_prepared_stmt_v1_t. */
220execute_prepared_stmt_v1_t execute_prepared_stmt;
221/** @sa set_prepared_stmt_text_v1_t. */
222set_prepared_stmt_text_v1_t set_prepared_stmt_text;
223/** @sa set_prepared_stmt_secondary_engine_v3_t */
224set_prepared_stmt_secondary_engine_v3_t set_prepared_stmt_secondary_engine;
225
226/** @sa digest_start_v1_t. */
227digest_start_v1_t digest_start;
228/** @sa digest_end_v1_t. */
230
231/** @sa get_sp_share_v1_t. */
232get_sp_share_v1_t get_sp_share;
233/** @sa release_sp_share_v1_t. */
234release_sp_share_v1_t release_sp_share;
235/** @sa start_sp_v1_t. */
237/** @sa start_sp_v1_t. */
239/** @sa drop_sp_v1_t. */
241
242notify_statement_query_attributes_v5_t notify_statement_query_attributes;
243statement_abort_telemetry_v5_t statement_abort_telemetry;
244
245/** @sa digest_set_v6_t. */
247END_SERVICE_DEFINITION(psi_statement_v6)
248
249#endif /* COMPONENTS_SERVICES_PSI_STATEMENT_SERVICE_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
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
PFS_prepared_stmt * create_prepared_stmt(void *identity, PFS_thread *thread, PFS_program *pfs_program, PFS_events_statements *pfs_stmt, uint stmt_id, const char *stmt_name, uint stmt_name_length, const char *sqltext, uint sqltext_length)
Definition: pfs_prepared_stmt.cc:73
Performance schema instrumentation interface.
#define END_SERVICE_DEFINITION(name)
A macro to end the last Service definition started with the BEGIN_SERVICE_DEFINITION macro.
Definition: service.h:91
#define BEGIN_SERVICE_DEFINITION(name)
Declares a new Service.
Definition: service.h:86