List:Commits« Previous MessageNext Message »
From:Andrei Elkin Date:December 9 2010 5:46pm
Subject:bzr commit into mysql-next-mr-wl5569 branch (andrei.elkin:3238)
View as plain text  
#At file:///home/andrei/MySQL/BZR/2a-23May/WL/mysql-next-mr-wl5569/ based on revid:andrei.elkin@stripped

 3238 Andrei Elkin	2010-12-09 [merge]
      merge from wl5569 repo to a local branch

    added:
      mysql-test/include/not_worker_info_table.inc
      mysql-test/suite/sys_vars/r/worker_info_repository_basic.result
      mysql-test/suite/sys_vars/t/worker_info_repository_basic.test
    modified:
      mysql-test/r/information_schema.result
      mysql-test/r/mysqld--help-notwin.result
      mysql-test/r/mysqld--help-win.result
      mysql-test/suite/rpl/t/rpl_parallel-slave.opt
      sql/rpl_info_dummy.cc
      sql/rpl_info_dummy.h
      sql/rpl_info_factory.cc
      sql/rpl_info_factory.h
      sql/rpl_rli_pdb.h
      sql/rpl_slave.cc
      sql/sys_vars.cc
=== added file 'mysql-test/include/not_worker_info_table.inc'
--- a/mysql-test/include/not_worker_info_table.inc	1970-01-01 00:00:00 +0000
+++ b/mysql-test/include/not_worker_info_table.inc	2010-12-09 13:23:19 +0000
@@ -0,0 +1,4 @@
+if (`SELECT @@GLOBAL.worker_info_repository = 'TABLE'`)
+{
+     skip Test cannot run with worker.info repository table;
+}

=== modified file 'mysql-test/r/information_schema.result'
--- a/mysql-test/r/information_schema.result	2010-12-08 00:33:48 +0000
+++ b/mysql-test/r/information_schema.result	2010-12-08 23:04:43 +0000
@@ -877,7 +877,7 @@ AND table_name not like 'ndb%' AND table
 GROUP BY TABLE_SCHEMA;
 table_schema	count(*)
 information_schema	30
-mysql	25
+mysql	26
 create table t1 (i int, j int);
 create trigger trg1 before insert on t1 for each row
 begin

=== modified file 'mysql-test/r/mysqld--help-notwin.result'
--- a/mysql-test/r/mysqld--help-notwin.result	2010-12-08 01:30:32 +0000
+++ b/mysql-test/r/mysqld--help-notwin.result	2010-12-09 13:23:19 +0000
@@ -767,6 +767,9 @@ The following options may be given as th
  -V, --version       Output version information and exit.
  --wait-timeout=#    The number of seconds the server waits for activity on a
  connection before closing it
+ --worker-info-repository=name 
+ Defines the type of the repository for the worker
+ information.
 
 Variables (--variable-name=value)
 abort-slave-event-count 0
@@ -1002,6 +1005,7 @@ transaction-prealloc-size 4096
 updatable-views-with-limit YES
 verbose TRUE
 wait-timeout 28800
+worker-info-repository FILE
 
 To see what values a running MySQL server is using, type
 'mysqladmin variables' instead of 'mysqld --verbose --help'.

=== modified file 'mysql-test/r/mysqld--help-win.result'
--- a/mysql-test/r/mysqld--help-win.result	2010-12-08 01:30:32 +0000
+++ b/mysql-test/r/mysqld--help-win.result	2010-12-09 13:23:19 +0000
@@ -771,6 +771,9 @@ The following options may be given as th
  -V, --version       Output version information and exit.
  --wait-timeout=#    The number of seconds the server waits for activity on a
  connection before closing it
+ --worker-info-repository=name 
+ Defines the type of the repository for the worker
+ information.
 
 Variables (--variable-name=value)
 abort-slave-event-count 0
@@ -1008,6 +1011,7 @@ transaction-prealloc-size 4096
 updatable-views-with-limit YES
 verbose TRUE
 wait-timeout 28800
+worker-info-repository FILE
 
 To see what values a running MySQL server is using, type
 'mysqladmin variables' instead of 'mysqld --verbose --help'.

