361
346
TYPELIB *typelib, sys_after_update_func func)
362
347
:sys_var(name_arg,func), value(value_arg), enum_names(typelib)
363
348
{ chain_sys_var(chain); }
364
bool check(THD *thd, set_var *var)
349
bool check(Session *session, set_var *var)
366
return check_enum(thd, var, enum_names);
351
return check_enum(session, var, enum_names);
368
bool update(THD *thd, set_var *var);
353
bool update(Session *session, set_var *var);
369
354
SHOW_TYPE show_type() { return SHOW_CHAR; }
370
unsigned char *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
371
bool check_update_type(Item_result type __attribute__((unused)))
355
unsigned char *value_ptr(Session *session, enum_var_type type,
356
const LEX_STRING *base);
357
bool check_update_type(Item_result)
376
362
class sys_var_enum_const :public sys_var
364
uint32_t SV::*offset;
379
365
TYPELIB *enum_names;
381
sys_var_enum_const(sys_var_chain *chain, const char *name_arg, ulong SV::*offset_arg,
367
sys_var_enum_const(sys_var_chain *chain, const char *name_arg, uint32_t SV::*offset_arg,
382
368
TYPELIB *typelib, sys_after_update_func func)
383
369
:sys_var(name_arg,func), offset(offset_arg), enum_names(typelib)
384
370
{ chain_sys_var(chain); }
385
bool check(THD *thd __attribute__((unused)),
386
set_var *var __attribute__((unused)))
371
bool check(Session *, set_var *)
388
bool update(THD *thd __attribute__((unused)),
389
set_var *var __attribute__((unused)))
373
bool update(Session *, set_var *)
391
375
SHOW_TYPE show_type() { return SHOW_CHAR; }
392
bool check_update_type(Item_result type __attribute__((unused)))
376
bool check_update_type(Item_result)
394
378
bool is_readonly() const { return 1; }
395
unsigned char *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
379
unsigned char *value_ptr(Session *session, enum_var_type type,
380
const LEX_STRING *base);
399
class sys_var_thd :public sys_var
384
class sys_var_session :public sys_var
402
sys_var_thd(const char *name_arg,
387
sys_var_session(const char *name_arg,
403
388
sys_after_update_func func= NULL,
404
Binlog_status_enum binlog_status= NOT_IN_BINLOG)
405
:sys_var(name_arg, func, binlog_status)
389
Binlog_status_enum bl_status= NOT_IN_BINLOG)
390
:sys_var(name_arg, func, bl_status)
407
bool check_type(enum_var_type type __attribute__((unused)))
392
bool check_type(enum_var_type)
409
394
bool check_default(enum_var_type type)
416
class sys_var_thd_ulong :public sys_var_thd
400
class sys_var_session_uint32_t :public sys_var_session
418
402
sys_check_func check_func;
421
sys_var_thd_ulong(sys_var_chain *chain, const char *name_arg,
422
ulong SV::*offset_arg,
423
sys_check_func c_func= NULL,
424
sys_after_update_func au_func= NULL,
425
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
426
:sys_var_thd(name_arg, au_func, binlog_status_arg), check_func(c_func),
404
uint32_t SV::*offset;
405
sys_var_session_uint32_t(sys_var_chain *chain, const char *name_arg,
406
uint32_t SV::*offset_arg,
407
sys_check_func c_func= NULL,
408
sys_after_update_func au_func= NULL,
409
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
410
:sys_var_session(name_arg, au_func, binlog_status_arg), check_func(c_func),
427
411
offset(offset_arg)
428
412
{ chain_sys_var(chain); }
429
bool check(THD *thd, set_var *var);
430
bool update(THD *thd, set_var *var);
431
void set_default(THD *thd, enum_var_type type);
432
SHOW_TYPE show_type() { return SHOW_LONG; }
433
unsigned char *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
413
bool check(Session *session, set_var *var);
414
bool update(Session *session, set_var *var);
415
void set_default(Session *session, enum_var_type type);
416
SHOW_TYPE show_type() { return SHOW_INT; }
417
unsigned char *value_ptr(Session *session, enum_var_type type,
418
const LEX_STRING *base);
437
class sys_var_thd_ha_rows :public sys_var_thd
422
class sys_var_session_ha_rows :public sys_var_session
440
425
ha_rows SV::*offset;
441
sys_var_thd_ha_rows(sys_var_chain *chain, const char *name_arg,
426
sys_var_session_ha_rows(sys_var_chain *chain, const char *name_arg,
442
427
ha_rows SV::*offset_arg)
443
:sys_var_thd(name_arg), offset(offset_arg)
428
:sys_var_session(name_arg), offset(offset_arg)
444
429
{ chain_sys_var(chain); }
445
sys_var_thd_ha_rows(sys_var_chain *chain, const char *name_arg,
430
sys_var_session_ha_rows(sys_var_chain *chain, const char *name_arg,
446
431
ha_rows SV::*offset_arg,
447
432
sys_after_update_func func)
448
:sys_var_thd(name_arg,func), offset(offset_arg)
433
:sys_var_session(name_arg,func), offset(offset_arg)
449
434
{ chain_sys_var(chain); }
450
bool update(THD *thd, set_var *var);
451
void set_default(THD *thd, enum_var_type type);
435
bool update(Session *session, set_var *var);
436
void set_default(Session *session, enum_var_type type);
452
437
SHOW_TYPE show_type() { return SHOW_HA_ROWS; }
453
unsigned char *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
438
unsigned char *value_ptr(Session *session, enum_var_type type,
439
const LEX_STRING *base);
457
class sys_var_thd_uint64_t :public sys_var_thd
443
class sys_var_session_uint64_t :public sys_var_session
445
sys_check_func check_func;
460
447
uint64_t SV::*offset;
461
448
bool only_global;
462
sys_var_thd_uint64_t(sys_var_chain *chain, const char *name_arg,
463
uint64_t SV::*offset_arg)
464
:sys_var_thd(name_arg), offset(offset_arg)
449
sys_var_session_uint64_t(sys_var_chain *chain, const char *name_arg,
450
uint64_t SV::*offset_arg,
451
sys_after_update_func au_func= NULL,
452
sys_check_func c_func= NULL,
453
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
454
:sys_var_session(name_arg, au_func, binlog_status_arg),
465
457
{ chain_sys_var(chain); }
466
sys_var_thd_uint64_t(sys_var_chain *chain, const char *name_arg,
467
uint64_t SV::*offset_arg,
468
sys_after_update_func func, bool only_global_arg)
469
:sys_var_thd(name_arg, func), offset(offset_arg),
458
sys_var_session_uint64_t(sys_var_chain *chain,
459
const char *name_arg,
460
uint64_t SV::*offset_arg,
461
sys_after_update_func func,
462
bool only_global_arg,
463
sys_check_func cfunc= NULL)
464
:sys_var_session(name_arg, func),
470
467
only_global(only_global_arg)
471
468
{ chain_sys_var(chain); }
472
bool update(THD *thd, set_var *var);
473
void set_default(THD *thd, enum_var_type type);
469
bool update(Session *session, set_var *var);
470
void set_default(Session *session, enum_var_type type);
474
471
SHOW_TYPE show_type() { return SHOW_LONGLONG; }
475
unsigned char *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
476
bool check(THD *thd, set_var *var);
477
bool check_default(enum_var_type type)
479
return type == OPT_GLOBAL && !option_limits;
481
bool check_type(enum_var_type type)
483
return (only_global && type != OPT_GLOBAL);
488
class sys_var_thd_bool :public sys_var_thd
472
unsigned char *value_ptr(Session *session, enum_var_type type,
473
const LEX_STRING *base);
474
bool check(Session *session, set_var *var);
475
bool check_default(enum_var_type type)
477
return type == OPT_GLOBAL && !option_limits;
479
bool check_type(enum_var_type type)
481
return (only_global && type != OPT_GLOBAL);
485
class sys_var_session_size_t :public sys_var_session
487
sys_check_func check_func;
491
sys_var_session_size_t(sys_var_chain *chain, const char *name_arg,
492
size_t SV::*offset_arg,
493
sys_after_update_func au_func= NULL,
494
sys_check_func c_func= NULL,
495
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
496
:sys_var_session(name_arg, au_func, binlog_status_arg),
499
{ chain_sys_var(chain); }
500
sys_var_session_size_t(sys_var_chain *chain,
501
const char *name_arg,
502
size_t SV::*offset_arg,
503
sys_after_update_func func,
504
bool only_global_arg,
505
sys_check_func cfunc= NULL)
506
:sys_var_session(name_arg, func),
509
only_global(only_global_arg)
510
{ chain_sys_var(chain); }
511
bool update(Session *session, set_var *var);
512
void set_default(Session *session, enum_var_type type);
513
SHOW_TYPE show_type() { return SHOW_SIZE; }
514
unsigned char *value_ptr(Session *session, enum_var_type type,
515
const LEX_STRING *base);
516
bool check(Session *session, set_var *var);
517
bool check_default(enum_var_type type)
519
return type == OPT_GLOBAL && !option_limits;
521
bool check_type(enum_var_type type)
523
return (only_global && type != OPT_GLOBAL);
528
class sys_var_session_bool :public sys_var_session
491
531
bool SV::*offset;
492
sys_var_thd_bool(sys_var_chain *chain, const char *name_arg, bool SV::*offset_arg)
493
:sys_var_thd(name_arg), offset(offset_arg)
532
sys_var_session_bool(sys_var_chain *chain, const char *name_arg, bool SV::*offset_arg)
533
:sys_var_session(name_arg), offset(offset_arg)
494
534
{ chain_sys_var(chain); }
495
sys_var_thd_bool(sys_var_chain *chain, const char *name_arg, bool SV::*offset_arg,
535
sys_var_session_bool(sys_var_chain *chain, const char *name_arg, bool SV::*offset_arg,
496
536
sys_after_update_func func)
497
:sys_var_thd(name_arg,func), offset(offset_arg)
537
:sys_var_session(name_arg,func), offset(offset_arg)
498
538
{ chain_sys_var(chain); }
499
bool update(THD *thd, set_var *var);
500
void set_default(THD *thd, enum_var_type type);
539
bool update(Session *session, set_var *var);
540
void set_default(Session *session, enum_var_type type);
501
541
SHOW_TYPE show_type() { return SHOW_MY_BOOL; }
502
unsigned char *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
503
bool check(THD *thd, set_var *var)
542
unsigned char *value_ptr(Session *session, enum_var_type type,
543
const LEX_STRING *base);
544
bool check(Session *session, set_var *var)
505
return check_enum(thd, var, &bool_typelib);
546
return check_enum(session, var, &bool_typelib);
507
bool check_update_type(Item_result type __attribute__((unused)))
548
bool check_update_type(Item_result)
512
class sys_var_thd_enum :public sys_var_thd
553
class sys_var_session_enum :public sys_var_session
556
uint32_t SV::*offset;
516
557
TYPELIB *enum_names;
517
558
sys_check_func check_func;
519
sys_var_thd_enum(sys_var_chain *chain, const char *name_arg,
520
ulong SV::*offset_arg, TYPELIB *typelib,
560
sys_var_session_enum(sys_var_chain *chain, const char *name_arg,
561
uint32_t SV::*offset_arg, TYPELIB *typelib,
521
562
sys_after_update_func func= NULL,
522
sys_check_func check= NULL)
523
:sys_var_thd(name_arg, func), offset(offset_arg),
524
enum_names(typelib), check_func(check)
563
sys_check_func check_f= NULL)
564
:sys_var_session(name_arg, func), offset(offset_arg),
565
enum_names(typelib), check_func(check_f)
525
566
{ chain_sys_var(chain); }
526
bool check(THD *thd, set_var *var)
567
bool check(Session *session, set_var *var)
530
ret= (*check_func)(thd, var);
531
return ret ? ret : check_enum(thd, var, enum_names);
571
ret= (*check_func)(session, var);
572
return ret ? ret : check_enum(session, var, enum_names);
533
bool update(THD *thd, set_var *var);
534
void set_default(THD *thd, enum_var_type type);
574
bool update(Session *session, set_var *var);
575
void set_default(Session *session, enum_var_type type);
535
576
SHOW_TYPE show_type() { return SHOW_CHAR; }
536
unsigned char *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
537
bool check_update_type(Item_result type __attribute__((unused)))
577
unsigned char *value_ptr(Session *session, enum_var_type type,
578
const LEX_STRING *base);
579
bool check_update_type(Item_result)
543
class sys_var_thd_optimizer_switch :public sys_var_thd_enum
585
class sys_var_session_optimizer_switch :public sys_var_session_enum
546
sys_var_thd_optimizer_switch(sys_var_chain *chain, const char *name_arg,
547
ulong SV::*offset_arg)
548
:sys_var_thd_enum(chain, name_arg, offset_arg, &optimizer_switch_typelib)
588
sys_var_session_optimizer_switch(sys_var_chain *chain, const char *name_arg,
589
uint32_t SV::*offset_arg)
590
:sys_var_session_enum(chain, name_arg, offset_arg, &optimizer_switch_typelib)
550
bool check(THD *thd, set_var *var)
592
bool check(Session *session, set_var *var)
552
return check_set(thd, var, enum_names);
594
return check_set(session, var, enum_names);
554
void set_default(THD *thd, enum_var_type type);
555
unsigned char *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
556
static bool symbolic_mode_representation(THD *thd, uint64_t sql_mode,
596
void set_default(Session *session, enum_var_type type);
597
unsigned char *value_ptr(Session *session, enum_var_type type,
598
const LEX_STRING *base);
599
static bool symbolic_mode_representation(Session *session, uint32_t sql_mode,
557
600
LEX_STRING *rep);
561
class sys_var_thd_storage_engine :public sys_var_thd
604
class sys_var_session_storage_engine :public sys_var_session
564
607
plugin_ref SV::*offset;
566
sys_var_thd_storage_engine(sys_var_chain *chain, const char *name_arg,
609
sys_var_session_storage_engine(sys_var_chain *chain, const char *name_arg,
567
610
plugin_ref SV::*offset_arg)
568
:sys_var_thd(name_arg), offset(offset_arg)
611
:sys_var_session(name_arg), offset(offset_arg)
569
612
{ chain_sys_var(chain); }
570
bool check(THD *thd, set_var *var);
613
bool check(Session *session, set_var *var);
571
614
SHOW_TYPE show_type() { return SHOW_CHAR; }
572
615
bool check_update_type(Item_result type)
574
617
return type != STRING_RESULT; /* Only accept strings */
576
void set_default(THD *thd, enum_var_type type);
577
bool update(THD *thd, set_var *var);
578
unsigned char *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
619
void set_default(Session *session, enum_var_type type);
620
bool update(Session *session, set_var *var);
621
unsigned char *value_ptr(Session *session, enum_var_type type,
622
const LEX_STRING *base);
581
class sys_var_thd_bit :public sys_var_thd
625
class sys_var_session_bit :public sys_var_session
583
627
sys_check_func check_func;
584
628
sys_update_func update_func;
586
630
uint64_t bit_flag;
588
sys_var_thd_bit(sys_var_chain *chain, const char *name_arg,
632
sys_var_session_bit(sys_var_chain *chain, const char *name_arg,
589
633
sys_check_func c_func, sys_update_func u_func,
590
634
uint64_t bit, bool reverse_arg=0,
591
635
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
592
:sys_var_thd(name_arg, NULL, binlog_status_arg), check_func(c_func),
636
:sys_var_session(name_arg, NULL, binlog_status_arg), check_func(c_func),
593
637
update_func(u_func), bit_flag(bit), reverse(reverse_arg)
594
638
{ chain_sys_var(chain); }
595
bool check(THD *thd, set_var *var);
596
bool update(THD *thd, set_var *var);
597
bool check_update_type(Item_result type __attribute__((unused)))
639
bool check(Session *session, set_var *var);
640
bool update(Session *session, set_var *var);
641
bool check_update_type(Item_result)
599
643
bool check_type(enum_var_type type) { return type == OPT_GLOBAL; }
600
644
SHOW_TYPE show_type() { return SHOW_MY_BOOL; }
601
unsigned char *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
645
unsigned char *value_ptr(Session *session, enum_var_type type,
646
const LEX_STRING *base);
604
649
/* some variables that require special handling */
627
673
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
628
674
:sys_var(name_arg, NULL, binlog_status_arg)
629
675
{ chain_sys_var(chain); }
630
bool update(THD *thd, set_var *var);
631
bool check_type(enum_var_type type) { return type == OPT_GLOBAL; }
632
SHOW_TYPE show_type() { return SHOW_LONGLONG; }
633
unsigned char *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
637
class sys_var_insert_id :public sys_var
640
sys_var_insert_id(sys_var_chain *chain, const char *name_arg)
642
{ chain_sys_var(chain); }
643
bool update(THD *thd, set_var *var);
644
bool check_type(enum_var_type type) { return type == OPT_GLOBAL; }
645
SHOW_TYPE show_type() { return SHOW_LONGLONG; }
646
unsigned char *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
650
class sys_var_rand_seed1 :public sys_var
653
sys_var_rand_seed1(sys_var_chain *chain, const char *name_arg,
654
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
655
:sys_var(name_arg, NULL, binlog_status_arg)
656
{ chain_sys_var(chain); }
657
bool update(THD *thd, set_var *var);
658
bool check_type(enum_var_type type) { return type == OPT_GLOBAL; }
661
class sys_var_rand_seed2 :public sys_var
664
sys_var_rand_seed2(sys_var_chain *chain, const char *name_arg,
665
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
666
:sys_var(name_arg, NULL, binlog_status_arg)
667
{ chain_sys_var(chain); }
668
bool update(THD *thd, set_var *var);
669
bool check_type(enum_var_type type) { return type == OPT_GLOBAL; }
673
class sys_var_collation :public sys_var_thd
676
bool update(Session *session, set_var *var);
677
bool check_type(enum_var_type type) { return type == OPT_GLOBAL; }
678
SHOW_TYPE show_type() { return SHOW_LONGLONG; }
679
unsigned char *value_ptr(Session *session, enum_var_type type,
680
const LEX_STRING *base);
684
class sys_var_collation :public sys_var_session
676
687
sys_var_collation(const char *name_arg,
677
688
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
678
:sys_var_thd(name_arg, NULL, binlog_status_arg)
680
no_support_one_shot= 0;
682
bool check(THD *thd, set_var *var);
683
SHOW_TYPE show_type() { return SHOW_CHAR; }
684
bool check_update_type(Item_result type)
686
return ((type != STRING_RESULT) && (type != INT_RESULT));
688
bool check_default(enum_var_type type __attribute__((unused))) { return 0; }
689
virtual void set_default(THD *thd, enum_var_type type)= 0;
692
class sys_var_character_set :public sys_var_thd
696
sys_var_character_set(const char *name_arg, bool is_nullable= 0,
697
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
698
:sys_var_thd(name_arg, NULL, binlog_status_arg), nullable(is_nullable)
701
In fact only almost all variables derived from sys_var_character_set
702
support ONE_SHOT; character_set_results doesn't. But that's good enough.
704
no_support_one_shot= 0;
706
bool check(THD *thd, set_var *var);
707
SHOW_TYPE show_type() { return SHOW_CHAR; }
708
bool check_update_type(Item_result type)
710
return ((type != STRING_RESULT) && (type != INT_RESULT));
712
bool check_default(enum_var_type type __attribute__((unused)))
714
bool update(THD *thd, set_var *var);
715
unsigned char *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
716
virtual void set_default(THD *thd, enum_var_type type)= 0;
717
virtual const CHARSET_INFO **ci_ptr(THD *thd, enum_var_type type)= 0;
720
class sys_var_character_set_sv :public sys_var_character_set
722
const CHARSET_INFO *SV::*offset;
723
const CHARSET_INFO **global_default;
725
sys_var_character_set_sv(sys_var_chain *chain, const char *name_arg,
726
const CHARSET_INFO *SV::*offset_arg,
727
const CHARSET_INFO **global_default_arg,
729
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
730
: sys_var_character_set(name_arg, is_nullable, binlog_status_arg),
731
offset(offset_arg), global_default(global_default_arg)
732
{ chain_sys_var(chain); }
733
void set_default(THD *thd, enum_var_type type);
734
const CHARSET_INFO **ci_ptr(THD *thd, enum_var_type type);
738
class sys_var_character_set_client: public sys_var_character_set_sv
741
sys_var_character_set_client(sys_var_chain *chain, const char *name_arg,
742
const CHARSET_INFO *SV::*offset_arg,
743
const CHARSET_INFO **global_default_arg,
744
Binlog_status_enum binlog_status_arg)
745
: sys_var_character_set_sv(chain, name_arg, offset_arg, global_default_arg,
746
0, binlog_status_arg)
689
:sys_var_session(name_arg, NULL, binlog_status_arg)
748
bool check(THD *thd, set_var *var);
752
class sys_var_character_set_database :public sys_var_character_set
755
sys_var_character_set_database(sys_var_chain *chain, const char *name_arg,
756
Binlog_status_enum binlog_status_arg=
758
: sys_var_character_set(name_arg, 0, binlog_status_arg)
759
{ chain_sys_var(chain); }
760
void set_default(THD *thd, enum_var_type type);
761
const CHARSET_INFO **ci_ptr(THD *thd, enum_var_type type);
691
bool check(Session *session, set_var *var);
692
SHOW_TYPE show_type() { return SHOW_CHAR; }
693
bool check_update_type(Item_result type)
695
return ((type != STRING_RESULT) && (type != INT_RESULT));
697
bool check_default(enum_var_type) { return 0; }
698
virtual void set_default(Session *session, enum_var_type type)= 0;
764
701
class sys_var_collation_sv :public sys_var_collation
804
743
:sys_var_key_cache_param(chain, name_arg,
805
744
offsetof(KEY_CACHE, param_buff_size))
807
bool update(THD *thd, set_var *var);
746
bool update(Session *session, set_var *var);
808
747
SHOW_TYPE show_type() { return SHOW_LONGLONG; }
812
class sys_var_key_cache_long :public sys_var_key_cache_param
751
class sys_var_key_cache_uint32_t :public sys_var_key_cache_param
815
sys_var_key_cache_long(sys_var_chain *chain, const char *name_arg, size_t offset_arg)
754
sys_var_key_cache_uint32_t(sys_var_chain *chain, const char *name_arg, size_t offset_arg)
816
755
:sys_var_key_cache_param(chain, name_arg, offset_arg)
818
bool update(THD *thd, set_var *var);
819
SHOW_TYPE show_type() { return SHOW_LONG; }
823
class sys_var_thd_date_time_format :public sys_var_thd
825
DATE_TIME_FORMAT *SV::*offset;
826
enum enum_drizzle_timestamp_type date_time_type;
828
sys_var_thd_date_time_format(sys_var_chain *chain, const char *name_arg,
829
DATE_TIME_FORMAT *SV::*offset_arg,
830
enum enum_drizzle_timestamp_type date_time_type_arg)
831
:sys_var_thd(name_arg), offset(offset_arg),
832
date_time_type(date_time_type_arg)
833
{ chain_sys_var(chain); }
834
SHOW_TYPE show_type() { return SHOW_CHAR; }
835
bool check_update_type(Item_result type)
837
return type != STRING_RESULT; /* Only accept strings */
839
bool check_default(enum_var_type type __attribute__((unused)))
841
bool check(THD *thd, set_var *var);
842
bool update(THD *thd, set_var *var);
843
void update2(THD *thd, enum_var_type type, DATE_TIME_FORMAT *new_value);
844
unsigned char *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
845
void set_default(THD *thd, enum_var_type type);
849
class sys_var_log_state :public sys_var_bool_ptr
853
sys_var_log_state(sys_var_chain *chain, const char *name_arg, bool *value_arg,
854
uint32_t log_type_arg)
855
:sys_var_bool_ptr(chain, name_arg, value_arg), log_type(log_type_arg) {}
856
bool update(THD *thd, set_var *var);
857
void set_default(THD *thd, enum_var_type type);
861
class sys_var_set :public sys_var
867
sys_var_set(sys_var_chain *chain, const char *name_arg, ulong *value_arg,
868
TYPELIB *typelib, sys_after_update_func func)
869
:sys_var(name_arg, func), value(value_arg), enum_names(typelib)
870
{ chain_sys_var(chain); }
871
virtual bool check(THD *thd, set_var *var)
873
return check_set(thd, var, enum_names);
875
virtual void set_default(THD *thd __attribute__((unused)),
876
enum_var_type type __attribute__((unused)))
880
bool update(THD *thd, set_var *var);
881
unsigned char *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
882
bool check_update_type(Item_result type __attribute__((unused)))
884
SHOW_TYPE show_type() { return SHOW_CHAR; }
887
class sys_var_set_slave_mode :public sys_var_set
890
sys_var_set_slave_mode(sys_var_chain *chain, const char *name_arg,
892
TYPELIB *typelib, sys_after_update_func func) :
893
sys_var_set(chain, name_arg, value_arg, typelib, func) {}
894
void set_default(THD *thd, enum_var_type type);
895
bool check(THD *thd, set_var *var);
896
bool update(THD *thd, set_var *var);
899
class sys_var_log_output :public sys_var
904
sys_var_log_output(sys_var_chain *chain, const char *name_arg, ulong *value_arg,
905
TYPELIB *typelib, sys_after_update_func func)
906
:sys_var(name_arg,func), value(value_arg), enum_names(typelib)
908
chain_sys_var(chain);
909
set_allow_empty_value(false);
911
virtual bool check(THD *thd, set_var *var)
913
return check_set(thd, var, enum_names);
915
bool update(THD *thd, set_var *var);
916
unsigned char *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
917
bool check_update_type(Item_result type __attribute__((unused)))
919
void set_default(THD *thd, enum_var_type type);
920
SHOW_TYPE show_type() { return SHOW_CHAR; }
757
bool update(Session *session, set_var *var);
758
SHOW_TYPE show_type() { return SHOW_INT; }
924
761
/* Variable that you can only read from */
1015
class sys_var_thd_time_zone :public sys_var_thd
849
class sys_var_session_time_zone :public sys_var_session
1018
sys_var_thd_time_zone(sys_var_chain *chain, const char *name_arg,
852
sys_var_session_time_zone(sys_var_chain *chain, const char *name_arg,
1019
853
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
1020
:sys_var_thd(name_arg, NULL, binlog_status_arg)
854
:sys_var_session(name_arg, NULL, binlog_status_arg)
1022
no_support_one_shot= 0;
1023
856
chain_sys_var(chain);
1025
bool check(THD *thd, set_var *var);
858
bool check(Session *session, set_var *var);
1026
859
SHOW_TYPE show_type() { return SHOW_CHAR; }
1027
860
bool check_update_type(Item_result type)
1029
862
return type != STRING_RESULT; /* Only accept strings */
1031
bool check_default(enum_var_type type __attribute__((unused)))
864
bool check_default(enum_var_type)
1033
bool update(THD *thd, set_var *var);
1034
unsigned char *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
1035
virtual void set_default(THD *thd, enum_var_type type);
1039
class sys_var_max_user_conn : public sys_var_thd
1042
sys_var_max_user_conn(sys_var_chain *chain, const char *name_arg):
1043
sys_var_thd(name_arg)
1044
{ chain_sys_var(chain); }
1045
bool check(THD *thd, set_var *var);
1046
bool update(THD *thd, set_var *var);
1047
bool check_default(enum_var_type type)
1049
return type != OPT_GLOBAL || !option_limits;
1051
void set_default(THD *thd, enum_var_type type);
1052
SHOW_TYPE show_type() { return SHOW_INT; }
1053
unsigned char *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
1057
class sys_var_microseconds :public sys_var_thd
866
bool update(Session *session, set_var *var);
867
unsigned char *value_ptr(Session *session, enum_var_type type,
868
const LEX_STRING *base);
869
virtual void set_default(Session *session, enum_var_type type);
873
class sys_var_microseconds :public sys_var_session
1059
875
uint64_t SV::*offset;
1061
877
sys_var_microseconds(sys_var_chain *chain, const char *name_arg,
1062
878
uint64_t SV::*offset_arg):
1063
sys_var_thd(name_arg), offset(offset_arg)
879
sys_var_session(name_arg), offset(offset_arg)
1064
880
{ chain_sys_var(chain); }
1065
bool check(THD *thd __attribute__((unused)),
1066
set_var *var __attribute__((unused))) {return 0;}
1067
bool update(THD *thd, set_var *var);
1068
void set_default(THD *thd, enum_var_type type);
881
bool check(Session *, set_var *) {return 0;}
882
bool update(Session *session, set_var *var);
883
void set_default(Session *session, enum_var_type type);
1069
884
SHOW_TYPE show_type() { return SHOW_DOUBLE; }
1070
885
bool check_update_type(Item_result type)
1072
887
return (type != INT_RESULT && type != REAL_RESULT && type != DECIMAL_RESULT);
1074
unsigned char *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
1078
Handler for setting the system variable --read-only.
1081
class sys_var_opt_readonly :public sys_var_bool_ptr
1084
sys_var_opt_readonly(sys_var_chain *chain, const char *name_arg,
1086
sys_var_bool_ptr(chain, name_arg, value_arg) {};
1087
~sys_var_opt_readonly() {};
1088
bool update(THD *thd, set_var *var);
1092
class sys_var_thd_lc_time_names :public sys_var_thd
1095
sys_var_thd_lc_time_names(sys_var_chain *chain, const char *name_arg,
889
unsigned char *value_ptr(Session *session, enum_var_type type,
890
const LEX_STRING *base);
893
class sys_var_session_lc_time_names :public sys_var_session
896
sys_var_session_lc_time_names(sys_var_chain *chain, const char *name_arg,
1096
897
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
1097
: sys_var_thd(name_arg, NULL, binlog_status_arg)
898
: sys_var_session(name_arg, NULL, binlog_status_arg)
1099
#if DRIZZLE_VERSION_ID < 50000
1100
no_support_one_shot= 0;
1102
900
chain_sys_var(chain);
1104
bool check(THD *thd, set_var *var);
902
bool check(Session *session, set_var *var);
1105
903
SHOW_TYPE show_type() { return SHOW_CHAR; }
1106
904
bool check_update_type(Item_result type)
1108
906
return ((type != STRING_RESULT) && (type != INT_RESULT));
1110
bool check_default(enum_var_type type __attribute__((unused)))
908
bool check_default(enum_var_type)
1112
bool update(THD *thd, set_var *var);
1113
unsigned char *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
1114
virtual void set_default(THD *thd, enum_var_type type);
1118
extern void fix_binlog_format_after_update(THD *thd, enum_var_type type);
1120
class sys_var_thd_binlog_format :public sys_var_thd_enum
1123
sys_var_thd_binlog_format(sys_var_chain *chain, const char *name_arg,
1124
ulong SV::*offset_arg)
1125
:sys_var_thd_enum(chain, name_arg, offset_arg,
1126
&binlog_format_typelib,
1127
fix_binlog_format_after_update)
1129
bool is_readonly() const;
910
bool update(Session *session, set_var *var);
911
unsigned char *value_ptr(Session *session, enum_var_type type,
912
const LEX_STRING *base);
913
virtual void set_default(Session *session, enum_var_type type);
1132
917
/****************************************************************************
1133
918
Classes for parsing of the SET command