23#ifndef MYSQL_PSI_DATA_LOCK_H
24#define MYSQL_PSI_DATA_LOCK_H
41#ifdef HAVE_PSI_DATA_LOCK_INTERFACE
48#define PSI_DATA_LOCK_VERSION_1 1
55#define PSI_DATA_LOCK_VERSION_2 2
62#define PSI_CURRENT_DATA_LOCK_VERSION 1
64#ifndef USE_PSI_DATA_LOCK_2
65#ifndef USE_PSI_DATA_LOCK_1
67#define USE_PSI_DATA_LOCK_1
72#ifdef USE_PSI_DATA_LOCK_1
73#define HAVE_PSI_DATA_LOCK_1
76#ifdef USE_PSI_DATA_LOCK_2
77#define HAVE_PSI_DATA_LOCK_2
94#ifdef HAVE_PSI_DATA_LOCK_1
151 size_t length,
const char **cached_ptr,
152 size_t *cached_length) = 0;
169 size_t engine_lock_id_length) = 0;
198 size_t table_schema_length,
const char *
table_name,
199 size_t table_name_length,
200 const char *partition_name,
201 size_t partition_name_length,
202 const char *sub_partition_name,
203 size_t sub_partition_name_length) = 0;
207 const char *engine,
size_t engine_length,
const char *engine_lock_id,
208 size_t engine_lock_id_length,
ulonglong transaction_id,
210 size_t table_schema_length,
const char *
table_name,
211 size_t table_name_length,
const char *partition_name,
212 size_t partition_name_length,
const char *sub_partition_name,
213 size_t sub_partition_name_length,
const char *index_name,
214 size_t index_name_length,
const void *identity,
const char *
lock_mode,
215 const char *lock_type,
const char *lock_status,
216 const char *lock_data) = 0;
245 size_t engine_lock_id_length) = 0;
254 size_t engine_lock_id_length) = 0;
294 const char *engine,
size_t engine_length,
295 const char *requesting_engine_lock_id,
296 size_t requesting_engine_lock_id_length,
298 ulonglong requesting_event_id,
const void *requesting_identity,
299 const char *blocking_engine_lock_id,
300 size_t blocking_engine_lock_id_length,
ulonglong blocking_transaction_id,
302 const void *blocking_identity) = 0;
328 bool with_lock_data) = 0;
339 const char *engine_lock_id,
size_t engine_lock_id_length,
340 bool with_lock_data) = 0;
365 const char *requesting_engine_lock_id,
366 size_t requesting_engine_lock_id_length,
367 const char *blocking_engine_lock_id,
368 size_t blocking_engine_lock_id_length) = 0;
444#ifdef USE_PSI_DATA_LOCK_1
Engine interface, row lock inspector.
Definition: psi_data_lock.h:385
virtual PSI_engine_data_lock_iterator * create_data_lock_iterator()=0
Create a data lock iterator.
PSI_engine_data_lock_inspector()=default
virtual void destroy_data_lock_wait_iterator(PSI_engine_data_lock_wait_iterator *it)=0
Destroy a data lock wait iterator.
virtual ~PSI_engine_data_lock_inspector()=default
virtual PSI_engine_data_lock_wait_iterator * create_data_lock_wait_iterator()=0
Create a data lock wait iterator.
virtual void destroy_data_lock_iterator(PSI_engine_data_lock_iterator *it)=0
Destroy a data lock iterator.
Engine interface, row lock iterator.
Definition: psi_data_lock.h:316
PSI_engine_data_lock_iterator()=default
virtual ~PSI_engine_data_lock_iterator()=default
virtual bool fetch(PSI_server_data_lock_container *container, const char *engine_lock_id, size_t engine_lock_id_length, bool with_lock_data)=0
Fetch a given data lock.
virtual bool scan(PSI_server_data_lock_container *container, bool with_lock_data)=0
Scan for more data locks.
Definition: psi_data_lock.h:343
virtual ~PSI_engine_data_lock_wait_iterator()=default
virtual bool scan(PSI_server_data_lock_wait_container *container)=0
Scan for more data lock waits.
virtual bool fetch(PSI_server_data_lock_wait_container *container, const char *requesting_engine_lock_id, size_t requesting_engine_lock_id_length, const char *blocking_engine_lock_id, size_t blocking_engine_lock_id_length)=0
Fetch a given data lock wait.
PSI_engine_data_lock_wait_iterator()=default
Server interface, row lock container.
Definition: psi_data_lock.h:116
virtual bool accept_thread_id_event_id(ulonglong thread_id, ulonglong event_id)=0
Check if the container accepts data for a particular event.
virtual void add_lock_row(const char *engine, size_t engine_length, const char *engine_lock_id, size_t engine_lock_id_length, ulonglong transaction_id, ulonglong thread_id, ulonglong event_id, const char *table_schema, size_t table_schema_length, const char *table_name, size_t table_name_length, const char *partition_name, size_t partition_name_length, const char *sub_partition_name, size_t sub_partition_name_length, const char *index_name, size_t index_name_length, const void *identity, const char *lock_mode, const char *lock_type, const char *lock_status, const char *lock_data)=0
Add a row to table performance_schema.data_locks.
virtual bool accept_lock_id(const char *engine_lock_id, size_t engine_lock_id_length)=0
Check if the container accepts data for a particular lock.
virtual void cache_identifier(PSI_identifier kind, const char *str, size_t length, const char **cached_ptr, size_t *cached_length)=0
Add an identifier in the container cache.
virtual bool accept_transaction_id(ulonglong transaction_id)=0
Check if the container accepts data for a particular transaction.
PSI_server_data_lock_container()=default
virtual ~PSI_server_data_lock_container()=default
virtual const char * cache_data(const char *ptr, size_t length)=0
Add binary data to the container cache.
virtual bool accept_engine(const char *engine, size_t engine_length)=0
Check if the container accepts data for a particular engine.
virtual bool accept_object(const char *table_schema, size_t table_schema_length, const char *table_name, size_t table_name_length, const char *partition_name, size_t partition_name_length, const char *sub_partition_name, size_t sub_partition_name_length)=0
Check if the container accepts data for a particular object.
virtual const char * cache_string(const char *string)=0
Add a string to the container cache.
Definition: psi_data_lock.h:219
PSI_server_data_lock_wait_container()=default
virtual bool accept_requesting_lock_id(const char *engine_lock_id, size_t engine_lock_id_length)=0
Check if the container accepts data for a particular requesting lock id.
virtual bool accept_blocking_thread_id_event_id(ulonglong thread_id, ulonglong event_id)=0
Check if the container accepts data for a particular blocking event.
virtual const char * cache_string(const char *string)=0
virtual bool accept_blocking_lock_id(const char *engine_lock_id, size_t engine_lock_id_length)=0
Check if the container accepts data for a particular blocking lock id.
virtual bool accept_engine(const char *engine, size_t engine_length)=0
Check if the container accepts data for a particular engine.
virtual bool accept_requesting_thread_id_event_id(ulonglong thread_id, ulonglong event_id)=0
Check if the container accepts data for a particular requesting event.
virtual ~PSI_server_data_lock_wait_container()=default
virtual bool accept_requesting_transaction_id(ulonglong transaction_id)=0
Check if the container accepts data for a particular requesting transaction id.
virtual bool accept_blocking_transaction_id(ulonglong transaction_id)=0
Check if the container accepts data for a particular blocking transaction id.
virtual const char * cache_data(const char *ptr, size_t length)=0
virtual void add_lock_wait_row(const char *engine, size_t engine_length, const char *requesting_engine_lock_id, size_t requesting_engine_lock_id_length, ulonglong requesting_transaction_id, ulonglong requesting_thread_id, ulonglong requesting_event_id, const void *requesting_identity, const char *blocking_engine_lock_id, size_t blocking_engine_lock_id_length, ulonglong blocking_transaction_id, ulonglong blocking_thread_id, ulonglong blocking_event_id, const void *blocking_identity)=0
Add a row to table performance_schema.data_lock_waits.
PSI_identifier
Definition: psi_data_lock.h:96
MYSQL_PLUGIN_IMPORT PSI_data_lock_service_t * psi_data_lock_service
Definition: psi_noop.cc:974
void(* register_data_lock_v1_t)(PSI_engine_data_lock_inspector *inspector)
Row Lock registration API.
Definition: psi_data_lock.h:423
void(* unregister_data_lock_v1_t)(PSI_engine_data_lock_inspector *inspector)
Row Lock un registration API.
Definition: psi_data_lock.h:429
@ PSI_IDENTIFIER_PARTITION
Definition: psi_data_lock.h:101
@ PSI_IDENTIFIER_NONE
Definition: psi_data_lock.h:97
@ PSI_IDENTIFIER_SCHEMA
Definition: psi_data_lock.h:98
@ PSI_IDENTIFIER_TABLE
Definition: psi_data_lock.h:99
@ PSI_IDENTIFIER_SUBPARTITION
Definition: psi_data_lock.h:102
@ PSI_IDENTIFIER_INDEX
Definition: psi_data_lock.h:100
lock_mode
Definition: lock0types.h:51
Some integer typedefs for easier portability.
unsigned long long int ulonglong
Definition: my_inttypes.h:55
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:70
static my_thread_id thread_id
Definition: my_thr_init.cc:62
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1065
Definition: atomics_array.h:38
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 * table_name
Definition: rules_table_service.cc:55
required uint64 version
Definition: replication_group_member_actions.proto:40
Entry point for the performance schema interface.
Definition: psi_data_lock.h:81
Performance Schema Row Lock Interface, version 1.
Definition: psi_data_lock.h:436
register_data_lock_v1_t register_data_lock
Definition: psi_data_lock.h:437
unregister_data_lock_v1_t unregister_data_lock
Definition: psi_data_lock.h:438
Definition: psi_bits.h:164