List:Commits« Previous MessageNext Message »
From:Timothy Smith Date:July 30 2007 8:53pm
Subject:Re: bk commit into 5.1 tree (iggy:1.2577) BUG#29903
View as plain text  
> 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-27 11:50:30 -04:00
> @@ -104,40 +104,43 @@ ADD_LIBRARY(mysqlclient ../mysys/array.c

<cut>

> +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)
> +  

While you're here, you might create a CLIENT_LIBS variable, and put
mysqlclient zlib dbug wsock32 in it; then reference that in each
TARGET_LINK_LIBRARIES directive.

<cut>

> diff -Nrup a/client/client_priv.h b/client/client_priv.h
> --- a/client/client_priv.h	2007-04-18 22:47:49 -04:00
> +++ b/client/client_priv.h	2007-07-27 11:50:30 -04:00
> @@ -48,7 +48,7 @@ enum options_client
>    OPT_PROMPT, OPT_IGN_LINES,OPT_TRANSACTION,OPT_MYSQL_PROTOCOL,
>    OPT_SHARED_MEMORY_BASE_NAME, OPT_FRM, OPT_SKIP_OPTIMIZATION,
>    OPT_COMPATIBLE, OPT_RECONNECT, OPT_DELIMITER, OPT_SECURE_AUTH,
> -  OPT_OPEN_FILES_LIMIT, OPT_SET_CHARSET, OPT_CREATE_OPTIONS,
> +  OPT_OPEN_FILES_LIMIT, OPT_SET_CHARSET, OPT_CREATE_OPTIONS, OPT_SERVER_ARG,
>    OPT_START_POSITION, OPT_STOP_POSITION, OPT_START_DATETIME, OPT_STOP_DATETIME,
>    OPT_SIGINT_IGNORE, OPT_HEXBLOB, OPT_ORDER_BY_PRIMARY, OPT_COUNT,
>  #ifdef HAVE_NDBCLUSTER_DB
> 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-27 11:50:30 -04:00
> @@ -51,6 +51,9 @@ const char *VER= "14.13";
>  /* Buffer to hold 'version' and 'version_comment' */
>  #define MAX_SERVER_VERSION_LENGTH     128
>  
> +/* Array of options to pass to libemysqld */

Typeo

> +#define MAX_SERVER_ARGS               64

I'm OK with this, but I'd probably use a dynamic_array for this kind of
thing.

> +
>  void* sql_alloc(unsigned size);	     // Don't use mysqld alloc for these
>  void sql_element_free(void *ptr);
>  #include "sql_string.h"
> @@ -302,7 +305,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 +353,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 +413,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);
> @@ -539,6 +537,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);
> @@ -761,6 +761,8 @@ static struct my_option my_long_options[
>    {"secure-auth", OPT_SECURE_AUTH, "Refuse client connecting to server if it"
>      " uses old (pre-4.1.1) protocol", (uchar**) &opt_secure_auth,
>      (uchar**) &opt_secure_auth, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
> +  {"server-arg", OPT_SERVER_ARG, "Send embedded server this as a parameter.",
> +   0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
>    {"show-warnings", OPT_SHOW_WARNINGS, "Show warnings after every statement.",
>      (uchar**) &show_warnings, (uchar**) &show_warnings, 0, GET_BOOL, NO_ARG,
> 
>      0, 0, 0, 0, 0, 0},
> @@ -888,7 +890,29 @@ get_one_option(int optid, const struct m
>      opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
>                                      opt->name);
>      break;
> -  break;
> +  case OPT_SERVER_ARG:
> +#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;

This should be "return 1".  So should the return in the OPT_DELIMITER
case.  The caller (handle_options()) never checks the return value,
which is another issue.

> +    }
> +#else /*EMBEDDED_LIBRARY */
> +    printf("WARNING: --server-arg option not supported in this configuration.\n");
> +#endif
> +    break;
>    case 'A':
>      opt_rehash= 0;
>      break;
> 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-27 11:50:31 -04:00
> @@ -25,16 +25,20 @@ 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 
>                      ${CMAKE_SOURCE_DIR}/zlib 
>  )
>  
> -SET_SOURCE_FILES_PROPERTIES(${PROJECT_SOURCE_DIR}/sql/sql_yacc.cc
> -                            ${PROJECT_SOURCE_DIR}/sql/sql_yacc.h
> +SET_SOURCE_FILES_PROPERTIES(sql_yacc.cc
> +                            sql_yacc.h
> +                            message.h
> +                            message.rc
> +                            ${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc
> +                            lex_hash.h 							
>                              PROPERTIES GENERATED 1)

I think this is part of bug #30103, "CMake build solution does not
remove auto-generated resources".  Maybe it doesn't need to be done
here?

>  ADD_LIBRARY(mysqldemb emb_qcache.cc libmysqld.c lib_sql.cc
> @@ -80,10 +84,54 @@ ADD_LIBRARY(mysqldemb emb_qcache.cc libm
>             ../sql/scheduler.cc
>             ../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)
> +           sql_yacc.cc
> +           sql_yacc.h
> +           message.h
> +           message.rc
> +           lex_hash.h)
>  ADD_DEPENDENCIES(mysqldemb GenError)

Ditto.

>  
> +# Sql Parser custom command

<cut>

> 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-27 11:50:31 -04:00
> @@ -692,6 +692,37 @@ sub command_line_setup () {
>  
>    $glob_timers= mtr_init_timers();
>  
> +  # --------------------------------------------------------------------------
> +  # Embedded server flag
> +  # --------------------------------------------------------------------------
> +  if ( $opt_embedded_server )
> +  {

<cut>

> +  }
> +

OK

>    #
>    # Find the mysqld executable to be able to find the mysqld version
>    # number as early as possible

<cut>


Looks good overall to me.

Regards,

Timothy
-- 
-- Timothy Smith            Team Lead, Maintenance; Dolores, Colorado, USA
-- MySQL Inc., www.mysql.com      The best DATABASE COMPANY in the GALAXY!
Thread
bk commit into 5.1 tree (iggy:1.2577) BUG#29903Ignacio Galarza27 Jul
Re: bk commit into 5.1 tree (iggy:1.2577) BUG#29903Timothy Smith30 Jul