=== modified file 'mysql-test/suite/rpl/t/rpl_parallel-slave.opt'
--- a/mysql-test/suite/rpl/t/rpl_parallel-slave.opt	2010-12-07 03:05:41 +0000
+++ b/mysql-test/suite/rpl/t/rpl_parallel-slave.opt	2010-12-09 16:17:32 +0000
@@ -1 +1 @@
---relay-log-info-repository=TABLE --slave-parallel-workers=4
+--slave-parallel-workers=4

=== added file 'mysql-test/suite/sys_vars/r/worker_info_repository_basic.result'
--- a/mysql-test/suite/sys_vars/r/worker_info_repository_basic.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/sys_vars/r/worker_info_repository_basic.result	2010-12-09 13:23:19 +0000
@@ -0,0 +1,44 @@
+'#---------------------BS_STVARS_002_01----------------------#'
+SELECT @@GLOBAL.worker_info_repository;
+@@GLOBAL.worker_info_repository
+FILE
+SELECT COUNT(@@GLOBAL.worker_info_repository);
+COUNT(@@GLOBAL.worker_info_repository)
+1
+1 Expected
+SELECT COUNT(@@SESSION.worker_info_repository);
+ERROR HY000: Variable 'worker_info_repository' is a GLOBAL variable
+'#---------------------BS_STVARS_002_02----------------------#'
+SET @@GLOBAL.worker_info_repository= "TABLE";
+ERROR HY000: Variable 'worker_info_repository' is a read only variable
+SELECT @@GLOBAL.worker_info_repository;
+@@GLOBAL.worker_info_repository
+FILE
+'#---------------------BS_STVARS_002_03----------------------#'
+SELECT @@GLOBAL.worker_info_repository = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='worker_info_repository';
+@@GLOBAL.worker_info_repository = VARIABLE_VALUE
+1
+1 Expected
+SELECT COUNT(@@GLOBAL.worker_info_repository);
+COUNT(@@GLOBAL.worker_info_repository)
+1
+1 Expected
+SELECT COUNT(VARIABLE_VALUE)
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='worker_info_repository';
+COUNT(VARIABLE_VALUE)
+1
+1 Expected
+'#---------------------BS_STVARS_002_05----------------------#'
+SELECT COUNT(@@worker_info_repository);
+COUNT(@@worker_info_repository)
+1
+1 Expected
+SELECT COUNT(@@local.worker_info_repository);
+ERROR HY000: Variable 'worker_info_repository' is a GLOBAL variable
+SELECT COUNT(@@GLOBAL.worker_info_repository);
+COUNT(@@GLOBAL.worker_info_repository)
+1
+1 Expected

=== added file 'mysql-test/suite/sys_vars/t/worker_info_repository_basic.test'
--- a/mysql-test/suite/sys_vars/t/worker_info_repository_basic.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/sys_vars/t/worker_info_repository_basic.test	2010-12-09 13:23:19 +0000
@@ -0,0 +1,76 @@
+############## mysql-test\t\worker_info_repository_basic.test #################
+#                                                                             #
+# Variable Name: worker_info_repository                                       #
+# Scope: Global                                                               #
+# Access Type: Static                                                         #
+# Data Type: enumeration                                                      #
+#                                                                             #
+#                                                                             #
+# Creation Date: 2010-12-09                                                   #
+# Author : Alfranio Correia                                                   #
+#                                                                             #
+#                                                                             #
+# Description:Test Cases of System Variable worker_info_repository            #
+#             that checks the behavior of this variable in the following ways #
+#              * Value Check                                                  #
+#              * Scope Check                                                  #
+#                                                                             #
+# Reference:                                                                  #
+#    http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html      #
+#                                                                             #
+###############################################################################
+--source include/not_worker_info_table.inc
+
+--echo '#---------------------BS_STVARS_002_01----------------------#'
+####################################################################
+#   Displaying default value                                       #
+####################################################################
+SELECT @@GLOBAL.worker_info_repository;
+
+SELECT COUNT(@@GLOBAL.worker_info_repository);
+--echo 1 Expected
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SELECT COUNT(@@SESSION.worker_info_repository);
+
+--echo '#---------------------BS_STVARS_002_02----------------------#'
+####################################################################
+#   Check if Value can set                                         #
+####################################################################
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SET @@GLOBAL.worker_info_repository= "TABLE";
+
+SELECT @@GLOBAL.worker_info_repository;
+
+
+--echo '#---------------------BS_STVARS_002_03----------------------#'
+#################################################################
+# Check if the value in GLOBAL Table matches value in variable  #
+#################################################################
+SELECT @@GLOBAL.worker_info_repository = VARIABLE_VALUE
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='worker_info_repository';
+--echo 1 Expected
+
+SELECT COUNT(@@GLOBAL.worker_info_repository);
+--echo 1 Expected
+
+SELECT COUNT(VARIABLE_VALUE)
+FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
+WHERE VARIABLE_NAME='worker_info_repository';
+--echo 1 Expected
+
+
+--echo '#---------------------BS_STVARS_002_05----------------------#'
+################################################################################
+#   Check if worker_info_repository can be accessed with and without @@ sign   #
+################################################################################
+
+SELECT COUNT(@@worker_info_repository);
+--echo 1 Expected
+
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+SELECT COUNT(@@local.worker_info_repository);
+
+SELECT COUNT(@@GLOBAL.worker_info_repository);
+--echo 1 Expected

