351
340
class sys_var_enum :public sys_var
354
343
TYPELIB *enum_names;
356
sys_var_enum(sys_var_chain *chain, const char *name_arg, uint *value_arg,
345
sys_var_enum(sys_var_chain *chain, const char *name_arg, uint32_t *value_arg,
357
346
TYPELIB *typelib, sys_after_update_func func)
358
347
:sys_var(name_arg,func), value(value_arg), enum_names(typelib)
359
348
{ chain_sys_var(chain); }
360
bool check(THD *thd, set_var *var)
349
bool check(Session *session, set_var *var)
362
return check_enum(thd, var, enum_names);
351
return check_enum(session, var, enum_names);
364
bool update(THD *thd, set_var *var);
353
bool update(Session *session, set_var *var);
365
354
SHOW_TYPE show_type() { return SHOW_CHAR; }
366
uchar *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
367
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)
372
362
class sys_var_enum_const :public sys_var
364
uint32_t SV::*offset;
375
365
TYPELIB *enum_names;
377
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,
378
368
TYPELIB *typelib, sys_after_update_func func)
379
369
:sys_var(name_arg,func), offset(offset_arg), enum_names(typelib)
380
370
{ chain_sys_var(chain); }
381
bool check(THD *thd __attribute__((unused)),
382
set_var *var __attribute__((unused)))
371
bool check(Session *, set_var *)
384
bool update(THD *thd __attribute__((unused)),
385
set_var *var __attribute__((unused)))
373
bool update(Session *, set_var *)
387
375
SHOW_TYPE show_type() { return SHOW_CHAR; }
388
bool check_update_type(Item_result type __attribute__((unused)))
376
bool check_update_type(Item_result)
390
378
bool is_readonly() const { return 1; }
391
uchar *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);
395
class sys_var_thd :public sys_var
384
class sys_var_session :public sys_var
398
sys_var_thd(const char *name_arg,
387
sys_var_session(const char *name_arg,
399
388
sys_after_update_func func= NULL,
400
Binlog_status_enum binlog_status= NOT_IN_BINLOG)
401
:sys_var(name_arg, func, binlog_status)
389
Binlog_status_enum bl_status= NOT_IN_BINLOG)
390
:sys_var(name_arg, func, bl_status)
403
bool check_type(enum_var_type type __attribute__((unused)))
392
bool check_type(enum_var_type)
405
394
bool check_default(enum_var_type type)
412
class sys_var_thd_ulong :public sys_var_thd
400
class sys_var_session_uint32_t :public sys_var_session
414
402
sys_check_func check_func;
417
sys_var_thd_ulong(sys_var_chain *chain, const char *name_arg,
418
ulong SV::*offset_arg,
419
sys_check_func c_func= NULL,
420
sys_after_update_func au_func= NULL,
421
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
422
: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),
423
411
offset(offset_arg)
424
412
{ chain_sys_var(chain); }
425
bool check(THD *thd, set_var *var);
426
bool update(THD *thd, set_var *var);
427
void set_default(THD *thd, enum_var_type type);
428
SHOW_TYPE show_type() { return SHOW_LONG; }
429
uchar *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);
433
class sys_var_thd_ha_rows :public sys_var_thd
422
class sys_var_session_ha_rows :public sys_var_session
436
425
ha_rows SV::*offset;
437
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,
438
427
ha_rows SV::*offset_arg)
439
:sys_var_thd(name_arg), offset(offset_arg)
428
:sys_var_session(name_arg), offset(offset_arg)
440
429
{ chain_sys_var(chain); }
441
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,
442
431
ha_rows SV::*offset_arg,
443
432
sys_after_update_func func)
444
:sys_var_thd(name_arg,func), offset(offset_arg)
433
:sys_var_session(name_arg,func), offset(offset_arg)
445
434
{ chain_sys_var(chain); }
446
bool update(THD *thd, set_var *var);
447
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);
448
437
SHOW_TYPE show_type() { return SHOW_HA_ROWS; }
449
uchar *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);
453
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;
456
447
uint64_t SV::*offset;
457
448
bool only_global;
458
sys_var_thd_uint64_t(sys_var_chain *chain, const char *name_arg,
459
uint64_t SV::*offset_arg)
460
: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),
461
457
{ chain_sys_var(chain); }
462
sys_var_thd_uint64_t(sys_var_chain *chain, const char *name_arg,
463
uint64_t SV::*offset_arg,
464
sys_after_update_func func, bool only_global_arg)
465
: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),
466
467
only_global(only_global_arg)
467
468
{ chain_sys_var(chain); }
468
bool update(THD *thd, set_var *var);
469
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);
470
471
SHOW_TYPE show_type() { return SHOW_LONGLONG; }
471
uchar *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
472
bool check(THD *thd, set_var *var);
473
bool check_default(enum_var_type type)
475
return type == OPT_GLOBAL && !option_limits;
477
bool check_type(enum_var_type type)
479
return (only_global && type != OPT_GLOBAL);
484
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
487
531
bool SV::*offset;
488
sys_var_thd_bool(sys_var_chain *chain, const char *name_arg, bool SV::*offset_arg)
489
: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)
490
534
{ chain_sys_var(chain); }
491
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,
492
536
sys_after_update_func func)
493
:sys_var_thd(name_arg,func), offset(offset_arg)
537
:sys_var_session(name_arg,func), offset(offset_arg)
494
538
{ chain_sys_var(chain); }
495
bool update(THD *thd, set_var *var);
496
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);
497
541
SHOW_TYPE show_type() { return SHOW_MY_BOOL; }
498
uchar *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
499
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)
501
return check_enum(thd, var, &bool_typelib);
546
return check_enum(session, var, &bool_typelib);
503
bool check_update_type(Item_result type __attribute__((unused)))
548
bool check_update_type(Item_result)
508
class sys_var_thd_enum :public sys_var_thd
553
class sys_var_session_enum :public sys_var_session
556
uint32_t SV::*offset;
512
557
TYPELIB *enum_names;
513
558
sys_check_func check_func;
515
sys_var_thd_enum(sys_var_chain *chain, const char *name_arg,
516
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,
517
562
sys_after_update_func func= NULL,
518
sys_check_func check= NULL)
519
:sys_var_thd(name_arg, func), offset(offset_arg),
520
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)
521
566
{ chain_sys_var(chain); }
522
bool check(THD *thd, set_var *var)
567
bool check(Session *session, set_var *var)
526
ret= (*check_func)(thd, var);
527
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);
529
bool update(THD *thd, set_var *var);
530
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);
531
576
SHOW_TYPE show_type() { return SHOW_CHAR; }
532
uchar *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
533
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)
539
class sys_var_thd_optimizer_switch :public sys_var_thd_enum
585
class sys_var_session_optimizer_switch :public sys_var_session_enum
542
sys_var_thd_optimizer_switch(sys_var_chain *chain, const char *name_arg,
543
ulong SV::*offset_arg)
544
: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)
546
bool check(THD *thd, set_var *var)
592
bool check(Session *session, set_var *var)
548
return check_set(thd, var, enum_names);
594
return check_set(session, var, enum_names);
550
void set_default(THD *thd, enum_var_type type);
551
uchar *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
552
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,
553
600
LEX_STRING *rep);
557
class sys_var_thd_storage_engine :public sys_var_thd
604
class sys_var_session_storage_engine :public sys_var_session
560
plugin_ref SV::*offset;
607
StorageEngine *SV::*offset;
562
sys_var_thd_storage_engine(sys_var_chain *chain, const char *name_arg,
563
plugin_ref SV::*offset_arg)
564
:sys_var_thd(name_arg), offset(offset_arg)
609
sys_var_session_storage_engine(sys_var_chain *chain, const char *name_arg,
610
StorageEngine *SV::*offset_arg)
611
:sys_var_session(name_arg), offset(offset_arg)
565
612
{ chain_sys_var(chain); }
566
bool check(THD *thd, set_var *var);
613
bool check(Session *session, set_var *var);
567
614
SHOW_TYPE show_type() { return SHOW_CHAR; }
568
615
bool check_update_type(Item_result type)
570
617
return type != STRING_RESULT; /* Only accept strings */
572
void set_default(THD *thd, enum_var_type type);
573
bool update(THD *thd, set_var *var);
574
uchar *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);
577
class sys_var_thd_bit :public sys_var_thd
625
class sys_var_session_bit :public sys_var_session
579
627
sys_check_func check_func;
580
628
sys_update_func update_func;
582
630
uint64_t bit_flag;
584
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,
585
633
sys_check_func c_func, sys_update_func u_func,
586
634
uint64_t bit, bool reverse_arg=0,
587
635
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
588
: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),
589
637
update_func(u_func), bit_flag(bit), reverse(reverse_arg)
590
638
{ chain_sys_var(chain); }
591
bool check(THD *thd, set_var *var);
592
bool update(THD *thd, set_var *var);
593
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)
595
643
bool check_type(enum_var_type type) { return type == OPT_GLOBAL; }
596
644
SHOW_TYPE show_type() { return SHOW_MY_BOOL; }
597
uchar *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);
600
649
/* some variables that require special handling */
623
673
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
624
674
:sys_var(name_arg, NULL, binlog_status_arg)
625
675
{ chain_sys_var(chain); }
626
bool update(THD *thd, set_var *var);
627
bool check_type(enum_var_type type) { return type == OPT_GLOBAL; }
628
SHOW_TYPE show_type() { return SHOW_LONGLONG; }
629
uchar *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
633
class sys_var_insert_id :public sys_var
636
sys_var_insert_id(sys_var_chain *chain, const char *name_arg)
638
{ chain_sys_var(chain); }
639
bool update(THD *thd, set_var *var);
640
bool check_type(enum_var_type type) { return type == OPT_GLOBAL; }
641
SHOW_TYPE show_type() { return SHOW_LONGLONG; }
642
uchar *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
646
class sys_var_rand_seed1 :public sys_var
649
sys_var_rand_seed1(sys_var_chain *chain, const char *name_arg,
650
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
651
:sys_var(name_arg, NULL, binlog_status_arg)
652
{ chain_sys_var(chain); }
653
bool update(THD *thd, set_var *var);
654
bool check_type(enum_var_type type) { return type == OPT_GLOBAL; }
657
class sys_var_rand_seed2 :public sys_var
660
sys_var_rand_seed2(sys_var_chain *chain, const char *name_arg,
661
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
662
:sys_var(name_arg, NULL, binlog_status_arg)
663
{ chain_sys_var(chain); }
664
bool update(THD *thd, set_var *var);
665
bool check_type(enum_var_type type) { return type == OPT_GLOBAL; }
669
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
672
687
sys_var_collation(const char *name_arg,
673
688
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
674
:sys_var_thd(name_arg, NULL, binlog_status_arg)
676
no_support_one_shot= 0;
678
bool check(THD *thd, set_var *var);
679
SHOW_TYPE show_type() { return SHOW_CHAR; }
680
bool check_update_type(Item_result type)
682
return ((type != STRING_RESULT) && (type != INT_RESULT));
684
bool check_default(enum_var_type type __attribute__((unused))) { return 0; }
685
virtual void set_default(THD *thd, enum_var_type type)= 0;
688
class sys_var_character_set :public sys_var_thd
692
sys_var_character_set(const char *name_arg, bool is_nullable= 0,
693
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
694
:sys_var_thd(name_arg, NULL, binlog_status_arg), nullable(is_nullable)
697
In fact only almost all variables derived from sys_var_character_set
698
support ONE_SHOT; character_set_results doesn't. But that's good enough.
700
no_support_one_shot= 0;
702
bool check(THD *thd, set_var *var);
703
SHOW_TYPE show_type() { return SHOW_CHAR; }
704
bool check_update_type(Item_result type)
706
return ((type != STRING_RESULT) && (type != INT_RESULT));
708
bool check_default(enum_var_type type __attribute__((unused)))
710
bool update(THD *thd, set_var *var);
711
uchar *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
712
virtual void set_default(THD *thd, enum_var_type type)= 0;
713
virtual const CHARSET_INFO **ci_ptr(THD *thd, enum_var_type type)= 0;
716
class sys_var_character_set_sv :public sys_var_character_set
718
const CHARSET_INFO *SV::*offset;
719
const CHARSET_INFO **global_default;
721
sys_var_character_set_sv(sys_var_chain *chain, const char *name_arg,
722
const CHARSET_INFO *SV::*offset_arg,
723
const CHARSET_INFO **global_default_arg,
725
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
726
: sys_var_character_set(name_arg, is_nullable, binlog_status_arg),
727
offset(offset_arg), global_default(global_default_arg)
728
{ chain_sys_var(chain); }
729
void set_default(THD *thd, enum_var_type type);
730
const CHARSET_INFO **ci_ptr(THD *thd, enum_var_type type);
734
class sys_var_character_set_client: public sys_var_character_set_sv
737
sys_var_character_set_client(sys_var_chain *chain, const char *name_arg,
738
const CHARSET_INFO *SV::*offset_arg,
739
const CHARSET_INFO **global_default_arg,
740
Binlog_status_enum binlog_status_arg)
741
: sys_var_character_set_sv(chain, name_arg, offset_arg, global_default_arg,
742
0, binlog_status_arg)
689
:sys_var_session(name_arg, NULL, binlog_status_arg)
744
bool check(THD *thd, set_var *var);
748
class sys_var_character_set_database :public sys_var_character_set
751
sys_var_character_set_database(sys_var_chain *chain, const char *name_arg,
752
Binlog_status_enum binlog_status_arg=
754
: sys_var_character_set(name_arg, 0, binlog_status_arg)
755
{ chain_sys_var(chain); }
756
void set_default(THD *thd, enum_var_type type);
757
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;
760
701
class sys_var_collation_sv :public sys_var_collation
800
743
:sys_var_key_cache_param(chain, name_arg,
801
744
offsetof(KEY_CACHE, param_buff_size))
803
bool update(THD *thd, set_var *var);
746
bool update(Session *session, set_var *var);
804
747
SHOW_TYPE show_type() { return SHOW_LONGLONG; }
808
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
811
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)
812
755
:sys_var_key_cache_param(chain, name_arg, offset_arg)
814
bool update(THD *thd, set_var *var);
815
SHOW_TYPE show_type() { return SHOW_LONG; }
819
class sys_var_thd_date_time_format :public sys_var_thd
821
DATE_TIME_FORMAT *SV::*offset;
822
timestamp_type date_time_type;
824
sys_var_thd_date_time_format(sys_var_chain *chain, const char *name_arg,
825
DATE_TIME_FORMAT *SV::*offset_arg,
826
timestamp_type date_time_type_arg)
827
:sys_var_thd(name_arg), offset(offset_arg),
828
date_time_type(date_time_type_arg)
829
{ chain_sys_var(chain); }
830
SHOW_TYPE show_type() { return SHOW_CHAR; }
831
bool check_update_type(Item_result type)
833
return type != STRING_RESULT; /* Only accept strings */
835
bool check_default(enum_var_type type __attribute__((unused)))
837
bool check(THD *thd, set_var *var);
838
bool update(THD *thd, set_var *var);
839
void update2(THD *thd, enum_var_type type, DATE_TIME_FORMAT *new_value);
840
uchar *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
841
void set_default(THD *thd, enum_var_type type);
845
class sys_var_log_state :public sys_var_bool_ptr
849
sys_var_log_state(sys_var_chain *chain, const char *name_arg, bool *value_arg,
851
:sys_var_bool_ptr(chain, name_arg, value_arg), log_type(log_type_arg) {}
852
bool update(THD *thd, set_var *var);
853
void set_default(THD *thd, enum_var_type type);
857
class sys_var_set :public sys_var
863
sys_var_set(sys_var_chain *chain, const char *name_arg, ulong *value_arg,
864
TYPELIB *typelib, sys_after_update_func func)
865
:sys_var(name_arg, func), value(value_arg), enum_names(typelib)
866
{ chain_sys_var(chain); }
867
virtual bool check(THD *thd, set_var *var)
869
return check_set(thd, var, enum_names);
871
virtual void set_default(THD *thd __attribute__((unused)),
872
enum_var_type type __attribute__((unused)))
876
bool update(THD *thd, set_var *var);
877
uchar *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
878
bool check_update_type(Item_result type __attribute__((unused)))
880
SHOW_TYPE show_type() { return SHOW_CHAR; }
883
class sys_var_set_slave_mode :public sys_var_set
886
sys_var_set_slave_mode(sys_var_chain *chain, const char *name_arg,
888
TYPELIB *typelib, sys_after_update_func func) :
889
sys_var_set(chain, name_arg, value_arg, typelib, func) {}
890
void set_default(THD *thd, enum_var_type type);
891
bool check(THD *thd, set_var *var);
892
bool update(THD *thd, set_var *var);
895
class sys_var_log_output :public sys_var
900
sys_var_log_output(sys_var_chain *chain, const char *name_arg, ulong *value_arg,
901
TYPELIB *typelib, sys_after_update_func func)
902
:sys_var(name_arg,func), value(value_arg), enum_names(typelib)
904
chain_sys_var(chain);
905
set_allow_empty_value(false);
907
virtual bool check(THD *thd, set_var *var)
909
return check_set(thd, var, enum_names);
911
bool update(THD *thd, set_var *var);
912
uchar *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
913
bool check_update_type(Item_result type __attribute__((unused)))
915
void set_default(THD *thd, enum_var_type type);
916
SHOW_TYPE show_type() { return SHOW_CHAR; }
757
bool update(Session *session, set_var *var);
758
SHOW_TYPE show_type() { return SHOW_INT; }
920
761
/* Variable that you can only read from */
1011
class sys_var_thd_time_zone :public sys_var_thd
849
class sys_var_session_time_zone :public sys_var_session
1014
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,
1015
853
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
1016
:sys_var_thd(name_arg, NULL, binlog_status_arg)
854
:sys_var_session(name_arg, NULL, binlog_status_arg)
1018
no_support_one_shot= 0;
1019
856
chain_sys_var(chain);
1021
bool check(THD *thd, set_var *var);
858
bool check(Session *session, set_var *var);
1022
859
SHOW_TYPE show_type() { return SHOW_CHAR; }
1023
860
bool check_update_type(Item_result type)
1025
862
return type != STRING_RESULT; /* Only accept strings */
1027
bool check_default(enum_var_type type __attribute__((unused)))
864
bool check_default(enum_var_type)
1029
bool update(THD *thd, set_var *var);
1030
uchar *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
1031
virtual void set_default(THD *thd, enum_var_type type);
1035
class sys_var_max_user_conn : public sys_var_thd
1038
sys_var_max_user_conn(sys_var_chain *chain, const char *name_arg):
1039
sys_var_thd(name_arg)
1040
{ chain_sys_var(chain); }
1041
bool check(THD *thd, set_var *var);
1042
bool update(THD *thd, set_var *var);
1043
bool check_default(enum_var_type type)
1045
return type != OPT_GLOBAL || !option_limits;
1047
void set_default(THD *thd, enum_var_type type);
1048
SHOW_TYPE show_type() { return SHOW_INT; }
1049
uchar *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
1053
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
1055
875
uint64_t SV::*offset;
1057
877
sys_var_microseconds(sys_var_chain *chain, const char *name_arg,
1058
878
uint64_t SV::*offset_arg):
1059
sys_var_thd(name_arg), offset(offset_arg)
879
sys_var_session(name_arg), offset(offset_arg)
1060
880
{ chain_sys_var(chain); }
1061
bool check(THD *thd __attribute__((unused)),
1062
set_var *var __attribute__((unused))) {return 0;}
1063
bool update(THD *thd, set_var *var);
1064
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);
1065
884
SHOW_TYPE show_type() { return SHOW_DOUBLE; }
1066
885
bool check_update_type(Item_result type)
1068
887
return (type != INT_RESULT && type != REAL_RESULT && type != DECIMAL_RESULT);
1070
uchar *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
1074
Handler for setting the system variable --read-only.
1077
class sys_var_opt_readonly :public sys_var_bool_ptr
1080
sys_var_opt_readonly(sys_var_chain *chain, const char *name_arg,
1082
sys_var_bool_ptr(chain, name_arg, value_arg) {};
1083
~sys_var_opt_readonly() {};
1084
bool update(THD *thd, set_var *var);
1088
class sys_var_thd_lc_time_names :public sys_var_thd
1091
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,
1092
897
Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
1093
: sys_var_thd(name_arg, NULL, binlog_status_arg)
898
: sys_var_session(name_arg, NULL, binlog_status_arg)
1095
#if DRIZZLE_VERSION_ID < 50000
1096
no_support_one_shot= 0;
1098
900
chain_sys_var(chain);
1100
bool check(THD *thd, set_var *var);
902
bool check(Session *session, set_var *var);
1101
903
SHOW_TYPE show_type() { return SHOW_CHAR; }
1102
904
bool check_update_type(Item_result type)
1104
906
return ((type != STRING_RESULT) && (type != INT_RESULT));
1106
bool check_default(enum_var_type type __attribute__((unused)))
908
bool check_default(enum_var_type)
1108
bool update(THD *thd, set_var *var);
1109
uchar *value_ptr(THD *thd, enum_var_type type, LEX_STRING *base);
1110
virtual void set_default(THD *thd, enum_var_type type);
1114
extern void fix_binlog_format_after_update(THD *thd, enum_var_type type);
1116
class sys_var_thd_binlog_format :public sys_var_thd_enum
1119
sys_var_thd_binlog_format(sys_var_chain *chain, const char *name_arg,
1120
ulong SV::*offset_arg)
1121
:sys_var_thd_enum(chain, name_arg, offset_arg,
1122
&binlog_format_typelib,
1123
fix_binlog_format_after_update)
1125
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);
1128
917
/****************************************************************************
1129
918
Classes for parsing of the SET command