413
class sys_var_thd_ulong :public sys_var_thd
413
class sys_var_session_ulong :public sys_var_session
415
415
sys_check_func check_func;
417
417
ulong SV::*offset;
418
sys_var_thd_ulong(sys_var_chain *chain, const char *name_arg,
418
sys_var_session_ulong(sys_var_chain *chain, const char *name_arg,
419
419
ulong SV::*offset_arg,
420
420
sys_check_func c_func= NULL,
421
421
sys_after_update_func au_func= NULL,
422
422
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
423
:sys_var_thd(name_arg, au_func, binlog_status_arg), check_func(c_func),
423
:sys_var_session(name_arg, au_func, binlog_status_arg), check_func(c_func),
424
424
offset(offset_arg)
425
425
{ chain_sys_var(chain); }
426
bool check(Session *thd, set_var *var);
427
bool update(Session *thd, set_var *var);
428
void set_default(Session *thd, enum_var_type type);
426
bool check(Session *session, set_var *var);
427
bool update(Session *session, set_var *var);
428
void set_default(Session *session, enum_var_type type);
429
429
SHOW_TYPE show_type() { return SHOW_LONG; }
430
unsigned char *value_ptr(Session *thd, enum_var_type type, LEX_STRING *base);
430
unsigned char *value_ptr(Session *session, enum_var_type type, LEX_STRING *base);
434
class sys_var_thd_ha_rows :public sys_var_thd
434
class sys_var_session_ha_rows :public sys_var_session
437
437
ha_rows SV::*offset;
438
sys_var_thd_ha_rows(sys_var_chain *chain, const char *name_arg,
438
sys_var_session_ha_rows(sys_var_chain *chain, const char *name_arg,
439
439
ha_rows SV::*offset_arg)
440
:sys_var_thd(name_arg), offset(offset_arg)
440
:sys_var_session(name_arg), offset(offset_arg)
441
441
{ chain_sys_var(chain); }
442
sys_var_thd_ha_rows(sys_var_chain *chain, const char *name_arg,
442
sys_var_session_ha_rows(sys_var_chain *chain, const char *name_arg,
443
443
ha_rows SV::*offset_arg,
444
444
sys_after_update_func func)
445
:sys_var_thd(name_arg,func), offset(offset_arg)
445
:sys_var_session(name_arg,func), offset(offset_arg)
446
446
{ chain_sys_var(chain); }
447
bool update(Session *thd, set_var *var);
448
void set_default(Session *thd, enum_var_type type);
447
bool update(Session *session, set_var *var);
448
void set_default(Session *session, enum_var_type type);
449
449
SHOW_TYPE show_type() { return SHOW_HA_ROWS; }
450
unsigned char *value_ptr(Session *thd, enum_var_type type, LEX_STRING *base);
450
unsigned char *value_ptr(Session *session, enum_var_type type, LEX_STRING *base);
454
class sys_var_thd_uint64_t :public sys_var_thd
454
class sys_var_session_uint64_t :public sys_var_session
457
457
uint64_t SV::*offset;
458
458
bool only_global;
459
sys_var_thd_uint64_t(sys_var_chain *chain, const char *name_arg,
459
sys_var_session_uint64_t(sys_var_chain *chain, const char *name_arg,
460
460
uint64_t SV::*offset_arg)
461
:sys_var_thd(name_arg), offset(offset_arg)
461
:sys_var_session(name_arg), offset(offset_arg)
462
462
{ chain_sys_var(chain); }
463
sys_var_thd_uint64_t(sys_var_chain *chain, const char *name_arg,
463
sys_var_session_uint64_t(sys_var_chain *chain, const char *name_arg,
464
464
uint64_t SV::*offset_arg,
465
465
sys_after_update_func func, bool only_global_arg)
466
:sys_var_thd(name_arg, func), offset(offset_arg),
466
:sys_var_session(name_arg, func), offset(offset_arg),
467
467
only_global(only_global_arg)
468
468
{ chain_sys_var(chain); }
469
bool update(Session *thd, set_var *var);
470
void set_default(Session *thd, enum_var_type type);
469
bool update(Session *session, set_var *var);
470
void set_default(Session *session, enum_var_type type);
471
471
SHOW_TYPE show_type() { return SHOW_LONGLONG; }
472
unsigned char *value_ptr(Session *thd, enum_var_type type, LEX_STRING *base);
473
bool check(Session *thd, set_var *var);
472
unsigned char *value_ptr(Session *session, enum_var_type type, LEX_STRING *base);
473
bool check(Session *session, set_var *var);
474
474
bool check_default(enum_var_type type)
476
476
return type == OPT_GLOBAL && !option_limits;
485
class sys_var_thd_bool :public sys_var_thd
485
class sys_var_session_bool :public sys_var_session
488
488
bool SV::*offset;
489
sys_var_thd_bool(sys_var_chain *chain, const char *name_arg, bool SV::*offset_arg)
490
:sys_var_thd(name_arg), offset(offset_arg)
489
sys_var_session_bool(sys_var_chain *chain, const char *name_arg, bool SV::*offset_arg)
490
:sys_var_session(name_arg), offset(offset_arg)
491
491
{ chain_sys_var(chain); }
492
sys_var_thd_bool(sys_var_chain *chain, const char *name_arg, bool SV::*offset_arg,
492
sys_var_session_bool(sys_var_chain *chain, const char *name_arg, bool SV::*offset_arg,
493
493
sys_after_update_func func)
494
:sys_var_thd(name_arg,func), offset(offset_arg)
494
:sys_var_session(name_arg,func), offset(offset_arg)
495
495
{ chain_sys_var(chain); }
496
bool update(Session *thd, set_var *var);
497
void set_default(Session *thd, enum_var_type type);
496
bool update(Session *session, set_var *var);
497
void set_default(Session *session, enum_var_type type);
498
498
SHOW_TYPE show_type() { return SHOW_MY_BOOL; }
499
unsigned char *value_ptr(Session *thd, enum_var_type type, LEX_STRING *base);
500
bool check(Session *thd, set_var *var)
499
unsigned char *value_ptr(Session *session, enum_var_type type, LEX_STRING *base);
500
bool check(Session *session, set_var *var)
502
return check_enum(thd, var, &bool_typelib);
502
return check_enum(session, var, &bool_typelib);
504
504
bool check_update_type(Item_result type __attribute__((unused)))
509
class sys_var_thd_enum :public sys_var_thd
509
class sys_var_session_enum :public sys_var_session
512
512
ulong SV::*offset;
513
513
TYPELIB *enum_names;
514
514
sys_check_func check_func;
516
sys_var_thd_enum(sys_var_chain *chain, const char *name_arg,
516
sys_var_session_enum(sys_var_chain *chain, const char *name_arg,
517
517
ulong SV::*offset_arg, TYPELIB *typelib,
518
518
sys_after_update_func func= NULL,
519
519
sys_check_func check= NULL)
520
:sys_var_thd(name_arg, func), offset(offset_arg),
520
:sys_var_session(name_arg, func), offset(offset_arg),
521
521
enum_names(typelib), check_func(check)
522
522
{ chain_sys_var(chain); }
523
bool check(Session *thd, set_var *var)
523
bool check(Session *session, set_var *var)
527
ret= (*check_func)(thd, var);
528
return ret ? ret : check_enum(thd, var, enum_names);
527
ret= (*check_func)(session, var);
528
return ret ? ret : check_enum(session, var, enum_names);
530
bool update(Session *thd, set_var *var);
531
void set_default(Session *thd, enum_var_type type);
530
bool update(Session *session, set_var *var);
531
void set_default(Session *session, enum_var_type type);
532
532
SHOW_TYPE show_type() { return SHOW_CHAR; }
533
unsigned char *value_ptr(Session *thd, enum_var_type type, LEX_STRING *base);
533
unsigned char *value_ptr(Session *session, enum_var_type type, LEX_STRING *base);
534
534
bool check_update_type(Item_result type __attribute__((unused)))
540
class sys_var_thd_optimizer_switch :public sys_var_thd_enum
540
class sys_var_session_optimizer_switch :public sys_var_session_enum
543
sys_var_thd_optimizer_switch(sys_var_chain *chain, const char *name_arg,
543
sys_var_session_optimizer_switch(sys_var_chain *chain, const char *name_arg,
544
544
ulong SV::*offset_arg)
545
:sys_var_thd_enum(chain, name_arg, offset_arg, &optimizer_switch_typelib)
545
:sys_var_session_enum(chain, name_arg, offset_arg, &optimizer_switch_typelib)
547
bool check(Session *thd, set_var *var)
547
bool check(Session *session, set_var *var)
549
return check_set(thd, var, enum_names);
549
return check_set(session, var, enum_names);
551
void set_default(Session *thd, enum_var_type type);
552
unsigned char *value_ptr(Session *thd, enum_var_type type, LEX_STRING *base);
553
static bool symbolic_mode_representation(Session *thd, uint64_t sql_mode,
551
void set_default(Session *session, enum_var_type type);
552
unsigned char *value_ptr(Session *session, enum_var_type type, LEX_STRING *base);
553
static bool symbolic_mode_representation(Session *session, uint64_t sql_mode,
554
554
LEX_STRING *rep);
558
class sys_var_thd_storage_engine :public sys_var_thd
558
class sys_var_session_storage_engine :public sys_var_session
561
561
plugin_ref SV::*offset;
563
sys_var_thd_storage_engine(sys_var_chain *chain, const char *name_arg,
563
sys_var_session_storage_engine(sys_var_chain *chain, const char *name_arg,
564
564
plugin_ref SV::*offset_arg)
565
:sys_var_thd(name_arg), offset(offset_arg)
565
:sys_var_session(name_arg), offset(offset_arg)
566
566
{ chain_sys_var(chain); }
567
bool check(Session *thd, set_var *var);
567
bool check(Session *session, set_var *var);
568
568
SHOW_TYPE show_type() { return SHOW_CHAR; }
569
569
bool check_update_type(Item_result type)
571
571
return type != STRING_RESULT; /* Only accept strings */
573
void set_default(Session *thd, enum_var_type type);
574
bool update(Session *thd, set_var *var);
575
unsigned char *value_ptr(Session *thd, enum_var_type type, LEX_STRING *base);
573
void set_default(Session *session, enum_var_type type);
574
bool update(Session *session, set_var *var);
575
unsigned char *value_ptr(Session *session, enum_var_type type, LEX_STRING *base);
578
class sys_var_thd_bit :public sys_var_thd
578
class sys_var_session_bit :public sys_var_session
580
580
sys_check_func check_func;
581
581
sys_update_func update_func;
583
583
uint64_t bit_flag;
585
sys_var_thd_bit(sys_var_chain *chain, const char *name_arg,
585
sys_var_session_bit(sys_var_chain *chain, const char *name_arg,
586
586
sys_check_func c_func, sys_update_func u_func,
587
587
uint64_t bit, bool reverse_arg=0,
588
588
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
589
:sys_var_thd(name_arg, NULL, binlog_status_arg), check_func(c_func),
589
:sys_var_session(name_arg, NULL, binlog_status_arg), check_func(c_func),
590
590
update_func(u_func), bit_flag(bit), reverse(reverse_arg)
591
591
{ chain_sys_var(chain); }
592
bool check(Session *thd, set_var *var);
593
bool update(Session *thd, set_var *var);
592
bool check(Session *session, set_var *var);
593
bool update(Session *session, set_var *var);
594
594
bool check_update_type(Item_result type __attribute__((unused)))
596
596
bool check_type(enum_var_type type) { return type == OPT_GLOBAL; }
597
597
SHOW_TYPE show_type() { return SHOW_MY_BOOL; }
598
unsigned char *value_ptr(Session *thd, enum_var_type type, LEX_STRING *base);
598
unsigned char *value_ptr(Session *session, enum_var_type type, LEX_STRING *base);
601
601
/* some variables that require special handling */
662
662
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
663
663
:sys_var(name_arg, NULL, binlog_status_arg)
664
664
{ chain_sys_var(chain); }
665
bool update(Session *thd, set_var *var);
665
bool update(Session *session, set_var *var);
666
666
bool check_type(enum_var_type type) { return type == OPT_GLOBAL; }
670
class sys_var_collation :public sys_var_thd
670
class sys_var_collation :public sys_var_session
673
673
sys_var_collation(const char *name_arg,
674
674
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
675
:sys_var_thd(name_arg, NULL, binlog_status_arg)
675
:sys_var_session(name_arg, NULL, binlog_status_arg)
677
677
no_support_one_shot= 0;
679
bool check(Session *thd, set_var *var);
679
bool check(Session *session, set_var *var);
680
680
SHOW_TYPE show_type() { return SHOW_CHAR; }
681
681
bool check_update_type(Item_result type)
683
683
return ((type != STRING_RESULT) && (type != INT_RESULT));
685
685
bool check_default(enum_var_type type __attribute__((unused))) { return 0; }
686
virtual void set_default(Session *thd, enum_var_type type)= 0;
686
virtual void set_default(Session *session, enum_var_type type)= 0;
689
class sys_var_character_set :public sys_var_thd
689
class sys_var_character_set :public sys_var_session
693
693
sys_var_character_set(const char *name_arg, bool is_nullable= 0,
694
694
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
695
:sys_var_thd(name_arg, NULL, binlog_status_arg), nullable(is_nullable)
695
:sys_var_session(name_arg, NULL, binlog_status_arg), nullable(is_nullable)
698
698
In fact only almost all variables derived from sys_var_character_set
984
984
bool check_default(enum_var_type type __attribute__((unused)))
986
bool update(Session *thd, set_var *var);
987
unsigned char *value_ptr(Session *thd, enum_var_type type, LEX_STRING *base);
988
virtual void set_default(Session *thd, enum_var_type type);
986
bool update(Session *session, set_var *var);
987
unsigned char *value_ptr(Session *session, enum_var_type type, LEX_STRING *base);
988
virtual void set_default(Session *session, enum_var_type type);
992
class sys_var_max_user_conn : public sys_var_thd
992
class sys_var_max_user_conn : public sys_var_session
995
995
sys_var_max_user_conn(sys_var_chain *chain, const char *name_arg):
996
sys_var_thd(name_arg)
996
sys_var_session(name_arg)
997
997
{ chain_sys_var(chain); }
998
bool check(Session *thd, set_var *var);
999
bool update(Session *thd, set_var *var);
998
bool check(Session *session, set_var *var);
999
bool update(Session *session, set_var *var);
1000
1000
bool check_default(enum_var_type type)
1002
1002
return type != OPT_GLOBAL || !option_limits;
1004
void set_default(Session *thd, enum_var_type type);
1004
void set_default(Session *session, enum_var_type type);
1005
1005
SHOW_TYPE show_type() { return SHOW_INT; }
1006
unsigned char *value_ptr(Session *thd, enum_var_type type, LEX_STRING *base);
1006
unsigned char *value_ptr(Session *session, enum_var_type type, LEX_STRING *base);
1010
class sys_var_microseconds :public sys_var_thd
1010
class sys_var_microseconds :public sys_var_session
1012
1012
uint64_t SV::*offset;
1014
1014
sys_var_microseconds(sys_var_chain *chain, const char *name_arg,
1015
1015
uint64_t SV::*offset_arg):
1016
sys_var_thd(name_arg), offset(offset_arg)
1016
sys_var_session(name_arg), offset(offset_arg)
1017
1017
{ chain_sys_var(chain); }
1018
bool check(Session *thd __attribute__((unused)),
1018
bool check(Session *session __attribute__((unused)),
1019
1019
set_var *var __attribute__((unused))) {return 0;}
1020
bool update(Session *thd, set_var *var);
1021
void set_default(Session *thd, enum_var_type type);
1020
bool update(Session *session, set_var *var);
1021
void set_default(Session *session, enum_var_type type);
1022
1022
SHOW_TYPE show_type() { return SHOW_DOUBLE; }
1023
1023
bool check_update_type(Item_result type)
1025
1025
return (type != INT_RESULT && type != REAL_RESULT && type != DECIMAL_RESULT);
1027
unsigned char *value_ptr(Session *thd, enum_var_type type, LEX_STRING *base);
1027
unsigned char *value_ptr(Session *session, enum_var_type type, LEX_STRING *base);