=== modified file 'sql/rpl_info_dummy.cc'
--- a/sql/rpl_info_dummy.cc	2010-12-07 03:05:41 +0000
+++ b/sql/rpl_info_dummy.cc	2010-12-09 16:17:32 +0000
@@ -16,8 +16,8 @@
 #include <my_global.h>
 #include "rpl_info_dummy.h"
 
-Rpl_info_dummy::Rpl_info_dummy()
-  :Rpl_info_handler(0)
+Rpl_info_dummy::Rpl_info_dummy(const int nparam)
+  :Rpl_info_handler(nparam)
 {
 }
 
@@ -31,6 +31,7 @@ int Rpl_info_dummy::do_prepare_info_for_
                                              __attribute__((unused)))
 {
   if (abort) DBUG_ASSERT(0);
+  cursor= 0;
   return 0;
 }
 
@@ -38,6 +39,7 @@ int Rpl_info_dummy::do_prepare_info_for_
                                               __attribute__((unused)))
 {
   if (abort) DBUG_ASSERT(0);
+  cursor= 0;
   return 0;
 }
 

=== modified file 'sql/rpl_info_dummy.h'
--- a/sql/rpl_info_dummy.h	2010-12-07 03:05:41 +0000
+++ b/sql/rpl_info_dummy.h	2010-12-09 16:17:32 +0000
@@ -30,7 +30,7 @@
 class Rpl_info_dummy : public Rpl_info_handler
 {
 public:
-  Rpl_info_dummy();
+  Rpl_info_dummy(const int nparam);
   virtual ~Rpl_info_dummy() { };
 
 private:

=== modified file 'sql/rpl_info_factory.cc'
--- a/sql/rpl_info_factory.cc	2010-12-08 01:30:32 +0000
+++ b/sql/rpl_info_factory.cc	2010-12-09 16:17:32 +0000
@@ -24,11 +24,11 @@
 */
 #define master_info_engine NULL
 #define relay_log_info_engine NULL
+#define worker_info_engine NULL
 
 #define NUMBER_OF_FIELDS_TO_IDENTIFY_COORDINATOR 1
 #define NUMBER_OF_FIELDS_TO_IDENTIFY_WORKER 2
 
-
 /**
   Creates both a Master info and a Relay log info repository whose types are
   defined as parameters.
@@ -139,7 +139,8 @@ Master_info *Rpl_info_factory::create_mi
     DBUG_RETURN(mi);
   }
 
-  if (Rpl_info_factory::create_info_dummy(mi))
+  if (Rpl_info_factory::create_info_dummy(mi,
+                                          mi->get_number_info_mi_fields()))
     goto err;
 
   DBUG_RETURN(mi);
@@ -239,7 +240,8 @@ Relay_log_info *Rpl_info_factory::create
     DBUG_RETURN(rli);
   }
 
-  if (Rpl_info_factory::create_info_dummy(rli))
+  if (Rpl_info_factory::create_info_dummy(rli,
+                                          rli->get_number_info_rli_fields()))
     goto err;
 
   DBUG_RETURN(rli);
@@ -414,7 +416,7 @@ bool Rpl_info_factory::change_engine(Rpl
   DBUG_RETURN(FALSE);
 }
 
-Slave_worker *Rpl_info_factory::create_worker(uint rli_option, Relay_log_info *rli, uint worker_id)
+Slave_worker *Rpl_info_factory::create_worker(uint worker_option, uint worker_id)
 {
   DBUG_ENTER("Rpl_info_factory::create_worker");
 
@@ -444,12 +446,12 @@ Slave_worker *Rpl_info_factory::create_w
   key_info_idx[1]= worker_id;
   worker->set_idx_info(key_info_idx, NUMBER_OF_FIELDS_TO_IDENTIFY_WORKER);
 
-  DBUG_ASSERT(rli_option == RLI_REPOSITORY_FILE ||
-              rli_option == RLI_REPOSITORY_TABLE ||
-              rli_option == RLI_REPOSITORY_DUMMY);
+  DBUG_ASSERT(worker_option == WORKER_REPOSITORY_FILE ||
+              worker_option == WORKER_REPOSITORY_TABLE ||
+              worker_option == WORKER_REPOSITORY_DUMMY);
 
-  if (rli_option == RLI_REPOSITORY_FILE ||
-      rli_option == RLI_REPOSITORY_TABLE)
+  if (worker_option == WORKER_REPOSITORY_FILE ||
+      worker_option == WORKER_REPOSITORY_TABLE)
   {
     /*
       Now we instantiate all info repos and later decide which one to take,
@@ -470,18 +472,19 @@ Slave_worker *Rpl_info_factory::create_w
      only TABLES as repositories. /Alfranio
     */
     if (decide_repository(worker, &w_table, &w_file,
-                          rli_option == MI_REPOSITORY_TABLE, &msg))
+                          worker_option == MI_REPOSITORY_TABLE, &msg))
       goto err;
 
