From f071779791d2bae55a03a6f2e158907a1f40ae5e Mon Sep 17 00:00:00 2001
From: "tomas@poseidon.ndb.mysql.com" <>
Date: Fri, 21 Apr 2006 13:53:48 +0200
Subject: [PATCH] Bug #17230 Can't change character-sets-dir for ndbd

---
 mysql-test/mysql-test-run.pl | 3 ++-
 mysql-test/mysql-test-run.sh | 2 +-
 mysql-test/ndb/ndbcluster.sh | 6 +++++-
 ndb/include/util/ndb_opts.h  | 6 +++++-
 4 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl
index a045441e046..ea0e11a69d9 100755
--- a/mysql-test/mysql-test-run.pl
+++ b/mysql-test/mysql-test-run.pl
@@ -1457,7 +1457,8 @@ sub ndbcluster_start ($) {
   # FIXME, we want to _append_ output to file $file_ndb_testrun_log instead of /dev/null
   if ( mtr_run("$glob_mysql_test_dir/ndb/ndbcluster",
 	       ["--port=$opt_ndbcluster_port",
-		"--data-dir=$opt_vardir"],
+		"--data-dir=$opt_vardir",
+	        "--character-sets-dir=$path_charsetsdir"],
 	       "", "/dev/null", "", "") )
   {
     mtr_error("Error ndbcluster_start");
diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh
index d7e976f9d49..ba4d922413c 100644
--- a/mysql-test/mysql-test-run.sh
+++ b/mysql-test/mysql-test-run.sh
@@ -1241,7 +1241,7 @@ start_ndbcluster()
     else
       NDBCLUSTER_EXTRA_OPTS="--small"
     fi
-    ./ndb/ndbcluster $NDBCLUSTER_OPTS $NDBCLUSTER_EXTRA_OPTS --initial || NDB_STATUS_OK=0
+    ./ndb/ndbcluster $NDBCLUSTER_OPTS --character-sets-dir=$CHARSETSDIR $NDBCLUSTER_EXTRA_OPTS --initial || NDB_STATUS_OK=0
     if [ x$NDB_STATUS_OK != x1 ] ; then
       if [ x$FORCE != x1 ] ; then
         exit 1
diff --git a/mysql-test/ndb/ndbcluster.sh b/mysql-test/ndb/ndbcluster.sh
index c09c013552e..ad01f6574cf 100644
--- a/mysql-test/ndb/ndbcluster.sh
+++ b/mysql-test/ndb/ndbcluster.sh
@@ -60,6 +60,7 @@ ndb_imem=24M
 NDB_MGM_EXTRA_OPTS=
 NDB_MGMD_EXTRA_OPTS=
 NDBD_EXTRA_OPTS=
+CHARSETSDIR=
 
 while test $# -gt 0; do
   case "$1" in
@@ -106,6 +107,9 @@ while test $# -gt 0; do
     --ndbd-extra-opts=*)
      NDBD_EXTRA_OPTS=`echo "$1" | sed -e "s;--ndbd-extra-opts=;;"`
      ;;
+    --character-sets-dir=*)
+     CHARSETSDIR=`echo "$1" | sed -e "s;--character-sets-dir=;;"`
+     ;;
     -- )  shift; break ;;
     --* ) $ECHO "Unrecognized option: $1"; exit 1 ;;
     * ) break ;;
@@ -135,7 +139,7 @@ fi
 
 exec_mgmtclient="$exec_mgmtclient --no-defaults $NDB_MGM_EXTRA_OPTS"
 exec_mgmtsrvr="$exec_mgmtsrvr --no-defaults $NDB_MGMD_EXTRA_OPTS"
-exec_ndb="$exec_ndb --no-defaults $NDBD_EXTRA_OPTS"
+exec_ndb="$exec_ndb --no-defaults $NDBD_EXTRA_OPTS --character-sets-dir=$CHARSETSDIR"
 exec_waiter="$exec_waiter --no-defaults"
 
 ndb_host="localhost"
diff --git a/ndb/include/util/ndb_opts.h b/ndb/include/util/ndb_opts.h
index 787c32f06fd..08ab4a2e9df 100644
--- a/ndb/include/util/ndb_opts.h
+++ b/ndb/include/util/ndb_opts.h
@@ -84,7 +84,10 @@ const char *opt_debug= 0;
     0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },\
   { "core-file", OPT_WANT_CORE, "Write core on errors.",\
     (gptr*) &opt_core, (gptr*) &opt_core, 0,\
-    GET_BOOL, NO_ARG, OPT_WANT_CORE_DEFAULT, 0, 0, 0, 0, 0}
+    GET_BOOL, NO_ARG, OPT_WANT_CORE_DEFAULT, 0, 0, 0, 0, 0},\
+  {"character-sets-dir", OPT_CHARSETS_DIR,\
+     "Directory where character sets are.", (gptr*) &charsets_dir,\
+     (gptr*) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}\
 
 #ifndef DBUG_OFF
 #define NDB_STD_OPTS(prog_name) \
@@ -111,6 +114,7 @@ enum ndb_std_options {
   OPT_WANT_CORE,
   OPT_NDB_MGMD,
   OPT_NDB_NODEID,
+  OPT_CHARSETS_DIR,
   NDB_STD_OPTIONS_LAST /* should always be last in this enum */
 };