~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to server/sql_plugin.cc

  • Committer: Brian Aker
  • Date: 2008-07-12 16:33:42 UTC
  • Revision ID: brian@tangent.org-20080712163342-3oqsrz3vm650hggu
Refactoring around sql_plugin.

Show diffs side-by-side

added added

removed removed

Lines of Context:
876
876
  if (!plugin)
877
877
    return;
878
878
  intern_plugin_unlock(lex, plugin);
879
 
  reap_plugins();
880
879
  return;
881
880
}
882
881
 
887
886
  assert(list);
888
887
  while (count--)
889
888
    intern_plugin_unlock(lex, *list++);
890
 
  reap_plugins();
891
889
  return;
892
890
}
893
891
 
1747
1745
  Returns the 'bookmark' for the named variable.
1748
1746
  LOCK_system_variables_hash should be at least read locked
1749
1747
*/
1750
 
static st_bookmark *find_bookmark(const char *plugin, const char *name,
1751
 
                                  int flags)
 
1748
static st_bookmark *find_bookmark(const char *plugin, const char *name, int flags)
1752
1749
{
1753
1750
  st_bookmark *result= NULL;
1754
1751
  uint namelen, length, pluginlen= 0;
2071
2068
      intern_plugin_unlock(NULL, *list--);
2072
2069
  }
2073
2070
 
2074
 
  reap_plugins();
2075
 
 
2076
2071
  reset_dynamic(&thd->lex->plugins);
2077
2072
 
2078
2073
  return;
2447
2442
 
2448
2443
 
2449
2444
static int construct_options(MEM_ROOT *mem_root, struct st_plugin_int *tmp,
2450
 
                             my_option *options, my_bool **enabled,
2451
 
                             bool can_disable)
 
2445
                             my_option *options, bool can_disable)
2452
2446
{
2453
2447
  const char *plugin_name= tmp->plugin->name;
2454
2448
  uint namelen= strlen(plugin_name), optnamelen;
2481
2475
    options[0].comment= name + namelen*2 + 10;
2482
2476
  }
2483
2477
 
2484
 
  /*
2485
 
    NOTE: 'name' is one char above the allocated buffer!
2486
 
    NOTE: This code assumes that 'my_bool' and 'char' are of same size.
2487
 
  */
2488
 
  *((my_bool *)(name -1))= **enabled;
2489
 
  *enabled= (my_bool *)(name - 1);
2490
 
 
2491
 
 
2492
2478
  options[1].name= (options[0].name= name) + namelen + 1;
2493
2479
  options[0].id= options[1].id= 256; /* must be >255. dup id ok */
2494
2480
  options[0].var_type= options[1].var_type= GET_BOOL;
2495
2481
  options[0].arg_type= options[1].arg_type= NO_ARG;
2496
 
  options[0].def_value= options[1].def_value= **enabled;
 
2482
  options[0].def_value= options[1].def_value= true;
2497
2483
  options[0].value= options[0].u_max_value=
2498
2484
  options[1].value= options[1].u_max_value= (char**) (name - 1);
2499
2485
  options+= 2;
2674
2660
{
2675
2661
  st_mysql_sys_var **opt;
2676
2662
  my_option *opts;
2677
 
  my_bool dummy, can_disable;
2678
 
  my_bool *dummy2= &dummy;
 
2663
  bool can_disable;
2679
2664
  uint count= EXTRA_OPTIONS;
2680
2665
 
2681
2666
  for (opt= p->plugin->system_vars; opt && *opt; opt++, count+= 2) {};
2685
2670
 
2686
2671
  bzero(opts, sizeof(my_option) * count);
2687
2672
 
2688
 
  dummy= TRUE; /* plugin is enabled. */
2689
 
 
2690
 
  can_disable=
2691
 
      my_strcasecmp(&my_charset_latin1, p->name.str, "MyISAM") &&
2692
 
      my_strcasecmp(&my_charset_latin1, p->name.str, "MEMORY");
2693
 
 
2694
 
  if (construct_options(mem_root, p, opts, &dummy2, can_disable))
 
2673
  if ((my_strcasecmp(&my_charset_latin1, p->name.str, "MyISAM") == 0))
 
2674
    can_disable= false;
 
2675
  else if ((my_strcasecmp(&my_charset_latin1, p->name.str, "MEMORY") == 0))
 
2676
    can_disable= false;
 
2677
  else
 
2678
    can_disable= true;
 
2679
 
 
2680
 
 
2681
  if (construct_options(mem_root, p, opts, can_disable))
2695
2682
    return(NULL);
2696
2683
 
2697
2684
  return(opts);
2715
2702
                               int *argc, char **argv)
2716
2703
{
2717
2704
  struct sys_var_chain chain= { NULL, NULL };
2718
 
  my_bool default_enabled= true;
2719
 
  my_bool enabled_saved= default_enabled, can_disable;
2720
 
  my_bool *enabled= &default_enabled;
 
2705
  bool enabled_saved= true;
 
2706
  bool can_disable;
2721
2707
  MEM_ROOT *mem_root= alloc_root_inited(&tmp->mem_root) ?
2722
2708
                      &tmp->mem_root : &plugin_mem_root;
2723
2709
  st_mysql_sys_var **opt;
2733
2719
  for (opt= tmp->plugin->system_vars; opt && *opt; opt++)
2734
2720
    count+= 2; /* --{plugin}-{optname} and --plugin-{plugin}-{optname} */
2735
2721
 
2736
 
  can_disable=
2737
 
      my_strcasecmp(&my_charset_latin1, tmp->name.str, "MyISAM") &&
2738
 
      my_strcasecmp(&my_charset_latin1, tmp->name.str, "MEMORY");
 
2722
  if ((my_strcasecmp(&my_charset_latin1, tmp->name.str, "MyISAM") == 0))
 
2723
    can_disable= false;
 
2724
  else if ((my_strcasecmp(&my_charset_latin1, tmp->name.str, "MEMORY") == 0))
 
2725
    can_disable= false;
 
2726
  else
 
2727
    can_disable= true;
2739
2728
 
2740
2729
  if (count > EXTRA_OPTIONS || (*argc > 1))
2741
2730
  {
2746
2735
    }
2747
2736
    bzero(opts, sizeof(my_option) * count);
2748
2737
 
2749
 
    if (construct_options(tmp_root, tmp, opts, &enabled, can_disable))
 
2738
    if (construct_options(tmp_root, tmp, opts, can_disable))
2750
2739
    {
2751
2740
      sql_print_error("Bad options for plugin '%s'.", tmp->name.str);
2752
2741
      return(-1);
2763
2752
    }
2764
2753
  }
2765
2754
 
2766
 
  if (!*enabled && !can_disable)
2767
 
  {
2768
 
    sql_print_warning("Plugin '%s' cannot be disabled", tmp->name.str);
2769
 
    *enabled= TRUE;
2770
 
  }
2771
 
 
2772
2755
  error= 1;
2773
2756
 
2774
 
  if (*enabled)
2775
2757
  {
2776
2758
    for (opt= tmp->plugin->system_vars; opt && *opt; opt++)
2777
2759
    {