Skip to content

Commit d64511f

Browse files
author
V S Murthy Sidagam
committed
WL#15535 Allow components to register and use session scope system variables
Currently the component_sys_variable_register/component_sys_variable_unregister services support registering only GLOBAL system variables. Extend these to also support session level (SET SESSION) system variables. Change-Id: I0901b7cf59bf878a846253c49094f3c83b866726
1 parent 37112c1 commit d64511f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1911
-427
lines changed

components/libminchassis/gunit_harness/include/mock/component_sys_variable_all_empty.cc

+17
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,11 @@ along with this program; if not, write to the Free Software
2222
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
2323

2424
#include <stdio.h>
25+
#include "my_compiler.h"
2526
#include "mysql/components/component_implementation.h"
2627
#include "mysql/components/service_implementation.h"
2728
#include "mysql/components/services/component_sys_var_service.h"
29+
#include "mysql/components/services/mysql_system_variable.h"
2830

2931
namespace mysql_service_simple_error_log_spc {
3032

@@ -44,18 +46,33 @@ static DEFINE_BOOL_METHOD(get_variable, (const char * /*component_name*/,
4446
return false;
4547
}
4648

49+
static DEFINE_BOOL_METHOD(get, (MYSQL_THD /*thd handle*/,
50+
const char * /*variable type*/,
51+
const char * /*component_name*/,
52+
const char * /*name*/, void ** /*val*/,
53+
size_t * /*out_length_of_val*/)) {
54+
return false;
55+
}
56+
4757
static DEFINE_BOOL_METHOD(unregister_variable, (const char * /*component_name*/,
4858
const char * /*name*/)) {
4959
return false;
5060
}
5161

5262
} // namespace mysql_service_simple_error_log_spc
5363

64+
MY_COMPILER_DIAGNOSTIC_PUSH()
65+
MY_COMPILER_CLANG_DIAGNOSTIC_IGNORE("-Wdeprecated-declarations")
5466
BEGIN_SERVICE_IMPLEMENTATION(HARNESS_COMPONENT_NAME,
5567
component_sys_variable_register)
5668
mysql_service_simple_error_log_spc::register_variable,
5769
mysql_service_simple_error_log_spc::get_variable,
5870
END_SERVICE_IMPLEMENTATION();
71+
MY_COMPILER_DIAGNOSTIC_POP()
72+
73+
BEGIN_SERVICE_IMPLEMENTATION(HARNESS_COMPONENT_NAME,
74+
mysql_system_variable_reader)
75+
mysql_service_simple_error_log_spc::get, END_SERVICE_IMPLEMENTATION();
5976

6077
BEGIN_SERVICE_IMPLEMENTATION(HARNESS_COMPONENT_NAME,
6178
component_sys_variable_unregister)

components/logging/log_filter_dragnet.cc

+6-3
Original file line numberDiff line numberDiff line change
@@ -80,12 +80,14 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
8080

8181
#include <mysql/components/services/component_status_var_service.h>
8282
#include <mysql/components/services/component_sys_var_service.h>
83+
#include <mysql/components/services/mysql_system_variable.h>
8384
#include <mysql/plugin.h>
8485

8586
#include "../sql/set_var.h"
8687

8788
REQUIRES_SERVICE_PLACEHOLDER(component_sys_variable_register);
8889
REQUIRES_SERVICE_PLACEHOLDER(component_sys_variable_unregister);
90+
REQUIRES_SERVICE_PLACEHOLDER(mysql_system_variable_reader);
8991
REQUIRES_SERVICE_PLACEHOLDER(status_variable_registration);
9092

9193
STR_CHECK_ARG(rules) values_filter_rules; ///< limits and default for sysvar
@@ -1690,9 +1692,9 @@ mysql_service_status_t log_filter_init() {
16901692
(void *)&values_filter_rules, (void *)&log_error_filter_rules) ||
16911693
mysql_service_status_variable_registration->register_variable(
16921694
(SHOW_VAR *)&show_var_filter_rules_decompile) ||
1693-
mysql_service_component_sys_variable_register->get_variable(
1694-
LOG_FILTER_LANGUAGE_NAME, LOG_FILTER_SYSVAR_NAME, (void **)&var_value,
1695-
&var_len) ||
1695+
mysql_service_mysql_system_variable_reader->get(
1696+
nullptr, "GLOBAL", LOG_FILTER_LANGUAGE_NAME, LOG_FILTER_SYSVAR_NAME,
1697+
(void **)&var_value, &var_len) ||
16961698
((rr = log_filter_dragnet_set(log_filter_dragnet_rules, var_value,
16971699
&state)) != 0)) {
16981700
/*
@@ -1757,6 +1759,7 @@ PROVIDES_SERVICE(log_filter_dragnet, log_service), END_COMPONENT_PROVIDES();
17571759
BEGIN_COMPONENT_REQUIRES(log_filter_dragnet)
17581760
REQUIRES_SERVICE(component_sys_variable_register),
17591761
REQUIRES_SERVICE(component_sys_variable_unregister),
1762+
REQUIRES_SERVICE(mysql_system_variable_reader),
17601763
REQUIRES_SERVICE(status_variable_registration),
17611764
REQUIRES_SERVICE(log_builtins), REQUIRES_SERVICE(log_builtins_string),
17621765
REQUIRES_SERVICE(log_builtins_filter), REQUIRES_SERVICE(log_builtins_tmp),

components/logging/log_sink_syseventlog.cc

+9-6
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
3434
#include <mysql/components/service_implementation.h>
3535

3636
#include <mysql/components/services/component_sys_var_service.h>
37+
#include <mysql/components/services/mysql_system_variable.h>
3738
#include <mysql/plugin.h>
3839

3940
#include "../sql/set_var.h"
@@ -96,6 +97,7 @@ static bool inited = false; /**< component initialized */
9697
// components we'll be using
9798
REQUIRES_SERVICE_PLACEHOLDER(component_sys_variable_register);
9899
REQUIRES_SERVICE_PLACEHOLDER(component_sys_variable_unregister);
100+
REQUIRES_SERVICE_PLACEHOLDER(mysql_system_variable_reader);
99101

100102
REQUIRES_SERVICE_PLACEHOLDER(log_builtins);
101103
REQUIRES_SERVICE_PLACEHOLDER(log_builtins_string);
@@ -491,8 +493,8 @@ static int sysvar_install_tag(void) {
491493
"default ident of '" PREFIX "', connected by a hyphen.",
492494
sysvar_check_tag, sysvar_update_tag, (void *)&values_tag,
493495
(void *)&buffer_tag) ||
494-
mysql_service_component_sys_variable_register->get_variable(
495-
MY_NAME, OPT_TAG, (void **)&var_value, &var_len))
496+
mysql_service_mysql_system_variable_reader->get(
497+
nullptr, "GLOBAL", MY_NAME, OPT_TAG, (void **)&var_value, &var_len))
496498
goto done; /* purecov: inspected */
497499

