MySQL 9.0.0
Source Code Documentation
|
This is a group of all component service APIs. More...
Modules | |
Event tracking services | |
Keyring component services | |
MySQL string services | |
Table Access services | |
Classes | |
struct | s_mysql_mysql_audit_api_connection |
A service to generate Audit API events of the connection class (MYSQL_AUDIT_CONNECTION_CLASS). More... | |
struct | s_mysql_mysql_audit_api_connection_with_error |
A service to generate Audit API events of the connection class (MYSQL_AUDIT_CONNECTION_CLASS) with the explicitly specified error code value. More... | |
struct | s_mysql_component_sys_variable_register |
Service to register variable and get variable value. More... | |
struct | s_mysql_component_sys_variable_unregister |
Service to unregister variable. More... | |
struct | s_mysql_component_thread_cleanup_handler |
A service to cleanup component thread resource. More... | |
struct | s_mysql_dynamic_loader_services_loaded_notification |
A service to notify consumers about services loaded through dynamic loader. More... | |
struct | s_mysql_dynamic_loader_services_unload_notification |
A service to notify consumers about services to be unloaded through dynamic loader. More... | |
struct | s_mysql_dynamic_privilege_register |
A service to register and unregister dynamic privileges. More... | |
struct | s_mysql_dynamic_privilege_deprecation |
A service to register and unregister dynamic privileges as deprecated. More... | |
struct | s_mysql_group_replication_message_service_send |
A service that sends content agnostic messages from a member to the group. More... | |
struct | s_mysql_group_replication_status_service_v1 |
A service to get the status of a member of Group Replication. More... | |
struct | s_mysql_host_application_signal |
A service to deliver a signal to host application. More... | |
struct | s_mysql_mysql_keyring_iterator |
Keyring iterator component service definition, which enables to iterate over items stored within currently used keyring. More... | |
struct | s_mysql_external_program_capability_query |
A service to query various properties/capabilities of the implementer of s_mysql_external_program_execution service. More... | |
struct | s_mysql_external_program_execution |
A service to setup and execute multi-lingual stored procedures. More... | |
struct | s_mysql_mysql_admin_session |
A service to create an "admin" session that's not a subject to max connection count limits. More... | |
struct | s_mysql_mysql_audit_print_service_double_data_source |
Audit print service allows to obtain data of the double type associated with the THD object, which keeps various data of the user session. More... | |
struct | s_mysql_mysql_audit_print_service_longlong_data_source |
Audit print service allows to obtain data of the long long type associated with the THD object, which keeps various data of the user session. More... | |
struct | s_mysql_mysql_authentication_registration |
A service to do registration of fido device. More... | |
struct | s_mysql_mysql_text_consumer_factory_v1 |
An implementation of these services will be called as the data resulting from calling mysql_query() service are produced by the server. More... | |
struct | s_mysql_mysql_text_consumer_metadata_v1 |
A service that provides the apis for start_result_metadata, field_metadata, and end_result_metadata. More... | |
struct | s_mysql_mysql_text_consumer_row_factory_v1 |
A service that provides the apis for start_row, abort_row and end_row. More... | |
struct | s_mysql_mysql_text_consumer_error_v1 |
A service that provides the apis for handle_ok, handle_error and error. More... | |
struct | s_mysql_mysql_text_consumer_get_null_v1 |
A service that provides the apis for get_null. More... | |
struct | s_mysql_mysql_text_consumer_get_integer_v1 |
A service that provides the apis for get_integer. More... | |
struct | s_mysql_mysql_text_consumer_get_longlong_v1 |
A service that provides the apis for get_longlong. More... | |
struct | s_mysql_mysql_text_consumer_get_decimal_v1 |
A service that provides the apis for get_decimal. More... | |
struct | s_mysql_mysql_text_consumer_get_double_v1 |
A service that provides the apis for get_double. More... | |
struct | s_mysql_mysql_text_consumer_get_date_time_v1 |
A service that provides the apis for get_date, get_time and get_datatime. More... | |
struct | s_mysql_mysql_text_consumer_get_string_v1 |
A service that provides the apis for get_string. More... | |
struct | s_mysql_mysql_text_consumer_client_capabilities_v1 |
A service that provides the apis for client_capabilities. More... | |
struct | s_mysql_mysql_command_factory |
A service that provides the apis for mysql command init, info, connect, reset, close, commit, auto_commit and rollback. More... | |
struct | s_mysql_mysql_command_thread |
A service that provides the apis for mysql command session thread init and thread end. More... | |
struct | s_mysql_mysql_command_options |
A service that provides the apis for mysql command get_option and set_option. More... | |
struct | s_mysql_mysql_command_query |
A service that provides the apis for mysql command query and affected_rows. More... | |
struct | s_mysql_mysql_command_query_result |
A service that provides the apis for mysql command, store_result, free_result, more_results, next_result, result_metadata and fetch_row. More... | |
struct | s_mysql_mysql_command_field_info |
A service that provides the apis for mysql command field info, fetch_field, num_fields, fetch_fields and field_count. More... | |
struct | s_mysql_mysql_command_field_metadata |
Fetch the metadata of a service. More... | |
struct | s_mysql_mysql_command_error_info |
A service that provides the apis for mysql command error info, mysql_errno, error, sqlstate. More... | |
struct | s_mysql_mysql_current_thread_reader |
A service to fetch the current thread id. More... | |
struct | s_mysql_mysql_debug_keyword_service |
A service to check if debug keyword status. More... | |
struct | s_mysql_mysql_debug_sync_service |
Enable capability to process debug_sync point from components. More... | |
struct | s_mysql_mysql_keyring_native_key_id |
A service to read native keybackend id. More... | |
struct | s_mysql_mysql_option_tracker_option |
Option tracker registration and deregistration services. More... | |
struct | s_mysql_mysql_option_tracker_usage |
Option tracker usage marker. More... | |
struct | s_mysql_mysql_query_attributes_iterator |
A service to fetch the query attributes for the current thread. More... | |
struct | s_mysql_mysql_query_attribute_string |
A service to fetch the query attribute value as a string. More... | |
struct | s_mysql_mysql_query_attribute_isnull |
A service to fetch the query attribute null flag. More... | |
struct | s_mysql_mysql_scheduler |
The Scheduler queueing interface. More... | |
struct | s_mysql_my_signal_handler |
A service to register/deregister a signal handler function callback. More... | |
struct | s_mysql_mysql_stmt_factory |
A service that provides the API to create, and deallocate a statement. More... | |
struct | s_mysql_mysql_stmt_execute |
A service that provides the API to execute prepared statements. More... | |
struct | s_mysql_mysql_stmt_bind |
A service that provides the API to bind the parameters in prepared statements. More... | |
struct | s_mysql_mysql_stmt_result |
A service that provides the API to manage and get info about a result set including fetch row(s) from a result set, get next result set. More... | |
struct | s_mysql_mysql_stmt_diagnostics |
A service that provides the API to get the errors and warnings including fetching the warning, getting error/warning number, error/warning level, error/warning message, SQL state. More... | |
struct | s_mysql_mysql_stmt_metadata |
A service that provides the API to get information about statement metadata including the number of the parameters in a prepared statement and their metatdata. More... | |
struct | s_mysql_mysql_stmt_resultset_metadata |
A service that provides the API to get information about a field or column in a result set including get the number of fields, fetch a field and get information of a field. More... | |
struct | s_mysql_mysql_stmt_get_integer |
A service that provides the API for get integer. More... | |
struct | s_mysql_mysql_stmt_get_unsigned_integer |
A service that provides the API for get unsigned integer. More... | |
struct | s_mysql_mysql_stmt_get_double |
A service that provides the API for get double. More... | |
struct | s_mysql_mysql_stmt_get_time |
A service that provides the API for get time value from a row. More... | |
struct | s_mysql_mysql_stmt_get_string |
A service that provides the API for get string value from a row. More... | |
struct | s_mysql_mysql_status_variable_string |
Service to read the value of a status variable as a string. More... | |
struct | s_mysql_mysql_system_variable_update_string |
Service to set the value of system variables. More... | |
struct | s_mysql_mysql_system_variable_reader |
Fetches the session/global/persist value of a system variable. More... | |
struct | s_mysql_mysql_system_variable_update_integer |
Service to set the value of integer system variables. More... | |
struct | s_mysql_mysql_system_variable_update_default |
Service to set the default value of system variables. More... | |
struct | s_mysql_mysql_thd_attributes |
THD Attributes service allows to obtain data associated with the THD object, which keeps various attributes of the user session. More... | |
struct | s_mysql_psi_tls_channel_v1 |
Service for instrumentation of TLS channel in performance schema. More... | |
struct | s_mysql_reference_caching_channel |
A reference caching channel service. More... | |
struct | s_mysql_thread_cleanup_handler |
A service to cleanup thread resource. More... | |
struct | s_mysql_thread_cleanup_register |
Thread cleanup service allows a OS thread to free resources allocated for specific thread, during thread exit. More... | |
struct | s_mysql_validate_password |
Interfaces to enforce a password policy. More... | |
struct | s_mysql_validate_password_changed_characters |
Service to enforce that new password contains N different characters compared to existing password. More... | |
Typedefs | |
typedef struct s_mysql_mysql_audit_api_connection | mysql_service_mysql_audit_api_connection_t |
A service to generate Audit API events of the connection class (MYSQL_AUDIT_CONNECTION_CLASS). More... | |
typedef struct s_mysql_mysql_audit_api_connection_with_error | mysql_service_mysql_audit_api_connection_with_error_t |
A service to generate Audit API events of the connection class (MYSQL_AUDIT_CONNECTION_CLASS) with the explicitly specified error code value. More... | |
typedef struct s_mysql_component_sys_variable_register | mysql_service_component_sys_variable_register_t |
Service to register variable and get variable value. More... | |
typedef struct s_mysql_component_sys_variable_unregister | mysql_service_component_sys_variable_unregister_t |
Service to unregister variable. More... | |
typedef struct s_mysql_component_thread_cleanup_handler | mysql_service_component_thread_cleanup_handler_t |
A service to cleanup component thread resource. More... | |
typedef struct s_mysql_dynamic_loader_services_loaded_notification | mysql_service_dynamic_loader_services_loaded_notification_t |
A service to notify consumers about services loaded through dynamic loader. More... | |
typedef struct s_mysql_dynamic_loader_services_unload_notification | mysql_service_dynamic_loader_services_unload_notification_t |
A service to notify consumers about services to be unloaded through dynamic loader. More... | |
typedef struct s_mysql_dynamic_privilege_register | mysql_service_dynamic_privilege_register_t |
A service to register and unregister dynamic privileges. More... | |
typedef struct s_mysql_dynamic_privilege_deprecation | mysql_service_dynamic_privilege_deprecation_t |
A service to register and unregister dynamic privileges as deprecated. More... | |
typedef struct s_mysql_group_replication_message_service_send | mysql_service_group_replication_message_service_send_t |
A service that sends content agnostic messages from a member to the group. More... | |
typedef struct s_mysql_group_replication_status_service_v1 | mysql_service_group_replication_status_service_v1_t |
A service to get the status of a member of Group Replication. More... | |
typedef struct s_mysql_host_application_signal | mysql_service_host_application_signal_t |
A service to deliver a signal to host application. More... | |
typedef struct s_mysql_mysql_keyring_iterator | mysql_service_mysql_keyring_iterator_t |
Keyring iterator component service definition, which enables to iterate over items stored within currently used keyring. More... | |
typedef struct s_mysql_external_program_capability_query | mysql_service_external_program_capability_query_t |
A service to query various properties/capabilities of the implementer of s_mysql_external_program_execution service. More... | |
typedef struct s_mysql_external_program_execution | mysql_service_external_program_execution_t |
A service to setup and execute multi-lingual stored procedures. More... | |
typedef struct s_mysql_mysql_admin_session | mysql_service_mysql_admin_session_t |
A service to create an "admin" session that's not a subject to max connection count limits. More... | |
typedef struct s_mysql_mysql_audit_print_service_double_data_source | mysql_service_mysql_audit_print_service_double_data_source_t |
Audit print service allows to obtain data of the double type associated with the THD object, which keeps various data of the user session. More... | |
typedef struct s_mysql_mysql_audit_print_service_longlong_data_source | mysql_service_mysql_audit_print_service_longlong_data_source_t |
Audit print service allows to obtain data of the long long type associated with the THD object, which keeps various data of the user session. More... | |
typedef struct s_mysql_mysql_authentication_registration | mysql_service_mysql_authentication_registration_t |
A service to do registration of fido device. More... | |
typedef struct s_mysql_mysql_text_consumer_factory_v1 | mysql_service_mysql_text_consumer_factory_v1_t |
An implementation of these services will be called as the data resulting from calling mysql_query() service are produced by the server. More... | |
typedef struct s_mysql_mysql_text_consumer_metadata_v1 | mysql_service_mysql_text_consumer_metadata_v1_t |
A service that provides the apis for start_result_metadata, field_metadata, and end_result_metadata. More... | |
typedef struct s_mysql_mysql_text_consumer_row_factory_v1 | mysql_service_mysql_text_consumer_row_factory_v1_t |
A service that provides the apis for start_row, abort_row and end_row. More... | |
typedef struct s_mysql_mysql_text_consumer_error_v1 | mysql_service_mysql_text_consumer_error_v1_t |
A service that provides the apis for handle_ok, handle_error and error. More... | |
typedef struct s_mysql_mysql_text_consumer_get_null_v1 | mysql_service_mysql_text_consumer_get_null_v1_t |
A service that provides the apis for get_null. More... | |
typedef struct s_mysql_mysql_text_consumer_get_integer_v1 | mysql_service_mysql_text_consumer_get_integer_v1_t |
A service that provides the apis for get_integer. More... | |
typedef struct s_mysql_mysql_text_consumer_get_longlong_v1 | mysql_service_mysql_text_consumer_get_longlong_v1_t |
A service that provides the apis for get_longlong. More... | |
typedef struct s_mysql_mysql_text_consumer_get_decimal_v1 | mysql_service_mysql_text_consumer_get_decimal_v1_t |
A service that provides the apis for get_decimal. More... | |
typedef struct s_mysql_mysql_text_consumer_get_double_v1 | mysql_service_mysql_text_consumer_get_double_v1_t |
A service that provides the apis for get_double. More... | |
typedef struct s_mysql_mysql_text_consumer_get_date_time_v1 | mysql_service_mysql_text_consumer_get_date_time_v1_t |
A service that provides the apis for get_date, get_time and get_datatime. More... | |
typedef struct s_mysql_mysql_text_consumer_get_string_v1 | mysql_service_mysql_text_consumer_get_string_v1_t |
A service that provides the apis for get_string. More... | |
typedef struct s_mysql_mysql_text_consumer_client_capabilities_v1 | mysql_service_mysql_text_consumer_client_capabilities_v1_t |
A service that provides the apis for client_capabilities. More... | |
typedef struct s_mysql_mysql_command_factory | mysql_service_mysql_command_factory_t |
A service that provides the apis for mysql command init, info, connect, reset, close, commit, auto_commit and rollback. More... | |
typedef struct s_mysql_mysql_command_thread | mysql_service_mysql_command_thread_t |
A service that provides the apis for mysql command session thread init and thread end. More... | |
typedef struct s_mysql_mysql_command_options | mysql_service_mysql_command_options_t |
A service that provides the apis for mysql command get_option and set_option. More... | |
typedef struct s_mysql_mysql_command_query | mysql_service_mysql_command_query_t |
A service that provides the apis for mysql command query and affected_rows. More... | |
typedef struct s_mysql_mysql_command_query_result | mysql_service_mysql_command_query_result_t |
A service that provides the apis for mysql command, store_result, free_result, more_results, next_result, result_metadata and fetch_row. More... | |
typedef struct s_mysql_mysql_command_field_info | mysql_service_mysql_command_field_info_t |
A service that provides the apis for mysql command field info, fetch_field, num_fields, fetch_fields and field_count. More... | |
typedef struct s_mysql_mysql_command_field_metadata | mysql_service_mysql_command_field_metadata_t |
Fetch the metadata of a service. More... | |
typedef struct s_mysql_mysql_command_error_info | mysql_service_mysql_command_error_info_t |
A service that provides the apis for mysql command error info, mysql_errno, error, sqlstate. More... | |
typedef const char * | my_h_connection_attributes_iterator |
A service to read the connection attributes from the current session It provides a read-only iterator over the attributes. More... | |
typedef struct s_mysql_mysql_current_thread_reader | mysql_service_mysql_current_thread_reader_t |
A service to fetch the current thread id. More... | |
typedef struct s_mysql_mysql_debug_keyword_service | mysql_service_mysql_debug_keyword_service_t |
A service to check if debug keyword status. More... | |
typedef struct s_mysql_mysql_debug_sync_service | mysql_service_mysql_debug_sync_service_t |
Enable capability to process debug_sync point from components. More... | |
typedef struct s_mysql_mysql_keyring_native_key_id | mysql_service_mysql_keyring_native_key_id_t |
A service to read native keybackend id. More... | |
typedef struct s_mysql_mysql_option_tracker_option | mysql_service_mysql_option_tracker_option_t |
Option tracker registration and deregistration services. More... | |
typedef struct s_mysql_mysql_option_tracker_usage | mysql_service_mysql_option_tracker_usage_t |
Option tracker usage marker. More... | |
typedef struct s_mysql_mysql_query_attributes_iterator | mysql_service_mysql_query_attributes_iterator_t |
A service to fetch the query attributes for the current thread. More... | |
typedef struct s_mysql_mysql_query_attribute_string | mysql_service_mysql_query_attribute_string_t |
A service to fetch the query attribute value as a string. More... | |
typedef struct s_mysql_mysql_query_attribute_isnull | mysql_service_mysql_query_attribute_isnull_t |
A service to fetch the query attribute null flag. More... | |
typedef struct s_mysql_mysql_scheduler | mysql_service_mysql_scheduler_t |
The Scheduler queueing interface. More... | |
typedef struct s_mysql_my_signal_handler | mysql_service_my_signal_handler_t |
A service to register/deregister a signal handler function callback. More... | |
typedef struct s_mysql_mysql_stmt_factory | mysql_service_mysql_stmt_factory_t |
A service that provides the API to create, and deallocate a statement. More... | |
typedef struct s_mysql_mysql_stmt_execute | mysql_service_mysql_stmt_execute_t |
A service that provides the API to execute prepared statements. More... | |
typedef struct s_mysql_mysql_stmt_bind | mysql_service_mysql_stmt_bind_t |
A service that provides the API to bind the parameters in prepared statements. More... | |
typedef struct s_mysql_mysql_stmt_result | mysql_service_mysql_stmt_result_t |
A service that provides the API to manage and get info about a result set including fetch row(s) from a result set, get next result set. More... | |
typedef struct s_mysql_mysql_stmt_diagnostics | mysql_service_mysql_stmt_diagnostics_t |
A service that provides the API to get the errors and warnings including fetching the warning, getting error/warning number, error/warning level, error/warning message, SQL state. More... | |
typedef struct s_mysql_mysql_stmt_metadata | mysql_service_mysql_stmt_metadata_t |
A service that provides the API to get information about statement metadata including the number of the parameters in a prepared statement and their metatdata. More... | |
typedef struct s_mysql_mysql_stmt_resultset_metadata | mysql_service_mysql_stmt_resultset_metadata_t |
A service that provides the API to get information about a field or column in a result set including get the number of fields, fetch a field and get information of a field. More... | |
typedef struct s_mysql_mysql_stmt_get_integer | mysql_service_mysql_stmt_get_integer_t |
A service that provides the API for get integer. More... | |
typedef struct s_mysql_mysql_stmt_get_unsigned_integer | mysql_service_mysql_stmt_get_unsigned_integer_t |
A service that provides the API for get unsigned integer. More... | |
typedef struct s_mysql_mysql_stmt_get_double | mysql_service_mysql_stmt_get_double_t |
A service that provides the API for get double. More... | |
typedef struct s_mysql_mysql_stmt_get_time | mysql_service_mysql_stmt_get_time_t |
A service that provides the API for get time value from a row. More... | |
typedef struct s_mysql_mysql_stmt_get_string | mysql_service_mysql_stmt_get_string_t |
A service that provides the API for get string value from a row. More... | |
typedef struct s_mysql_mysql_status_variable_string | mysql_service_mysql_status_variable_string_t |
Service to read the value of a status variable as a string. More... | |
typedef struct s_mysql_mysql_system_variable_update_string | mysql_service_mysql_system_variable_update_string_t |
Service to set the value of system variables. More... | |
typedef struct s_mysql_mysql_system_variable_reader | mysql_service_mysql_system_variable_reader_t |
Fetches the session/global/persist value of a system variable. More... | |
typedef struct s_mysql_mysql_system_variable_update_integer | mysql_service_mysql_system_variable_update_integer_t |
Service to set the value of integer system variables. More... | |
typedef struct s_mysql_mysql_system_variable_update_default | mysql_service_mysql_system_variable_update_default_t |
Service to set the default value of system variables. More... | |
typedef struct s_mysql_mysql_thd_attributes | mysql_service_mysql_thd_attributes_t |
THD Attributes service allows to obtain data associated with the THD object, which keeps various attributes of the user session. More... | |
typedef struct s_mysql_psi_tls_channel_v1 | mysql_service_psi_tls_channel_v1_t |
Service for instrumentation of TLS channel in performance schema. More... | |
typedef struct s_mysql_reference_caching_channel | mysql_service_reference_caching_channel_t |
A reference caching channel service. More... | |
typedef struct s_mysql_thread_cleanup_handler | mysql_service_thread_cleanup_handler_t |
A service to cleanup thread resource. More... | |
typedef struct s_mysql_thread_cleanup_register | mysql_service_thread_cleanup_register_t |
Thread cleanup service allows a OS thread to free resources allocated for specific thread, during thread exit. More... | |
typedef struct s_mysql_validate_password | mysql_service_validate_password_t |
Interfaces to enforce a password policy. More... | |
typedef struct s_mysql_validate_password_changed_characters | mysql_service_validate_password_changed_characters_t |
Service to enforce that new password contains N different characters compared to existing password. More... | |
This is a group of all component service APIs.
See A Service and a Service Implementation for explanation of what a component service is
typedef const char* my_h_connection_attributes_iterator |
A service to read the connection attributes from the current session It provides a read-only iterator over the attributes.
This is some example code to use the iterator:
typedef struct s_mysql_component_sys_variable_register mysql_service_component_sys_variable_register_t |
Service to register variable and get variable value.
typedef struct s_mysql_component_sys_variable_unregister mysql_service_component_sys_variable_unregister_t |
Service to unregister variable.
Make sure to call this for each variable registered.
typedef struct s_mysql_component_thread_cleanup_handler mysql_service_component_thread_cleanup_handler_t |
A service to cleanup component thread resource.
typedef struct s_mysql_dynamic_loader_services_loaded_notification mysql_service_dynamic_loader_services_loaded_notification_t |
A service to notify consumers about services loaded through dynamic loader.
typedef struct s_mysql_dynamic_loader_services_unload_notification mysql_service_dynamic_loader_services_unload_notification_t |
A service to notify consumers about services to be unloaded through dynamic loader.
A service to register and unregister dynamic privileges as deprecated.
Privilege names are in ASCII.
A service to register and unregister dynamic privileges.
Use it to add new privileges to the dynamic list.
Privilege names are in ASCII.
typedef struct s_mysql_external_program_capability_query mysql_service_external_program_capability_query_t |
A service to query various properties/capabilities of the implementer of s_mysql_external_program_execution service.
A service to setup and execute multi-lingual stored procedures.
typedef struct s_mysql_group_replication_message_service_send mysql_service_group_replication_message_service_send_t |
A service that sends content agnostic messages from a member to the group.
This only works if the component is on a server with group replication running and the member state is ONLINE. If server isn't ONLINE message won't be deliver.
After message sent to all members of the group, all components that have registered group_replication_message_service_recv service will be notified.
typedef struct s_mysql_group_replication_status_service_v1 mysql_service_group_replication_status_service_v1_t |
A service to get the status of a member of Group Replication.
This is only available if the component is on a server with Group Replication plugin installed.
A service to deliver a signal to host application.
Typically there'll be just one implementation of this by the main application.
Other parties interested in listening to shutdown may override the default implementation with a broadcast one and have multiple implementations receiving the shutdown signal. Or do message queueing to a set of background threads etc.
typedef struct s_mysql_my_signal_handler mysql_service_my_signal_handler_t |
A service to register/deregister a signal handler function callback.
The server component signal handler will call this callback if a signal occurs. The callback needs to be signal reentrant safe code. Otherwise no guaranees on what happens.
Usage example: auto register_signal_handler_callback(my_signal_handler_callback_t callback) -> bool { SERVICE_PLACEHOLDER(my_signal_handler)->add(SIGSEGV, callback) == 0; } auto unregister_signal_handler_callback(my_signal_handler_callback_t callback) -> bool { return SERVICE_PLACEHOLDER(my_signal_handler)->remove(SIGSEGV, callback) == 0; }
auto handle_segfault_signal(int signum) { Code to handle segfault ... }
If this is used inside another component, at component init(): register_signal_handler_callback(&handle_segfault_signal)
At component deinit(): unregister_signal_handler_callback(&handle_segfault_signal)
typedef struct s_mysql_mysql_admin_session mysql_service_mysql_admin_session_t |
A service to create an "admin" session that's not a subject to max connection count limits.
This service is an extension to the sessions plugin service suite. The MYSQL_SESSION references are compatible with the plugin service.
A service to generate Audit API events of the connection class (MYSQL_AUDIT_CONNECTION_CLASS).
The emit method generates the event in the synchronous way, causing all subscribers to receive it.
typedef struct s_mysql_mysql_audit_api_connection_with_error mysql_service_mysql_audit_api_connection_with_error_t |
A service to generate Audit API events of the connection class (MYSQL_AUDIT_CONNECTION_CLASS) with the explicitly specified error code value.
This service should ONLY be used if we cannot set the THD's Statement Diagnostic Area result code, which is passed along the audit notification chain. The preferred way of generating the event is to rely on THD's internal data as much as possible (mysql_audit_api_connection service)
The emit method generates the event in the synchronous way, causing all subscribers to receive it.
typedef struct s_mysql_mysql_audit_print_service_double_data_source mysql_service_mysql_audit_print_service_double_data_source_t |
Audit print service allows to obtain data of the double type associated with the THD object, which keeps various data of the user session.
It also allows to obtain data not necessarily bound with the user session.
Currently, following data is supported:
The service can be instantiated using the registry service with the "mysql_audit_print_service_double_data_source" name.
Query Time represents query execution time in seconds.
typedef struct s_mysql_mysql_audit_print_service_longlong_data_source mysql_service_mysql_audit_print_service_longlong_data_source_t |
Audit print service allows to obtain data of the long long type associated with the THD object, which keeps various data of the user session.
It also allows to obtain data not necessarily bound with the user session.
Currently, following data is supported:
The service can be instantiated using the registry service with the "mysql_audit_print_service_double_data_source" name.
Query Time represents query execution time in microseconds.
typedef struct s_mysql_mysql_authentication_registration mysql_service_mysql_authentication_registration_t |
A service to do registration of fido device.
A service that provides the apis for mysql command error info, mysql_errno, error, sqlstate.
A service that provides the apis for mysql command init, info, connect, reset, close, commit, auto_commit and rollback.
A service that provides the apis for mysql command field info, fetch_field, num_fields, fetch_fields and field_count.
Fetch the metadata of a service.
Usually used as follows:
A service that provides the apis for mysql command get_option and set_option.
A service that provides the apis for mysql command, store_result, free_result, more_results, next_result, result_metadata and fetch_row.
typedef struct s_mysql_mysql_command_query mysql_service_mysql_command_query_t |
A service that provides the apis for mysql command query and affected_rows.
typedef struct s_mysql_mysql_command_thread mysql_service_mysql_command_thread_t |
A service that provides the apis for mysql command session thread init and thread end.
A service to fetch the current thread id.
Use in conjunction with all the related services that operate on thread ids
A service to check if debug keyword status.
The debug keywords are used to implement various functionality for debugging. See my_dbug.h for more info. One of the functionality is DBUG_EXECUTE_IF.
This service lookup_debug_keyword() is used to implement DBUG_EXECUTE_IF for use in components. The DBUG_EXECUTE_IF is implemented in util/debug_execute_if.h
The usage remains the same way as used in server. E.g., DBUG_EXECUTE_IF("debug point", { ...code... return false; });
Enable capability to process debug_sync point from components.
MySQL server provides DEBUG_SYNC macro to enable controlled testing. This service makes the same functionality to component.
The usage remains the same way as used in server. E.g., DEBUG_SYNC("debug sync point");
Keyring iterator component service definition, which enables to iterate over items stored within currently used keyring.
A service to read native keybackend id.
Typically there'll be just one implementation of this by the main application.
Option tracker registration and deregistration services.
This is a service that will allow registering an option. Each option has a name. The name is UTF8mb4 and is unique in the list. Manipulating the option list is an "expesive" operation since there is a global lock involved.
Each code container (a component or a plugin) should register its options during its initialization and should unregister them during its deinitialization.
Option tracker usage marker.
Sets usage data for a given option. Internally stores into the system table.
It gets the value for cluster_id from the system variable group_replication_group_name (defined by the GR plugin). If the plugin is not installed it uses empty string.
It gets the value for server_id from the system variable server_uuid.
A service to fetch the query attribute null flag.
Use in conjunction with mysql_query_atrributes_iterator service
A service to fetch the query attribute value as a string.
Use in conjunction with mysql_query_atrributes_iterator service
typedef struct s_mysql_mysql_query_attributes_iterator mysql_service_mysql_query_attributes_iterator_t |
A service to fetch the query attributes for the current thread.
Use in conjunction with all the related services that operate on thread ids
typedef struct s_mysql_mysql_scheduler mysql_service_mysql_scheduler_t |
The Scheduler queueing interface.
This is a service that will allow registering a callback to be called every X seconds.
Each callback has a name. And a comment for the DBA to check.
A caller registers a callback together with its argument and gets a handle back. The callback will be put in rotation immediately and will be called after the defined interval. And it will keep being called until it's unregisterered using the handle.
Passing an argument is useful if you are to reuse the callback function to operate on many different states through registering it in multiple scheduled events. Having the argument passed down from the registering code to the callback saves the need of the callback to consult a global structure in a multi- thread safe fashion.
To use it one would do something like this:
Service to read the value of a status variable as a string.
Used approximately as follows:
typedef struct s_mysql_mysql_stmt_bind mysql_service_mysql_stmt_bind_t |
A service that provides the API to bind the parameters in prepared statements.
Usage example:
For first parameter SERVICE_PLACEHOLDER(mysql_stmt_bind)->bind_param(statement, 0, false, MYSQL_TYPE_LONG, false, 4, 1, nullptr, 0);
A service that provides the API to get the errors and warnings including fetching the warning, getting error/warning number, error/warning level, error/warning message, SQL state.
In addition, for INSERT/UPDATE/DELETE, the service provides the API to get the number of affected rows and last insert ID.
Usage example: For INSERT/UPDATE/DELETE/... statements, to get the number of affected rows and last insert id.
uint64_t num_affected_rows; SERVICE_PLACEHOLDER(mysql_stmt_diagnostics)->affected_rows(statement, &num_affected_rows) auto last_insert_id = uint64_t{}; SERVICE_PLACEHOLDER(mysql_stmt_diagnostics)->insert_id(statement, &last_insert_id)
To get the diagnostics information auto error_number = uint64_t{}; SERVICE_PLACEHOLDER(mysql_stmt_diagnostics)->error_id(statement, &error_number); char const *sql_errmsg = nullptr; SERVICE_PLACEHOLDER(mysql_stmt_diagnostics)->error(statement, &sql_errmsg); char const *sql_state = nullptr; SERVICE_PLACEHOLDER(mysql_stmt_diagnostics)->get_sql_state(statement, &sql_state); auto warning_count = uint32_t{}; SERVICE_PLACEHOLDER(mysql_stmt_diagnostics)->num_warnings(statement, &warning_count);
for(size_t warn_index = 0; warn_index < warning_count; warn_index++) { my_h_warning warning = nullptr; SERVICE_PLACEHOLDER(mysql_stmt_diagnostics)->get_warning(statement, warn_index, &warning); auto level = uint32_t{}; SERVICE_PLACEHOLDER(mysql_stmt_diagnostics)->warning_level(warning, &level);
Similarly for code and message }
typedef struct s_mysql_mysql_stmt_execute mysql_service_mysql_stmt_execute_t |
A service that provides the API to execute prepared statements.
Usage example: Prepare a statement my_h_statement statement = nullptr; SERVICE_PLACEHOLDER(mysql_stmt_factory)->init(&statement); SERVICE_PLACEHOLDER(mysql_stmt_execute)->prepare("SELECT * FROM my_table WHERE col_c = ?", statement) SERVICE_PLACEHOLDER(mysql_stmt_bind)->bind_param(statement, 0, false, MYSQL_TYPE_LONG, false, 4, 1, nullptr, 0);
To reset the parameter to bind it with new values SERVICE_PLACEHOLDER(mysql_stmt_execute)->reset(statement)
Execute the statement SERVICE_PLACEHOLDER(mysql_stmt_execute)->execute(statement)
typedef struct s_mysql_mysql_stmt_factory mysql_service_mysql_stmt_factory_t |
A service that provides the API to create, and deallocate a statement.
Usage example for prepared statement: my_h_statement statement = nullptr; SERVICE_PLACEHOLDER(mysql_stmt_factory)->init(&statement);
SERVICE_PLACEHOLDER(mysql_stmt_attributes)->set("charset_name", "utf8mb4");
SERVICE_PLACEHOLDER(mysql_stmt_execute)->prepare("SELECT * FROM ?", statement);
uint32_t parameter_count; SERVICE_PLACEHOLDER(mysql_stmt_metadata)->param_count(statement, ¶meter_count);
For first parameter SERVICE_PLACEHOLDER(mysql_stmt_bind)->bind_param(statement, 0, false, MYSQL_TYPE_LONG, false, 4, 1, nullptr, 0);
SERVICE_PLACEHOLDER(mysql_stmt_execute)->execute(statement)
my_h_row row = nullptr; SERVICE_PLACEHOLDER(mysql_stmt_result)->fetch(statement, &row); SERVICE_PLACEHOLDER(mysql_stmt_factory)->close(statement)
Usage example for regular statement: my_h_statement statement = nullptr; SERVICE_PLACEHOLDER(mysql_stmt_factory)->init(&statement);
SERVICE_PLACEHOLDER(mysql_stmt_attributes)->set("charset_name", "utf8mb4");
SERVICE_PLACEHOLDER(mysql_stmt_execute_direct)->execute("SELECT * FROM my_table", statement);
my_h_row row = nullptr; SERVICE_PLACEHOLDER(mysql_stmt_result)->fetch(statement, &row); SERVICE_PLACEHOLDER(mysql_stmt_factory)->close(statement)
A service that provides the API for get double.
A service that provides the API for get integer.
Usage example:
autp int_val = int64_t{}; bool is_null; SERVICE_PLACEHOLDER(mysql_stmt_get_integer)->get(row, column_index, &int_val, &is_null)
A service that provides the API for get string value from a row.
auto result = mysql_cstring_with_length{}; auto is_null = false; if (SERVICE_PLACEHOLDER(mysql_stmt_get_string) ->get(row, column_index, &result, &is_null) == MYSQL_FAILURE) { return {}; }
typedef struct s_mysql_mysql_stmt_get_time mysql_service_mysql_stmt_get_time_t |
A service that provides the API for get time value from a row.
auto result = Time_t{}; auto is_null = false;
if (SERVICE_PLACEHOLDER(mysql_stmt_get_time) ->get(row, column_index, &result.hour, &result.minute, &result.second, &result.microseconds, &result.negative, &is_null) == MYSQL_FAILURE) return {};
typedef struct s_mysql_mysql_stmt_get_unsigned_integer mysql_service_mysql_stmt_get_unsigned_integer_t |
A service that provides the API for get unsigned integer.
typedef struct s_mysql_mysql_stmt_metadata mysql_service_mysql_stmt_metadata_t |
A service that provides the API to get information about statement metadata including the number of the parameters in a prepared statement and their metatdata.
For prepared statement, to get the number of parameters uint64_t num_parameters; SERVICE_PLACEHOLDER(mysql_stmt_metadata)->param_count(statement, &num_parameters)
typedef struct s_mysql_mysql_stmt_result mysql_service_mysql_stmt_result_t |
A service that provides the API to manage and get info about a result set including fetch row(s) from a result set, get next result set.
A result set contains the result of an execution. It is a list of rows, each row is a list of values where each value corresponds to a column.
Usage example: Iterate over the rows in a result set for result set with data (num_fields != 0) For in-depth example, check test_execute_prepared_statement.cc and test_execute_regular_statement.cc my_h_row row = nullptr; do { SERVICE_PLACEHOLDER(mysql_stmt_result)->fetch(statement, &row); if (row == nullptr) { break; } Get data from a row using row services } while (true)
Iterate over result sets auto has_next_result_set = bool{}; do { SERVICE_PLACEHOLDER(mysql_stmt_result)->next_result(statement, &has_next_result_set); } while(has_next_result_set);
A service that provides the API to get information about a field or column in a result set including get the number of fields, fetch a field and get information of a field.
More info: https://dev.mysql.com/doc/c-api/8.0/en/mysql-stmt-field-count.html
Usage example:
auto num_fields = uint32_t{}; SERVICE_PLACEHOLDER(mysql_stmt_resultset_metadata)->field_count(statement, &num_fields);
my_h_field field = nullptr; for(size_t field_index = 0; field_index < num_fields; field_index++) { SERVICE_PLACEHOLDER(mysql_stmt_resultset_metadata)->fetch_field(statement, field_index, &field);
char* field_name = nullptr; SERVICE_PLACEHOLDER(mysql_stmt_resultset_metadata)->field_info(field, "col_name", &field_name);
Do similarly for other field metadata }
Fetches the session/global/persist value of a system variable.
This is an example of using the service:
Call this to get the session/global/persist value of a variable. You can access both the component variables (SELECT ["@@"][scope "."]component_name "." variable_name; where scope ::= SESSION | LOCAL | GLOBAL) and the "legacy" system variables (SELECT ["@@"][scope "."].variable_name; where scope ::= SESSION | LOCAL | GLOBAL) that are registered by the server component. To access the latter you need to pass "mysql_server" (lowercase) as a component name.
A pointer to the value is returned into the val input/output argument. And the length of the value (as applicable) is returned into the out_length_of_val argument.
In case when the user buffer was too small to copy the value, the call fails and needed buffer size is returned by 'out_length_of_val'.
Decide on a variable storage type among one of "GLOBAL" or "SESSION"
Typical use (char * variable):
typedef struct s_mysql_mysql_system_variable_update_default mysql_service_mysql_system_variable_update_default_t |
Service to set the default value of system variables.
This is an example of using the service:
typedef struct s_mysql_mysql_system_variable_update_integer mysql_service_mysql_system_variable_update_integer_t |
Service to set the value of integer system variables.
Passing non-NULL THD input to setter methods means that the operation will be executed within the scope of existing transaction, thus any operation side effects impacting transaction itself (for example it may generate an SQL error that it stores into the current THD). If using existing THD, security context of the thread is checked to make sure that required privileges exist. Passing NULL makes a temporary THD created as a execution context (and destroyed afterwards), i.e. no impacts on existing transactions. It doesn't make sense to change SESSION variable on a temporary THD, so this operation will generate error.
This is an example of using the service:
typedef struct s_mysql_mysql_system_variable_update_string mysql_service_mysql_system_variable_update_string_t |
Service to set the value of system variables.
This is an example of using the service:
typedef struct s_mysql_mysql_text_consumer_client_capabilities_v1 mysql_service_mysql_text_consumer_client_capabilities_v1_t |
A service that provides the apis for client_capabilities.
A service that provides the apis for handle_ok, handle_error and error.
typedef struct s_mysql_mysql_text_consumer_factory_v1 mysql_service_mysql_text_consumer_factory_v1_t |
An implementation of these services will be called as the data resulting from calling mysql_query() service are produced by the server.
Most often the default implementation of this service that will cache the data into a memory structure into the MYSQL handle will be used. But this will only work if the resultset expected is relatively small.
If one wants to avoid the memory caching and process the data SAX style as they are returned by the SQL execution define, they should provide their own implementation of this service that will process the data differently at the time of their production.
A service that provides the apis for start and end.
typedef struct s_mysql_mysql_text_consumer_get_date_time_v1 mysql_service_mysql_text_consumer_get_date_time_v1_t |
A service that provides the apis for get_date, get_time and get_datatime.
typedef struct s_mysql_mysql_text_consumer_get_decimal_v1 mysql_service_mysql_text_consumer_get_decimal_v1_t |
A service that provides the apis for get_decimal.
typedef struct s_mysql_mysql_text_consumer_get_double_v1 mysql_service_mysql_text_consumer_get_double_v1_t |
A service that provides the apis for get_double.
and error.
typedef struct s_mysql_mysql_text_consumer_get_integer_v1 mysql_service_mysql_text_consumer_get_integer_v1_t |
A service that provides the apis for get_integer.
typedef struct s_mysql_mysql_text_consumer_get_longlong_v1 mysql_service_mysql_text_consumer_get_longlong_v1_t |
A service that provides the apis for get_longlong.
typedef struct s_mysql_mysql_text_consumer_get_null_v1 mysql_service_mysql_text_consumer_get_null_v1_t |
A service that provides the apis for get_null.
typedef struct s_mysql_mysql_text_consumer_get_string_v1 mysql_service_mysql_text_consumer_get_string_v1_t |
A service that provides the apis for get_string.
typedef struct s_mysql_mysql_text_consumer_metadata_v1 mysql_service_mysql_text_consumer_metadata_v1_t |
A service that provides the apis for start_result_metadata, field_metadata, and end_result_metadata.
typedef struct s_mysql_mysql_text_consumer_row_factory_v1 mysql_service_mysql_text_consumer_row_factory_v1_t |
A service that provides the apis for start_row, abort_row and end_row.
typedef struct s_mysql_mysql_thd_attributes mysql_service_mysql_thd_attributes_t |
THD Attributes service allows to obtain data associated with the THD object, which keeps various attributes of the user session.
Currently, following attributes are supported:
The service can be instantiated using the registry service with the "mysql_thd_attributes" name.
Query Digest represents converted SQL statement to normalized form. The code below demonstrates how query digest can be obtained from the service.
The buffer can be fetched using the code below:
After the string content has been copied into another buffer, it must be destroyed:
Query text represents complete SQL text currently being executed within a given session. The example code is identical to the one for Query Digest, the only difference is that attribute name "sql_text" should be used in this case.
Host or IP text contains host or IP (if host unavailable) belonging to a client associated with a given session. The example code is identical to the one for Query Digest, the only difference is that attribute name "host_or_ip" should be used in this case.
Schema text contains a name of database currently in use by a client associated with a given session. The example code is identical to the one for Query Digest, the only difference is that attribute name "schema" should be used in this case.
typedef struct s_mysql_psi_tls_channel_v1 mysql_service_psi_tls_channel_v1_t |
Service for instrumentation of TLS channel in performance schema.
A reference caching channel service.
The goal of this service is to ensure that event producers spend a MINIMAL amount of time in the emitting code when there are no consumers of the produced events.
An event consumer is an implementation of a component service. An event producer is a piece of code that wants to inform all currently registered event consumers about an event. A channel is a device that serves as a singleton of all reference caches for all threads that are to produce events. A reference cache is something each thread producing events must maintain for its lifetime and use it to find the references to event consumers it needs to call.
At init time the event consumer will register implementations of any of the services it's interested in receiving notifications for.
Then optionally it might force a channel invalidation to make sure all existing event producers will start sending notifications to it immediately. Or it can just sit and wait for the natural producer's reference cache refresh cycles to kick in.
Now it is receiving notifications from all event producers as they come.
When it wishes to no longer receive notifications it needs to mark itself as invisible for reference cache fill-ins. In this way all reference cache flushes will not pick this implementation up even if it's still registered in the registry.
Eventually all active references will be removed by the natural producers flush cycles. The consumer may choose to expedite this by triggering a channel invalidation.
As with all service implementations, when all references to the services are released it can unload.
An event producer will usually start at init time by creating channel(s).
Then, for each thread wishing to produce events, a reference cache must be created and maintained until the thread will no longer be producing events.
Now the thread can produce events using the reference cache. This is done by calling the get method and then iterating over the resulting set of references and calling each one in turn as one would normally do for registry service references. It is assumed that the references are owned by the cache and thus they should not be released.
With some cyclical (e.g. at the end of each statement or something) the event producing thread needs to flush the cache. This is to ensure that references to event consumers are not held for very long and that new event consumers are picked up. However flushing the cache is a relatively expensive operation and thus a balance between the number of events produced and the cache being flushed must be achieved.
Channels are something each event producer must have to produce events. Channels are to be created by a single thread before the first event is ever produced. And, once created they are to be kept until after the last event is produced.
Channels serve as singletons for caches and you only need one channel instance per event producer component. There usually will be multiple caches (one per event producing thread) per channel.
Creating and destroying a channel is a relatively "expensive" operation that might involve some synchronization and should not be done frequently.
Channels exist to allow a non-related thread to trigger invalidation of all currently active caches on that channel. This is necessary when for example event consumers are registered and are about to be removed.
Invalidating a channel is a thread-safe operation that can be invoked without synchronization at any time.
Each channel is associated with a specific set of service names.
The names are stored and used in event caches to handle all implementations of that particular service.
A service to cleanup thread resource.
Thread cleanup service allows a OS thread to free resources allocated for specific thread, during thread exit.
Component can register for thread cleanup handler, for desired OS threads.
At thread exit, the service 'thread_cleanup_handler' implemented by the component is invoked by MySQL server.
The service can be instantiated using the registry service with the "thread_cleanup_register" name.
The code below demonstrates way to register thread cleanup for a thread from a component. Note that we cannot deregister thread cleanup event. In case the component is uninstalled, then the thread cleanup is NO-OP.
typedef struct s_mysql_validate_password_changed_characters mysql_service_validate_password_changed_characters_t |
Service to enforce that new password contains N different characters compared to existing password.
typedef struct s_mysql_validate_password mysql_service_validate_password_t |
Interfaces to enforce a password policy.
The policy is enfoced through two methods 1) validate() that answers the question of whether this password is good enough or not.
2) get_strength() that can be used by password changing UIs to display a password strength meter in the range of [0-100] as the user enters a password.