List:Commits« Previous MessageNext Message »
From:Ignacio Galarza Date:July 23 2007 1:07pm
Subject:bk commit into 5.1 tree (iggy:1.2577) BUG#29903
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of iggy. When iggy does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@stripped, 2007-07-23 09:07:19-04:00, iggy@alf.(none) +6 -0
  Bug#29903 The CMake build method does not produce the embedded library.
  - The Windows embedded solution must not depend on mysqld for resource
  generation or as a mtr tool. Change test_libmysql to allow server 
  arguments to be passed from the command line. Add client command to 
  generate necessary feature informaiton for mtr. Change mtr to use 
  test_libmysqld in place of mysqld.

  BitKeeper/etc/ignore@stripped, 2007-07-23 09:07:16-04:00, iggy@alf.(none) +2 -0
    Bug#29903 The CMake build method does not produce the embedded library.
    - Ignore auto-generated Windows embedded resources.

  CMakeLists.txt@stripped, 2007-07-23 09:07:16-04:00, iggy@alf.(none) +7 -6
    Bug#29903 The CMake build method does not produce the embedded library.
    - Hardcode CSV for embedded build.
    - Add client directory for gen_lex_hash dependency.

  client/CMakeLists.txt@stripped, 2007-07-23 09:07:16-04:00, iggy@alf.(none) +36 -33
    Bug#29903 The CMake build method does not produce the embedded library.
    - Build the mysqlclient library and echo for the embedded solution.

  client/mysql.cc@stripped, 2007-07-23 09:07:16-04:00, iggy@alf.(none) +46 -17
    Bug#29903 The CMake build method does not produce the embedded library.
    - Remove deprecated command.
    - Add server-arg command line parameter.
    - Add new 'feature' client command.

  libmysqld/CMakeLists.txt@stripped, 2007-07-23 09:07:16-04:00, iggy@alf.(none) +49 -3
    Bug#29903 The CMake build method does not produce the embedded library.
    - Added auto generated resources; sql_yacc.cc, sql_yacc.h, message.rc
    message.h and lex_hash.h.
    - Link csv library to libmsyqld.

  mysql-test/mysql-test-run.pl@stripped, 2007-07-23 09:07:16-04:00, iggy@alf.(none) +114 -64
    Bug#29903 The CMake build method does not produce the embedded library.
    - No mysqld binary is produced as part of the embedded build. Use 
    test_libmysqld to retrieve necessary information and for the bootstrap
    process.

diff -Nrup a/BitKeeper/etc/ignore b/BitKeeper/etc/ignore
--- a/BitKeeper/etc/ignore	2007-07-06 06:37:04 -04:00
+++ b/BitKeeper/etc/ignore	2007-07-23 09:07:16 -04:00
@@ -1106,6 +1106,8 @@ libmysqld/log.cc
 libmysqld/log_event.cc
 libmysqld/log_event_old.cc
 libmysqld/md5.c
+libmysqld/message.h
+libmysqld/message.rc
 libmysqld/mf_iocache.cc
 libmysqld/mini_client.cc
 libmysqld/my_decimal.cc
diff -Nrup a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt	2007-06-26 14:23:59 -04:00
+++ b/CMakeLists.txt	2007-07-23 09:07:16 -04:00
@@ -28,12 +28,13 @@ INCLUDE(win/configure.data)
 # Debug default CXX_FLAGS           "/D_DEBUG /MDd /Zi /Ob0 /Od /RTC1"
 # RelWithDebInfo default CXX_FLAGS  "/MD /Zi /O2 /Ob1 /D NDEBUG"
 #
-IF(NOT EMBEDDED_ONLY)
-  # Hardcode support for CSV storage engine
-  SET(WITH_CSV_STORAGE_ENGINE TRUE)
-ELSE(NOT EMBEDDED_ONLY)
+
+# Hardcode support for CSV storage engine
+SET(WITH_CSV_STORAGE_ENGINE TRUE)
+
+IF(EMBEDDED_ONLY)
   SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MD /Zi /Od /Ob0 /D NDEBUG" CACHE STRING "No Optimization" FORCE)
-ENDIF(NOT EMBEDDED_ONLY)
+ENDIF(EMBEDDED_ONLY)
 
 CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/mysql_version.h.in
                ${CMAKE_SOURCE_DIR}/include/mysql_version.h @ONLY)