-    if ((rli_option == RLI_REPOSITORY_TABLE) &&
+    if ((worker_option == WORKER_REPOSITORY_TABLE) &&
          change_engine(static_cast<Rpl_info_table *>(w_table),
-                       relay_log_info_engine, &msg))
+                       worker_info_engine, &msg))
       goto err;
 
     DBUG_RETURN(worker);
   }
 
-  if (Rpl_info_factory::create_info_dummy(rli))
+  if (Rpl_info_factory::create_info_dummy(worker,
+                                          worker->get_number_worker_fields()))
     goto err;
 
   DBUG_RETURN(worker);
@@ -507,13 +510,13 @@ err:
   DBUG_RETURN(NULL);
 }
 
-bool Rpl_info_factory::create_info_dummy(Rpl_info *rpl)
+bool Rpl_info_factory::create_info_dummy(Rpl_info *rpl, uint nfields)
 {
   DBUG_ENTER("Rpl_info_factory::create_info_dummy");
 
   Rpl_info_dummy* rpl_dummy= NULL;
 
-  if (!(rpl_dummy= new Rpl_info_dummy()))
+  if (!(rpl_dummy= new Rpl_info_dummy(nfields)))
     DBUG_RETURN(TRUE);
 
   rpl->set_rpl_info_handler(rpl_dummy);

=== modified file 'sql/rpl_info_factory.h'
--- a/sql/rpl_info_factory.h	2010-11-30 02:08:01 +0000
+++ b/sql/rpl_info_factory.h	2010-12-09 16:17:32 +0000
@@ -41,6 +41,14 @@ enum enum_rli_repository
 };
 extern ulong opt_rli_repository_id;
 
+enum enum_worker_repository
+{
+  WORKER_REPOSITORY_FILE= 0,
+  WORKER_REPOSITORY_TABLE= 1,
+  WORKER_REPOSITORY_DUMMY= 2
+};
+extern ulong opt_worker_repository_id;
+
 #define MI_SCHEMA "mysql"
 #define MI_TABLE  "slave_master_info"
 
@@ -56,8 +64,7 @@ class Rpl_info_factory
 
   static bool create_coordinators(uint mi_option, Master_info **mi,
                                   uint rli_option, Relay_log_info **rli);
-  static Slave_worker *create_worker(uint rli_option, Relay_log_info *rli,
-                                     uint worker_id);
+  static Slave_worker *create_worker(uint rli_option, uint worker_id);
   static Master_info *create_mi(uint rli_option);
   static Relay_log_info *create_rli(uint rli_option, bool is_slave_recovery);
   static bool decide_repository(Rpl_info *info,
@@ -66,6 +73,6 @@ class Rpl_info_factory
                                 const char **msg);
   static bool change_engine(Rpl_info_table *table, const char *engine,
                             const char **msg);
- static bool create_info_dummy(Rpl_info *rpl);
+ static bool create_info_dummy(Rpl_info *rpl, uint nfields);
 };
 #endif