498500
/*
@@ -620,8 +622,8 @@ static int sysvar_install_fac(void) {
620622
"identify as a facility of the given type (to aid in log filtering).",
621623
sysvar_check_fac, sysvar_update_fac, (void *)&values_fac,
622624
(void *)&buffer_fac) ||
623-
mysql_service_component_sys_variable_register->get_variable(
624-
MY_NAME, OPT_FAC, (void **)&var_value, &var_len))
625+
mysql_service_mysql_system_variable_reader->get(
626+
nullptr, "GLOBAL", MY_NAME, OPT_FAC, (void **)&var_value, &var_len))
625627
goto done; /* purecov: inspected */
626628

627629
/*
@@ -710,8 +712,8 @@ static int sysvar_install_pid(void) {
710712
(void *)&log_syslog_include_pid) ||
711713

712714
// get variable in case it was PERSISTed
713-
mysql_service_component_sys_variable_register->get_variable(
714-
MY_NAME, OPT_PID, (void **)&var_value, &var_len))
715+
mysql_service_mysql_system_variable_reader->get(
716+
nullptr, "GLOBAL", MY_NAME, OPT_PID, (void **)&var_value, &var_len))
715717
goto done; /* purecov: inspected */
716718

717719
// set the (possibly PERSISTed) value we received from the server
@@ -959,6 +961,7 @@ PROVIDES_SERVICE(log_sink_syseventlog, log_service), END_COMPONENT_PROVIDES();
959961
BEGIN_COMPONENT_REQUIRES(log_sink_syseventlog)
960962
REQUIRES_SERVICE(component_sys_variable_register),
961963
REQUIRES_SERVICE(component_sys_variable_unregister),
964+
REQUIRES_SERVICE(mysql_system_variable_reader),
962965
REQUIRES_SERVICE(log_builtins), REQUIRES_SERVICE(log_builtins_string),
963966
REQUIRES_SERVICE(log_builtins_syseventlog),
964967
#ifdef _WIN32