@@ -212,6 +213,7 @@ ENDIF(WITH_FEDERATED_STORAGE_ENGINE)
 IF(WITH_INNOBASE_STORAGE_ENGINE)
   ADD_SUBDIRECTORY(storage/innobase)
 ENDIF(WITH_INNOBASE_STORAGE_ENGINE)
+ADD_SUBDIRECTORY(client)
 # CMAKE will not allow custom VS7+ configurations.  mysqld and libmysqld
 # cannot be built at the same time as they require different configurations
 IF(EMBEDDED_ONLY) 
@@ -219,7 +221,6 @@ IF(EMBEDDED_ONLY) 
   ADD_SUBDIRECTORY(libmysqld)
   ADD_SUBDIRECTORY(libmysqld/examples)
 ELSE(EMBEDDED_ONLY)
-  ADD_SUBDIRECTORY(client)
   ADD_SUBDIRECTORY(sql)
   ADD_SUBDIRECTORY(server-tools/instance-manager)
   ADD_SUBDIRECTORY(libmysql)
diff -Nrup a/client/CMakeLists.txt b/client/CMakeLists.txt
--- a/client/CMakeLists.txt	2007-06-16 00:17:17 -04:00
+++ b/client/CMakeLists.txt	2007-07-23 09:07:16 -04:00
@@ -104,40 +104,43 @@ ADD_LIBRARY(mysqlclient ../mysys/array.c
                         )
 
 ADD_DEPENDENCIES(mysqlclient GenError)
-ADD_EXECUTABLE(mysql completion_hash.cc mysql.cc readline.cc sql_string.cc)
-LINK_DIRECTORIES(${MYSQL_BINARY_DIR}/mysys ${MYSQL_BINARY_DIR}/zlib)
-TARGET_LINK_LIBRARIES(mysql mysqlclient mysys zlib dbug wsock32)
 