=== modified file 'sql/rpl_rli_pdb.h'
--- a/sql/rpl_rli_pdb.h	2010-12-09 17:45:02 +0000
+++ b/sql/rpl_rli_pdb.h	2010-12-09 17:46:27 +0000
@@ -121,33 +121,7 @@ typedef struct st_slave_job_group
   char*    checkpoint_log_name;
 } Slave_job_group;
 
-#define copy_job(from, to) \
-  do \
-  { \
-    to.group_master_log_pos= from.group_master_log_pos; \
-    to.group_relay_log_pos= from.group_relay_log_pos; \
-    to.group_relay_log_name= from.group_relay_log_name; \
-    to.group_master_log_name= from.group_master_log_name; \
-    to.db_ids= from.db_ids; \
-    to.worker_id= from.worker_id; \
-  } while (0)
-
-#define exchange_jobs(j1, j2) \
-  do \
-  { \
-    Slave_job_group tmp; \
-    copy_job(j2, tmp); \
-    copy_job(j1, j2); \
-    copy_job(tmp, j1); \
-  } while (0)
-
-#define greater_jobs(j1, j2) \
-  (j1.group_relay_log_pos > j2.group_relay_log_pos)
-
-#define lower_jobs(j1, j2) \
-  (j1.group_relay_log_pos < j2.group_relay_log_pos)
-
-#define init_job(from, to) \
+#define get_job(from, to) \
   do \
   { \
     to.worker_id= from->id; \
@@ -168,19 +142,21 @@ typedef struct st_slave_job_group
     to.db_ids= from->curr_group_exec_parts; \
   } while (0)
 
-#define debug_jobs(jobs, size) \
+#define debug_jobs(jobs) \
   do \
   { \
-    for (uint pos= 0; pos < size; pos++) \
+     Slave_job_group job; \
+    for (uint pos= 0; pos < jobs.elements; pos++) \
     { \
+      get_dynamic(&jobs, (uchar *) &job, pos); \
       fprintf(stderr, "DEBUGGING Worker-Id %lu, " \
                        "group_relay_log_name %s, group_relay_log_pos %lu, " \
                        "group_master_log_name %s, group_master_lo_pos %lu\n", \
-                       jobs[pos].worker_id, \
-                       jobs[pos].group_relay_log_name, \
-                       (ulong) jobs[pos].group_relay_log_pos, \
-                       jobs[pos].group_master_log_name, \
-                       (ulong) jobs[pos].group_master_log_pos); \
+                       job.worker_id, \
+                       job.group_relay_log_name, \
+                       (ulong) job.group_relay_log_pos, \
+                       job.group_master_log_name, \
+                       (ulong) job.group_master_log_pos); \
     } \
   } while (0)
 

=== modified file 'sql/rpl_slave.cc'
--- a/sql/rpl_slave.cc	2010-12-09 17:45:02 +0000
+++ b/sql/rpl_slave.cc	2010-12-09 17:46:27 +0000
@@ -3796,67 +3796,40 @@ err:
   DBUG_RETURN(0); 
 }
 
-int mts_recovery_partition(Slave_job_group *jobs, int p /* pos_ini */, int r /* pos_end */)
+int mts_jobs_cmp(Slave_job_group *id1, Slave_job_group *id2)
 {
-  Slave_job_group x;
-
-  copy_job(jobs[p], x);
-
-  int i= p - 1;
-  int j= r + 1;
-
-  for (;;)
-  {
-    do
-    {
-      j= j - 1;
-    }
-    while (greater_jobs(jobs[j], x));
-
-    do
-    {
-      i= i + 1;
-    }
-    while (lower_jobs(jobs[i], x));
-
-    if (i < j)
-       exchange_jobs(jobs[i], jobs[j]); 
-    else
-      return j;
-  }
+  return id1->group_relay_log_pos < id2->group_relay_log_pos ? -1 :
+         (id1->group_relay_log_pos > id2->group_relay_log_pos ? 1 : 0);
 }
 
