MySQL 9.1.0
Source Code Documentation
pfs_thread_provider.h
Go to the documentation of this file.
1/* Copyright (c) 2012, 2024, 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 PFS_THREAD_PROVIDER_H
25#define PFS_THREAD_PROVIDER_H
26
27/**
28 @file include/pfs_thread_provider.h
29 Performance schema instrumentation (declarations).
30*/
31
32/* HAVE_PSI_*_INTERFACE */
33#include "my_psi_config.h" // IWYU pragma: keep
34
35#ifdef HAVE_PSI_THREAD_INTERFACE
36#if defined(MYSQL_SERVER) || defined(PFS_DIRECT_CALL)
37#ifndef MYSQL_DYNAMIC_PLUGIN
38#ifndef WITH_LOCK_ORDER
39
40#include <sys/types.h>
41#include <time.h>
42
43#include "my_inttypes.h"
44#include "my_macros.h"
46
47#ifdef __cplusplus
48class THD;
49#endif /* __cplusplus */
50
51/*
52 Naming current apis as _vc (version 'current'),
53 to avoid changing the names every time
54 psi_thread_v<N> is replaced by psi_thread_v<N+1>.
55*/
56
57#define PSI_THREAD_CALL(M) pfs_##M##_vc
58
59void pfs_register_thread_vc(const char *category, PSI_thread_info *info,
60 int count);
61
62int pfs_spawn_thread_vc(PSI_thread_key key, unsigned int sequence_number,
63 my_thread_handle *thread, const my_thread_attr_t *attr,
64 void *(*start_routine)(void *), void *arg);
65
66PSI_thread *pfs_new_thread_vc(PSI_thread_key key, unsigned int sequence_number,
67 const void *identity, ulonglong processlist_id);
68
69void pfs_set_thread_id_vc(PSI_thread *thread, ulonglong processlist_id);
70
72
74
76
77#ifdef __cplusplus
78void pfs_set_thread_THD_vc(PSI_thread *thread, THD *thd);
79#endif /* __cplusplus */
80
82
84
85void pfs_set_mem_cnt_THD_vc(THD *thd, THD **backup_thd);
86
87void pfs_set_thread_user_vc(const char *user, int user_len);
88
89void pfs_set_thread_account_vc(const char *user, int user_len, const char *host,
90 int host_len);
91
92void pfs_set_thread_db_vc(const char *db, int db_len);
93
95
97
99
101
102void pfs_set_thread_info_vc(const char *info, uint info_len);
103
104void pfs_set_thread_secondary_engine_vc(bool secondary);
105
106int pfs_set_thread_resource_group_vc(const char *group_name, int group_name_len,
107 void *user_data);
108
111 const char *group_name,
112 int group_name_len, void *user_data);
113
114void pfs_set_thread_vc(PSI_thread *thread);
115
117
119
121
122void pfs_delete_thread_vc(PSI_thread *thread);
123
124int pfs_set_thread_connect_attrs_vc(const char *buffer, uint length,
125 const void *from_cs);
126
127void pfs_get_current_thread_event_id_vc(ulonglong *internal_thread_id,
128 ulonglong *event_id);
129
131 ulonglong *internal_thread_id,
132 ulonglong *event_id);
133
135
138 PSI_thread_attrs *thread_attrs);
139
141 bool with_ref_count);
142
144
146
148
150
152
154
155#endif /* WITH_LOCK_ORDER */
156#endif /* MYSQL_DYNAMIC_PLUGIN */
157#endif /* MYSQL_SERVER || PFS_DIRECT_CALL */
158#endif /* HAVE_PSI_THREAD_INTERFACE */
159
160#endif
enum_state state
Definition: sql_class.h:390
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:36
struct timeval start_time
Definition: sql_class.h:1617
const LEX_CSTRING & db() const
Definition: sql_class.h:3961
struct PSI_thread PSI_thread
Definition: psi_thread_bits.h:82
unsigned int PSI_thread_key
Instrumented thread key.
Definition: psi_thread_bits.h:50
int opaque_vio_type
Definition: psi_thread_bits.h:62
Some integer typedefs for easier portability.
unsigned long long int ulonglong
Definition: my_inttypes.h:56
Some common macros.
Defines various enable/disable and HAVE_ macros related to the performance schema instrumentation sys...
static my_thread_id thread_id
Definition: my_thr_init.cc:63
pthread_attr_t my_thread_attr_t
Definition: my_thread_bits.h:49
static int count
Definition: myisam_ftdump.cc:45
char * user
Definition: mysqladmin.cc:66
const char * host
Definition: mysqladmin.cc:65
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:76
mutable_buffer buffer(void *p, size_t n) noexcept
Definition: buffer.h:418
static int handle(int sql_errno, const char *sqlstate, const char *message, void *state)
Bridge function between the C++ API offered by this module and the C API of the parser service.
Definition: services.cc:64
static const char * category
Definition: sha2_password.cc:170
int pfs_get_thread_system_attrs_vc(PSI_thread_attrs *thread_attrs)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3586
ulonglong pfs_get_current_thread_internal_id_vc()
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3169
void pfs_detect_telemetry_vc(PSI_thread *thread)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3718
void pfs_delete_thread_vc(PSI_thread *thread)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3704
int pfs_spawn_thread_vc(PSI_thread_key key, unsigned int sequence_number, my_thread_handle *thread, const my_thread_attr_t *attr, void *(*start_routine)(void *), void *arg)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3077
void pfs_set_mem_cnt_THD_vc(THD *thd, THD **backup_thd)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3216
int pfs_set_thread_resource_group_vc(const char *group_name, int group_name_len, void *user_data)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3471
void pfs_register_thread_vc(const char *category, PSI_thread_info *info, int count)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:2539
void pfs_set_connection_type_vc(opaque_vio_type conn_type)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3367
void pfs_get_current_thread_event_id_vc(ulonglong *internal_thread_id, ulonglong *event_id)
Implementation of the get event id interface.
Definition: pfs.cc:8330
PSI_thread * pfs_get_thread_vc(void)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3242
void pfs_notify_session_change_user_vc(PSI_thread *thread)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3648
PSI_thread * pfs_new_thread_vc(PSI_thread_key key, unsigned int sequence_number, const void *identity, ulonglong processlist_id)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3130
void pfs_set_thread_user_vc(const char *user, int user_len)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3251
void pfs_set_thread_id_vc(PSI_thread *thread, ulonglong processlist_id)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3157
void pfs_notify_session_disconnect_vc(PSI_thread *thread)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3637
void pfs_notify_session_connect_vc(PSI_thread *thread)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3626
void pfs_delete_current_thread_vc(void)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3690
void pfs_set_thread_secondary_engine_vc(bool secondary)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3428
void pfs_get_thread_event_id_vc(PSI_thread *thread, ulonglong *internal_thread_id, ulonglong *event_id)
Implementation of the get event id interface.
Definition: pfs.cc:8357
void pfs_set_thread_os_id_vc(PSI_thread *thread)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3230
void pfs_set_thread_command_vc(int command)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3352
void pfs_set_thread_account_vc(const char *user, int user_len, const char *host, int host_len)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3294
void pfs_set_thread_info_vc(const char *info, uint info_len)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3401
int pfs_register_notification_vc(const PSI_notification *callbacks, bool with_ref_count)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3609
int pfs_get_thread_system_attrs_by_id_vc(PSI_thread *thread, ulonglong thread_id, PSI_thread_attrs *thread_attrs)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3595
void pfs_set_thread_state_vc(const char *state)
int pfs_set_thread_connect_attrs_vc(const char *buffer, uint length, const void *from_cs)
Implementation of the thread attribute connection interface.
Definition: pfs.cc:8260
void pfs_set_thread_start_time_vc(time_t start_time)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3382
void pfs_set_thread_vc(PSI_thread *thread)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3659
void pfs_aggregate_thread_status_vc(PSI_thread *thread)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3679
void pfs_set_thread_db_vc(const char *db, int db_len)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3337
PSI_thread * pfs_get_thread_by_id_vc(ulonglong processlist_id)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3193
void pfs_set_thread_peer_port_vc(PSI_thread *thread, uint port)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3668
void pfs_set_thread_THD_vc(PSI_thread *thread, THD *thd)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3203
int pfs_unregister_notification_vc(int handle)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3618
ulonglong pfs_get_thread_internal_id_vc(PSI_thread *thread)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3181
int pfs_set_thread_resource_group_by_id_vc(PSI_thread *thread, ulonglong thread_id, const char *group_name, int group_name_len, void *user_data)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3481
void pfs_abort_telemetry_vc(PSI_thread *thread)
Implementation of the thread instrumentation interface.
Definition: pfs.cc:3758
Performance schema instrumentation interface.
required string key
Definition: replication_asynchronous_connection_failover.proto:60
required uint64 port
Definition: replication_asynchronous_connection_failover.proto:33
Registration structure for the pfs_notification service.
Definition: psi_thread_bits.h:523
Performance Schema thread type: user/foreground or system/background.
Definition: psi_thread_bits.h:470
Thread instrument information.
Definition: psi_thread_bits.h:117
Definition: my_thread_bits.h:58
Include file for Sun RPC to compile out of the box.
command
Definition: version_token.cc:280