-ADD_EXECUTABLE(mysqltest mysqltest.c)
-TARGET_LINK_LIBRARIES(mysqltest mysqlclient mysys zlib dbug regex wsock32)
-
-ADD_EXECUTABLE(mysqlcheck mysqlcheck.c)
-TARGET_LINK_LIBRARIES(mysqlcheck mysqlclient dbug zlib wsock32)
-
-ADD_EXECUTABLE(mysqldump mysqldump.c ../sql-common/my_user.c)
-TARGET_LINK_LIBRARIES(mysqldump mysqlclient mysys dbug zlib wsock32)
-
-ADD_EXECUTABLE(mysqlimport mysqlimport.c)
-TARGET_LINK_LIBRARIES(mysqlimport mysqlclient mysys dbug zlib wsock32)
-
-ADD_EXECUTABLE(mysql_upgrade mysql_upgrade.c ../mysys/my_getpagesize.c)
-TARGET_LINK_LIBRARIES(mysql_upgrade mysqlclient dbug zlib wsock32)
-ADD_DEPENDENCIES(mysql_upgrade GenFixPrivs)
-
-ADD_EXECUTABLE(mysqlshow mysqlshow.c)
-TARGET_LINK_LIBRARIES(mysqlshow mysqlclient mysys dbug zlib wsock32)
-
-ADD_EXECUTABLE(mysqlbinlog mysqlbinlog.cc ../mysys/mf_tempdir.c ../mysys/my_new.cc
-                           ../mysys/my_bit.c ../mysys/my_bitmap.c ../mysys/my_vle.c
-                           ../mysys/base64.c)
-TARGET_LINK_LIBRARIES(mysqlbinlog mysqlclient dbug zlib wsock32)
-
-ADD_EXECUTABLE(mysqladmin mysqladmin.cc)
-TARGET_LINK_LIBRARIES(mysqladmin mysqlclient mysys dbug zlib wsock32)
-
-ADD_EXECUTABLE(mysqlslap mysqlslap.c)
-SET_SOURCE_FILES_PROPERTIES(mysqlslap.c PROPERTIES COMPILE_FLAGS "-DTHREADS")
-TARGET_LINK_LIBRARIES(mysqlslap mysqlclient mysys zlib wsock32 dbug)
+IF(NOT EMBEDDED_ONLY)
+  ADD_EXECUTABLE(mysql completion_hash.cc mysql.cc readline.cc sql_string.cc)
+  LINK_DIRECTORIES(${MYSQL_BINARY_DIR}/mysys ${MYSQL_BINARY_DIR}/zlib)
+  TARGET_LINK_LIBRARIES(mysql mysqlclient mysys zlib dbug wsock32)
+  
+  ADD_EXECUTABLE(mysqltest mysqltest.c)
+  TARGET_LINK_LIBRARIES(mysqltest mysqlclient mysys zlib dbug regex wsock32)
+  
+  ADD_EXECUTABLE(mysqlcheck mysqlcheck.c)
+  TARGET_LINK_LIBRARIES(mysqlcheck mysqlclient dbug zlib wsock32)
+  
+  ADD_EXECUTABLE(mysqldump mysqldump.c ../sql-common/my_user.c)
+  TARGET_LINK_LIBRARIES(mysqldump mysqlclient mysys dbug zlib wsock32)
+  
+  ADD_EXECUTABLE(mysqlimport mysqlimport.c)
+  TARGET_LINK_LIBRARIES(mysqlimport mysqlclient mysys dbug zlib wsock32)
+  
+  ADD_EXECUTABLE(mysql_upgrade mysql_upgrade.c ../mysys/my_getpagesize.c)
+  TARGET_LINK_LIBRARIES(mysql_upgrade mysqlclient dbug zlib wsock32)
+  ADD_DEPENDENCIES(mysql_upgrade GenFixPrivs)
+  
+  ADD_EXECUTABLE(mysqlshow mysqlshow.c)
+  TARGET_LINK_LIBRARIES(mysqlshow mysqlclient mysys dbug zlib wsock32)
+  
+  ADD_EXECUTABLE(mysqlbinlog mysqlbinlog.cc ../mysys/mf_tempdir.c ../mysys/my_new.cc
+                             ../mysys/my_bit.c ../mysys/my_bitmap.c ../mysys/my_vle.c
+                             ../mysys/base64.c)
+  TARGET_LINK_LIBRARIES(mysqlbinlog mysqlclient dbug zlib wsock32)
+  
+  ADD_EXECUTABLE(mysqladmin mysqladmin.cc)
+  TARGET_LINK_LIBRARIES(mysqladmin mysqlclient mysys dbug zlib wsock32)
+  
+  ADD_EXECUTABLE(mysqlslap mysqlslap.c)
+  SET_SOURCE_FILES_PROPERTIES(mysqlslap.c PROPERTIES COMPILE_FLAGS "-DTHREADS")
+  TARGET_LINK_LIBRARIES(mysqlslap mysqlclient mysys zlib wsock32 dbug)
+ENDIF(NOT EMBEDDED_ONLY)
 
 ADD_EXECUTABLE(echo echo.c)
 
diff -Nrup a/client/mysql.cc b/client/mysql.cc
--- a/client/mysql.cc	2007-05-23 18:39:16 -04:00
+++ b/client/mysql.cc	2007-07-23 09:07:16 -04:00
@@ -50,6 +50,7 @@ const char *VER= "14.13";
 
 /* Buffer to hold 'version' and 'version_comment' */
 #define MAX_SERVER_VERSION_LENGTH     128
+#define MAX_SERVER_ARGS               64
 
 void* sql_alloc(unsigned size);	     // Don't use mysqld alloc for these
 void sql_element_free(void *ptr);