-void mts_recovery_quicksort(Slave_job_group *jobs, int p /* pos_ini */, int r /* pos_end */)
-{
-  if (p < r)
-  {
-    int q= mts_recovery_partition(jobs, p, r);
-    mts_recovery_quicksort(jobs, p, q);
-    mts_recovery_quicksort(jobs, q + 1, r);
-  }
-}
 
 bool mts_recovery_routine(Relay_log_info *rli)
 {
-  DBUG_ENTER("mts_recovery_routine");
+  DYNAMIC_ARRAY jobs;
+  Slave_job_group job;
 
+  DBUG_ENTER("mts_recovery_routine");
   DBUG_ASSERT(rli->workers.elements > 0);
-  Slave_job_group *jobs= new Slave_job_group[rli->workers.elements];
   
-  for (uint i= 0; i < rli->workers.elements; i++)
+  my_init_dynamic_array(&jobs, sizeof(Slave_job_group),
+                        rli->workers.elements, rli->workers.elements);
+
+  for (uint pos= 0; pos < rli->workers.elements; pos++)
   {
-    Slave_worker *w_i;
-    get_dynamic(&rli->workers, (uchar *) &w_i, i);
-    init_job(w_i, jobs[i]);
+    Slave_worker *worker;
+    get_dynamic(&rli->workers, (uchar *) &worker, pos);
+    get_job(worker, job);
+    insert_dynamic(&jobs, (uchar*) &job);
   }
-
-  mts_recovery_quicksort(jobs, 0, rli->workers.elements - 1);
-
-  debug_jobs(jobs, rli->workers.elements);
+  sort_dynamic(&jobs, (qsort_cmp) change_master_server_id_cmp);
+  
+  DBUG_ASSERT(rli->workers.elements == jobs.elements);
+  debug_jobs(jobs);
 
   // TODO -- ALFRANIO CORE OF RECOVERY
 
-  delete []jobs;
+  delete_dynamic(&jobs);
+  
   DBUG_RETURN(rli->flush_info(TRUE));
 }
 
@@ -3953,7 +3926,7 @@ int slave_start_single_worker(Relay_log_
   uint k;
   pthread_t th;
   Slave_worker *w=
-    Rpl_info_factory::create_worker(opt_rli_repository_id, rli, i);
+    Rpl_info_factory::create_worker(opt_worker_repository_id, i);
   Slave_job_item empty= {NULL};
 
   w->c_rli= rli;
@@ -3963,7 +3936,7 @@ int slave_start_single_worker(Relay_log_
   // fixme: experimenting to make Workers to run ev->update_pos(w->w_rli)
   // fixme: a real hack! part of Rpl_info_factory::create_rli(RLI_REPOSITORY_FILE, FALSE);
   w->w_rli= new Relay_log_info(FALSE);
-  Rpl_info_dummy *dummy_handler= new Rpl_info_dummy();
+  Rpl_info_dummy *dummy_handler= new Rpl_info_dummy(rli->get_number_info_rli_fields());
   w->w_rli->set_rpl_info_handler(dummy_handler);
   w->init_info();
   

=== modified file 'sql/sys_vars.cc'
--- a/sql/sys_vars.cc	2010-12-08 00:33:48 +0000
+++ b/sql/sys_vars.cc	2010-12-09 13:23:19 +0000
@@ -416,7 +416,11 @@ static Sys_var_mybool Sys_binlog_direct(
 
 static const char *repository_names[]=
 {
-  "FILE", "TABLE", 0
+  "FILE", "TABLE",
+#ifndef DBUG_OFF
+  "DUMMY",
+#endif
+  0
 };
 
 ulong opt_mi_repository_id;
@@ -433,6 +437,13 @@ static Sys_var_enum Sys_rli_repository(
        , READ_ONLY GLOBAL_VAR(opt_rli_repository_id), CMD_LINE(REQUIRED_ARG),
        repository_names, DEFAULT(0));
 
+ulong opt_worker_repository_id;
+static Sys_var_enum Sys_worker_repository(
+       "worker_info_repository",
+       "Defines the type of the repository for the worker information."
+       , READ_ONLY GLOBAL_VAR(opt_worker_repository_id), CMD_LINE(REQUIRED_ARG),
+       repository_names, DEFAULT(0));
+
 static Sys_var_mybool Sys_binlog_rows_query(
        "binlog_rows_query_log_events",
        "Allow writing of Rows_query_log events into binary log.",


Attachment: [text/bzr-bundle] bzr/andrei.elkin@oracle.com-20101209174627-x1mo1d7paldg00pu.bundle
Thread
bzr commit into mysql-next-mr-wl5569 branch (andrei.elkin:3238) Andrei Elkin9 Dec