components/mysqlbackup/backup_page_tracker.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -387,8 +387,8 @@ long long Backup_page_tracker::page_track_get_changed_pages(UDF_INIT *,
387387
void *p = &mysqlbackup_backupdir;
388388
size_t var_len = 1023;
389389

390-
mysql_service_component_sys_variable_register->get_variable(
391-
"mysql_server", "datadir", (void **)&p, &var_len);
390+
mysql_service_mysql_system_variable_reader->get(
391+
nullptr, "GLOBAL", "mysql_server", "datadir", (void **)&p, &var_len);
392392
if (var_len == 0) return 2;
393393

394394
std::string changed_pages_file_dir =

components/mysqlbackup/mysqlbackup.cc

+2
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,7 @@ REQUIRES_SERVICE_PLACEHOLDER(log_builtins);
386386
REQUIRES_SERVICE_PLACEHOLDER(log_builtins_string);
387387
REQUIRES_SERVICE_PLACEHOLDER(component_sys_variable_register);
388388
REQUIRES_SERVICE_PLACEHOLDER(component_sys_variable_unregister);
389+
REQUIRES_SERVICE_PLACEHOLDER(mysql_system_variable_reader);
389390
REQUIRES_SERVICE_PLACEHOLDER(status_variable_registration);
390391
REQUIRES_SERVICE_PLACEHOLDER(udf_registration);
391392
REQUIRES_SERVICE_PLACEHOLDER(mysql_thd_security_context);
@@ -405,6 +406,7 @@ BEGIN_COMPONENT_REQUIRES(mysqlbackup)
405406
REQUIRES_SERVICE(registry), REQUIRES_SERVICE(log_builtins),
406407
REQUIRES_SERVICE(log_builtins_string),
407408
REQUIRES_SERVICE(component_sys_variable_register),
409+
REQUIRES_SERVICE(mysql_system_variable_reader),
408410
REQUIRES_SERVICE(component_sys_variable_unregister),
409411
REQUIRES_SERVICE(status_variable_registration),
410412
REQUIRES_SERVICE(udf_registration),

components/mysqlbackup/mysqlbackup.h

+2
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
3131
#include <mysql/components/services/dynamic_privilege.h>
3232
#include <mysql/components/services/log_builtins.h>
3333
#include <mysql/components/services/mysql_current_thread_reader.h>
34+
#include <mysql/components/services/mysql_system_variable.h>
3435
#include <mysql/components/services/psi_memory_service.h>
3536
#include <mysql/components/services/security_context.h>
3637
#include <mysql/components/services/udf_registration.h>
@@ -44,6 +45,7 @@ extern REQUIRES_SERVICE_PLACEHOLDER(registry);
4445
extern REQUIRES_SERVICE_PLACEHOLDER(log_builtins);
4546
extern REQUIRES_SERVICE_PLACEHOLDER(log_builtins_string);
4647
extern REQUIRES_SERVICE_PLACEHOLDER(component_sys_variable_register);
48+
extern REQUIRES_SERVICE_PLACEHOLDER(mysql_system_variable_reader);
4749
extern REQUIRES_SERVICE_PLACEHOLDER(component_sys_variable_unregister);
4850
extern REQUIRES_SERVICE_PLACEHOLDER(status_variable_registration);
4951
extern REQUIRES_SERVICE_PLACEHOLDER(udf_registration);

components/test/CMakeLists.txt

+5-1
Original file line numberDiff line numberDiff line change
@@ -186,4 +186,8 @@ MYSQL_ADD_COMPONENT(test_mysql_signal_handler
186186
MODULE_ONLY
187187
TEST_ONLY
188188
)
189-
189+
MYSQL_ADD_COMPONENT(test_session_var_service
190+
test_session_var_service.cc
191+
MODULE_ONLY
192+
TEST_ONLY
193+
)

0 commit comments

Comments
 (0)