@@ -193,7 +194,7 @@ static void tee_print_sized_data(const c
 static int get_options(int argc,char **argv);
 static int com_quit(String *str,char*),
 	   com_go(String *str,char*), com_ego(String *str,char*),
-	   com_print(String *str,char*),
+	   com_print(String *str,char*), com_feature(String *str,char*),
 	   com_help(String *str,char*), com_clear(String *str,char*),
 	   com_connect(String *str,char*), com_status(String *str,char*),
 	   com_use(String *str,char*), com_source(String *str, char*),
@@ -249,6 +250,7 @@ static COMMANDS commands[] = {
   { "ego",    'G', com_ego,    0,
     "Send command to mysql server, display result vertically."},
   { "exit",   'q', com_quit,   0, "Exit mysql. Same as quit."},
+  { "feature",'f', com_feature,0, "Display the embedded library features." },  
   { "go",     'g', com_go,     0, "Send command to mysql server." },
   { "help",   'h', com_help,   1, "Display this help." },
 #ifdef USE_POPEN
@@ -302,7 +304,10 @@ static COMMANDS commands[] = {
 };
 
 static const char *load_default_groups[]= { "mysql","client",0 };
-static const char *server_default_groups[]=
+
+static int         embedded_server_arg_count= 0;
+static char       *embedded_server_args[MAX_SERVER_ARGS];
+static const char *embedded_server_groups[]=
 { "server", "embedded", "mysql_SERVER", 0 };
 
 #ifdef HAVE_READLINE
@@ -347,15 +352,6 @@ static sig_handler handle_sigint(int sig
 int main(int argc,char *argv[])
 {
   char buff[80];
-  char *defaults, *extra_defaults, *group_suffix;
-  char *emb_argv[4];
-  int emb_argc;
-
-  /* Get --defaults-xxx args for mysql_server_init() */
-  emb_argc= get_defaults_options(argc, argv, &defaults, &extra_defaults,
-                                 &group_suffix)+1;
-  memcpy((char*) emb_argv, (char*) argv, emb_argc * sizeof(*argv));
-  emb_argv[emb_argc]= 0;
 
   MY_INIT(argv[0]);
   DBUG_ENTER("main");
@@ -416,7 +412,8 @@ int main(int argc,char *argv[])
     my_end(0);
     exit(1);
   }
-  if (mysql_server_init(emb_argc, emb_argv, (char**) server_default_groups))
+  if (mysql_server_init(embedded_server_arg_count, embedded_server_args, 
+                        (char**) embedded_server_groups))
   {
     free_defaults(defaults_argv);
     my_end(0);
@@ -496,7 +493,7 @@ int main(int argc,char *argv[])
   put_info(buff,INFO_INFO);
   status.exit_status= read_and_execute(!status.batch);
   if (opt_outfile)
-    end_tee();
+    end_tee(); 
   mysql_end(0);
 #ifndef _lint
   DBUG_RETURN(0);				// Keep compiler happy
@@ -539,6 +536,8 @@ sig_handler mysql_end(int sig)
   my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
 #endif
   my_free(current_prompt,MYF(MY_ALLOW_ZERO_PTR));
+  while (embedded_server_arg_count > 1)
+    my_free(embedded_server_args[--embedded_server_arg_count],MYF(0));
   mysql_server_end();
   free_defaults(defaults_argv);
   my_end(info_flag ? MY_CHECK_ERROR : 0);
@@ -589,9 +588,8 @@ static struct my_option my_long_options[
    "Enable automatic rehashing. One doesn't need to use 'rehash' to get table and field completion, but startup and reconnecting may take a longer time. Disable with --disable-auto-rehash.",
    (uchar**) &opt_rehash, (uchar**) &opt_rehash, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0,
    0, 0},
-  {"no-auto-rehash", 'A',
-   "No automatic rehashing. One has to use 'rehash' to get table and field completion. This gives a quicker start of mysql and disables rehashing on reconnect. WARNING: options deprecated; use --disable-auto-rehash instead.",
-   0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
+  {"server-arg", 'A', "Send embedded server this as a parameter.",
+   0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
   {"batch", 'B',
    "Don't use history file. Disable interactive behavior. (Enables --silent)", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
   {"character-sets-dir", OPT_CHARSETS_DIR,
@@ -890,7 +888,27 @@ get_one_option(int optid, const struct m
     break;
   break;
   case 'A':
-    opt_rehash= 0;
+#ifdef EMBEDDED_LIBRARY
+    /*
+      When the embedded server is being tested, the client needs to be
+      able to pass command-line arguments to the embedded server so it can
+      locate the language files and data directory.
+    */
+    if (!embedded_server_arg_count)
+    {
+      embedded_server_arg_count= 1;
+      embedded_server_args[0]= (char*) "";
+    }
+    if (embedded_server_arg_count == MAX_SERVER_ARGS-1 ||
+        !(embedded_server_args[embedded_server_arg_count++]=
+          my_strdup(argument, MYF(MY_FAE))))
+    {
+        put_info("Can't use server argument", INFO_ERROR);
+        return 0;
+    }
+#else /*EMBEDDED_LIBRARY */
+    printf("WARNING: --server-arg option not supported in this configuration.\n");
+#endif
     break;
   case 'N':
     column_names= 0;
@@ -1994,6 +2012,17 @@ com_charset(String *buffer __attribute__
   }
   else put_info("Charset is not found", INFO_INFO);
   return 0;
+}
+
+static int
+com_feature(String *buffer __attribute__((unused)),
+	   char *line __attribute__((unused)))
+{
+  String command(64);
+  command.append("show /*!40003 GLOBAL */ variables", 34);
+  tee_fprintf(stdout, "%s  Ver %s for %s on %s \n", my_progname, server_version_string(&mysql), SYSTEM_TYPE, MACHINE_TYPE);
+  tee_puts("-- --", stdout); 
+  return com_go(&command, 0);
 }
 
 /*
diff -Nrup a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt
--- a/libmysqld/CMakeLists.txt	2007-06-15 14:31:55 -04:00
+++ b/libmysqld/CMakeLists.txt	2007-07-23 09:07:16 -04:00
@@ -25,8 +25,8 @@ ADD_DEFINITIONS(-DUSE_TLS -DMYSQL_SERVER
 ADD_DEFINITIONS(-DUSING_CMAKE)
 
 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include 
-		    ${CMAKE_SOURCE_DIR}/libmysqld
-		    ${CMAKE_SOURCE_DIR}/libmysql
+                    ${CMAKE_SOURCE_DIR}/libmysqld
+                    ${CMAKE_SOURCE_DIR}/libmysql
                     ${CMAKE_SOURCE_DIR}/sql
                     ${CMAKE_SOURCE_DIR}/regex
                     ${CMAKE_SOURCE_DIR}/extra/yassl/include 
@@ -35,6 +35,10 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/
 
 SET_SOURCE_FILES_PROPERTIES(${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc
                             ${PROJECT_SOURCE_DIR}/sql/sql_yacc.h
+                            message.h
+                            message.rc
+                            ${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc
+                            ${CMAKE_SOURCE_DIR}/sql/lex_hash.h 							
                             PROPERTIES GENERATED 1)
                             
 ADD_LIBRARY(mysqldemb emb_qcache.cc libmysqld.c lib_sql.cc
@@ -81,9 +85,47 @@ ADD_LIBRARY(mysqldemb emb_qcache.cc libm
            ../vio/vio.c ../vio/viosocket.c ../vio/viossl.c
            ../vio/viosslfactories.c
            ${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc
-           ${PROJECT_SOURCE_DIR}/sql/sql_yacc.h)
+           ${PROJECT_SOURCE_DIR}/sql/sql_yacc.h
+           message.h
+           message.rc
+           ${CMAKE_SOURCE_DIR}/sql/lex_hash.h)
 ADD_DEPENDENCIES(mysqldemb GenError)
 
+# Sql Parser custom command
+ADD_CUSTOM_COMMAND(
+	SOURCE ${PROJECT_SOURCE_DIR}/sql/sql_yacc.yy 
+	OUTPUT ${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc
+	COMMAND bison.exe 
+	ARGS -y -p MYSQL --defines=${PROJECT_SOURCE_DIR}/sql/sql_yacc.h
+	     --output=${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc ${PROJECT_SOURCE_DIR}/sql/sql_yacc.yy
+	DEPENDS ${PROJECT_SOURCE_DIR}/sql/sql_yacc.yy
+)
+
+ADD_CUSTOM_COMMAND(
+	OUTPUT ${PROJECT_SOURCE_DIR}/sql/sql_yacc.h
+	COMMAND echo
+	DEPENDS ${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc
+)
+
+# Windows message file
+ADD_CUSTOM_COMMAND(
+	SOURCE ${CMAKE_SOURCE_DIR}/sql/message.mc
+	OUTPUT message.rc message.h
+	COMMAND mc
+	ARGS ${CMAKE_SOURCE_DIR}/sql/message.mc
+	DEPENDS ${CMAKE_SOURCE_DIR}/sql/message.mc
+)
+
+# Gen_lex_hash
+ADD_EXECUTABLE(gen_lex_hash ../sql/gen_lex_hash.cc)
+TARGET_LINK_LIBRARIES(gen_lex_hash dbug mysqlclient wsock32)
+GET_TARGET_PROPERTY(GEN_LEX_HASH_EXE gen_lex_hash LOCATION)
+ADD_CUSTOM_COMMAND(
+	OUTPUT ../sql/lex_hash.h
+	COMMAND ${GEN_LEX_HASH_EXE} ARGS > ../sql/lex_hash.h
+	DEPENDS ${GEN_LEX_HASH_EXE}
+)
+
 # Seems we cannot make a library without at least one source file. So use a
 # dummy empty file
 FILE(WRITE cmake_dummy.c " ")
@@ -120,3 +162,7 @@ ENDIF(WITH_ARCHIVE_STORAGE_ENGINE)
 IF(WITH_BLACKHOLE_STORAGE_ENGINE)
   TARGET_LINK_LIBRARIES(libmysqld blackhole)
 ENDIF(WITH_BLACKHOLE_STORAGE_ENGINE)
+IF(WITH_CSV_STORAGE_ENGINE)
+  TARGET_LINK_LIBRARIES(libmysqld csv)
+ENDIF(WITH_CSV_STORAGE_ENGINE)
+
diff -Nrup a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl
--- a/mysql-test/mysql-test-run.pl	2007-06-29 08:18:18 -04:00
+++ b/mysql-test/mysql-test-run.pl	2007-07-23 09:07:16 -04:00
@@ -105,6 +105,7 @@ our $glob_hostname=               undef;
 our $glob_scriptname=             undef;
 our $glob_timers=                 undef;
 our $glob_use_embedded_server=    0;
+our $glob_use_embedded_on_win32=  0;
 our @glob_test_mode;
 
 our $glob_basedir;
@@ -144,6 +145,7 @@ our $exe_mysql_upgrade;
 our $exe_mysqlbinlog;
 our $exe_mysql_client_test;
 our $exe_mysqld;
+our $exe_mysqld_arg_prefix;
 our $exe_mysqlcheck;
 our $exe_mysqldump;
 our $exe_mysqlslap;
@@ -160,6 +162,7 @@ our $exe_my_print_defaults;
 our $exe_perror;
 our $lib_udf_example;
 our $lib_example_plugin;
+our $lib_mysqld;
 our $exe_libtool;
 
 our $opt_bench= 0;
@@ -692,6 +695,37 @@ sub command_line_setup () {
 
   $glob_timers= mtr_init_timers();
 
+  # --------------------------------------------------------------------------
+  # Embedded server flag
+  # --------------------------------------------------------------------------
+  if ( $opt_embedded_server )
+  {
+    $glob_use_embedded_server= 1;
+    # Add the location for libmysqld.dll to the path.
+    if ( $glob_use_embedded_on_win32= $glob_win32 )
+    {
+      $lib_mysqld=
+        mtr_path_exists(vs_config_dirs('libmysqld',''));
+	  $lib_mysqld= $glob_cygwin_perl ? ":".`cygpath "$lib_mysqld"` 
+                                     : ";".$lib_mysqld;
+      chomp($lib_mysqld);
+      $ENV{'PATH'}="$ENV{'PATH'}".$lib_mysqld;
+    }
+
+    push(@glob_test_mode, "embedded");
+    $opt_skip_rpl= 1;              # We never run replication with embedded
+    $opt_skip_ndbcluster= 1;       # Turn off use of NDB cluster
+    $opt_skip_ssl= 1;              # Turn off use of SSL
+
+    # Turn off use of bin log
+    push(@opt_extra_mysqld_opt, "--skip-log-bin");
+
+    if ( $opt_extern )
+    {
+      mtr_error("Can't use --extern with --embedded-server");
+    }
+  }
+
   #
   # Find the mysqld executable to be able to find the mysqld version
   # number as early as possible
@@ -715,17 +749,29 @@ sub command_line_setup () {
 
   if (!$opt_extern)
   {
-    $exe_mysqld=       mtr_exe_exists (vs_config_dirs('sql', 'mysqld'),
-				       "$glob_basedir/sql/mysqld",
-				       "$path_client_bindir/mysqld-max-nt",
-				       "$path_client_bindir/mysqld-max",
-				       "$path_client_bindir/mysqld-nt",
-				       "$path_client_bindir/mysqld",
-				       "$path_client_bindir/mysqld-debug",
-				       "$path_client_bindir/mysqld-max",
-				       "$glob_basedir/libexec/mysqld",
-				       "$glob_basedir/bin/mysqld",
-				       "$glob_basedir/sbin/mysqld");
+    # The Windows solution builds either mysqld or libmysqld not both.
+    # test_libmysld will have to perform the work instead.
+    if ($glob_use_embedded_on_win32)
+    {
+      $exe_mysqld=       mtr_exe_exists (vs_config_dirs('libmysqld/examples', 
+                         'test_libmysqld'));
+      $exe_mysqld_arg_prefix= "--server-arg=";
+    }
+    else
+    {
+      $exe_mysqld= mtr_exe_exists (vs_config_dirs('sql', 'mysqld'),
+                   "$glob_basedir/sql/mysqld",
+                   "$path_client_bindir/mysqld-max-nt",
+                   "$path_client_bindir/mysqld-max",
+                   "$path_client_bindir/mysqld-nt",
+                   "$path_client_bindir/mysqld",
+                   "$path_client_bindir/mysqld-debug",
+                   "$path_client_bindir/mysqld-max",
+                   "$glob_basedir/libexec/mysqld",
+                   "$glob_basedir/bin/mysqld",
+                   "$glob_basedir/sbin/mysqld");
+      $exe_mysqld_arg_prefix= "";
+    }
 
     # Use the mysqld found above to find out what features are available
     collect_mysqld_features();
@@ -901,27 +947,6 @@ sub command_line_setup () {
   }
 
   # --------------------------------------------------------------------------
-  # Embedded server flag
-  # --------------------------------------------------------------------------
-  if ( $opt_embedded_server )
-  {
-    $glob_use_embedded_server= 1;
-    push(@glob_test_mode, "embedded");
-    $opt_skip_rpl= 1;              # We never run replication with embedded
-    $opt_skip_ndbcluster= 1;       # Turn off use of NDB cluster
-    $opt_skip_ssl= 1;              # Turn off use of SSL
-
-    # Turn off use of bin log
-    push(@opt_extra_mysqld_opt, "--skip-log-bin");
-
-    if ( $opt_extern )
-    {
-      mtr_error("Can't use --extern with --embedded-server");
-    }
-  }
-
-
-  # --------------------------------------------------------------------------
   # ps protcol flag
   # --------------------------------------------------------------------------
   if ( $opt_ps_protocol )
@@ -1359,12 +1384,18 @@ sub collect_mysqld_features () {
   # Execute "mysqld --help --verbose" to get a list
   # list of all features and settings
   #
+  # Note - On Win32 use "test_libmysqld -e feature instead of mysqld to 
+  # retrieve features.
+  #
   # --no-defaults and --skip-grant-tables are to avoid loading
   # system-wide configs and plugins
   #
   # --datadir must exist, mysqld will chdir into it
   #
-  my $list= `$exe_mysqld --no-defaults --datadir=$path_language --language=$path_language --skip-grant-tables --verbose --help`;
+  my $postfix= $glob_use_embedded_on_win32 ? "--execute feature" 
+                                           : "--verbose --help";
+
+  my $list= `$exe_mysqld $exe_mysqld_arg_prefix--no-defaults $exe_mysqld_arg_prefix--datadir=$path_language $exe_mysqld_arg_prefix--language=$path_language $exe_mysqld_arg_prefix--skip-grant-tables $postfix`;
 
   foreach my $line (split('\n', $list))
   {
@@ -1538,14 +1569,18 @@ sub executable_setup () {
 			                  "$glob_basedir/extra/perror",
 			                  "$path_client_bindir/perror");
 
-  # Look for the client binaries
-  $exe_mysqlcheck=     mtr_exe_exists("$path_client_bindir/mysqlcheck");
-  $exe_mysqldump=      mtr_exe_exists("$path_client_bindir/mysqldump");
-  $exe_mysqlimport=    mtr_exe_exists("$path_client_bindir/mysqlimport");
-  $exe_mysqlshow=      mtr_exe_exists("$path_client_bindir/mysqlshow");
-  $exe_mysqlbinlog=    mtr_exe_exists("$path_client_bindir/mysqlbinlog");
-  $exe_mysqladmin=     mtr_exe_exists("$path_client_bindir/mysqladmin");
-  $exe_mysql=          mtr_exe_exists("$path_client_bindir/mysql");
+  # The Windows embedded solution does not build clients.
+  if (!$glob_use_embedded_on_win32)
+  {
+    # Look for the client binaries
+    $exe_mysqlcheck=     mtr_exe_exists("$path_client_bindir/mysqlcheck");
+    $exe_mysqldump=      mtr_exe_exists("$path_client_bindir/mysqldump");
+    $exe_mysqlimport=    mtr_exe_exists("$path_client_bindir/mysqlimport");
+    $exe_mysqlshow=      mtr_exe_exists("$path_client_bindir/mysqlshow");
+    $exe_mysqlbinlog=    mtr_exe_exists("$path_client_bindir/mysqlbinlog");
+    $exe_mysqladmin=     mtr_exe_exists("$path_client_bindir/mysqladmin");
+    $exe_mysql=          mtr_exe_exists("$path_client_bindir/mysql");
+  }
 
   if (!$opt_extern)
   {
@@ -1560,19 +1595,27 @@ sub executable_setup () {
       $path_sql_dir= mtr_path_exists("$glob_basedir/share",
 				     "$glob_basedir/scripts");
     }
-
-    if ( $mysql_version_id >= 50100 )
-    {
-      $exe_mysqlslap=    mtr_exe_exists("$path_client_bindir/mysqlslap");
-    }
-    if ( $mysql_version_id >= 50000 and !$glob_use_embedded_server )
+    # The Windows embedded solution does not build clients.
+    if (!$glob_use_embedded_on_win32)
     {
-      $exe_mysql_upgrade= mtr_exe_exists("$path_client_bindir/mysql_upgrade")
-    }
-    else
-    {
-      $exe_mysql_upgrade= "";
+      if ( $mysql_version_id >= 50100 )
+      {
+        $exe_mysqlslap=    mtr_exe_exists("$path_client_bindir/mysqlslap");
+      }
+      if ( $mysql_version_id >= 50000 and !$glob_use_embedded_server )
+      {
+        $exe_mysql_upgrade= mtr_exe_exists("$path_client_bindir/mysql_upgrade")
+      }
+      else
+      {
+        $exe_mysql_upgrade= "";
+      }
     }
+	else
+	{
+	  $exe_mysqlslap= "";
+	  $exe_mysql_upgrade= "";
+	}
 
     if ( ! $glob_win32 )
     {
@@ -3004,25 +3047,32 @@ sub install_db ($$) {
 
   my $args;
   mtr_init_args(\$args);
-  mtr_add_arg($args, "--no-defaults");
-  mtr_add_arg($args, "--bootstrap");
-  mtr_add_arg($args, "--basedir=%s", $path_my_basedir);
-  mtr_add_arg($args, "--datadir=%s", $data_dir);
-  mtr_add_arg($args, "--loose-skip-innodb");
-  mtr_add_arg($args, "--loose-skip-ndbcluster");
-  mtr_add_arg($args, "--tmpdir=.");
-  mtr_add_arg($args, "--core-file");
+  mtr_add_arg($args, "%s--no-defaults", $exe_mysqld_arg_prefix);
+  mtr_add_arg($args, "%s--bootstrap", $exe_mysqld_arg_prefix);
+  mtr_add_arg($args, "%s--basedir=%s", $exe_mysqld_arg_prefix, 
+              $path_my_basedir);
+  mtr_add_arg($args, "%s--datadir=%s", $exe_mysqld_arg_prefix, $data_dir);
+  mtr_add_arg($args, "%s--loose-skip-innodb", $exe_mysqld_arg_prefix);
+  mtr_add_arg($args, "%s--loose-skip-ndbcluster", $exe_mysqld_arg_prefix);
+  mtr_add_arg($args, "%s--tmpdir=.", $exe_mysqld_arg_prefix);
+  mtr_add_arg($args, "%s--core-file", $exe_mysqld_arg_prefix);
 
   if ( $opt_debug )
   {
-    mtr_add_arg($args, "--debug=d:t:i:A,%s/log/bootstrap_%s.trace",
-		$path_vardir_trace, $type);
+    mtr_add_arg($args, "%s--debug=d:t:i:A,%s/log/bootstrap_%s.trace",
+		$exe_mysqld_arg_prefix, $path_vardir_trace, $type);
   }
 
   if ( ! $glob_netware )
   {
-    mtr_add_arg($args, "--language=%s", $path_language);
-    mtr_add_arg($args, "--character-sets-dir=%s", $path_charsetsdir);
+    mtr_add_arg($args, "%s--language=%s", $exe_mysqld_arg_prefix, $path_language);
+    mtr_add_arg($args, "%s--character-sets-dir=%s", $exe_mysqld_arg_prefix, 
+	            $path_charsetsdir);
+  }
+
+  if ($glob_use_embedded_on_win32)
+  {
+    mtr_add_arg($args, "-equit");
   }
 
   # If DISABLE_GRANT_OPTIONS is defined when the server is compiled (e.g.,
Thread
bk commit into 5.1 tree (iggy:1.2577) BUG#29903Ignacio Galarza23 Jul