← Back to team overview

maria-developers team mailing list archive

Re: Rev 3847: Client attributes

 

Hi, Sanja!

On Oct 02, sanja@xxxxxxxxxxxx wrote:

> === modified file 'client/mysqltest.cc'
> --- a/client/mysqltest.cc	2013-07-21 14:39:19 +0000
> +++ b/client/mysqltest.cc	2013-10-02 13:54:55 +0000
> @@ -5648,6 +5648,10 @@ void safe_connect(MYSQL* mysql, const ch
>    verbose_msg("Connecting to server %s:%d (socket %s) as '%s'"
>                ", connection '%s', attempt %d ...", 
>                host, port, sock, user, name, failed_attempts);
> +
> +  mysql_options(mysql, MYSQL_OPT_CONNECT_ATTR_RESET, 0);
> +  mysql_options4(mysql, MYSQL_OPT_CONNECT_ATTR_ADD,
> +                 "program_name", "mysqltest");

Did you test connecting without connection attributes?
e.g. 5.5 client and 10.0 server?
and mysql-5.5 client? And mysql-5.6 client?
please do, at least manually

>    while(!mysql_real_connect(mysql, host,user, pass, db, port, sock,
>                              CLIENT_MULTI_STATEMENTS | CLIENT_REMEMBER_OPTIONS))
>    {
> 
> === modified file 'include/mysql.h'
> --- a/include/mysql.h	2013-07-18 14:46:57 +0000
> +++ b/include/mysql.h	2013-10-02 13:54:55 +0000
> @@ -557,6 +557,8 @@ int             STDCALL mysql_list_proce
>                                                    int status);
>  int		STDCALL mysql_options(MYSQL *mysql,enum mysql_option option,
>  				      const void *arg);
> +int             STDCALL mysql_options4(MYSQL *mysql,enum mysql_option option,
> +                                       const void *arg1, const void *arg2);

This is pretty silly, I'd rather have

  mysql_optionv(MYSQL *mysql, enum mysql_option option, ...)

or even (redefining the existing function):

  mysql_option(MYSQL *mysql, enum mysql_option option, ...)

but we're copying MySQL here, so we don't have much of a choice

>  void		STDCALL mysql_free_result(MYSQL_RES *result);
>  int             STDCALL mysql_free_result_start(MYSQL_RES *result);
>  int             STDCALL mysql_free_result_cont(MYSQL_RES *result, int status);
> 
> === modified file 'sql/sql_acl.cc'
> --- a/sql/sql_acl.cc	2013-09-21 08:14:42 +0000
> +++ b/sql/sql_acl.cc	2013-10-02 13:54:55 +0000
> @@ -8570,7 +8628,13 @@ static ulong parse_client_handshake_pack
>          mpvio->acl_user->plugin= old_password_plugin_name;
>      }
>    }
> -  
> +
> +  if (db &&

Why do you check for db being not NULL?

> +      (thd->client_capabilities & CLIENT_CONNECT_ATTRS) &&
> +      read_client_connect_attrs(&next_field, ((char *)net->read_pos) + pkt_len,
> +                                mpvio->thd->charset()))
> +    return packet_error;
> +
>    /*
>      if the acl_user needs a different plugin to authenticate
>      (specified in GRANT ... AUTHENTICATED VIA plugin_name ..)
> 
> === modified file 'sql/sys_vars.cc'
> --- a/sql/sys_vars.cc	2013-09-21 08:14:42 +0000
> +++ b/sql/sys_vars.cc	2013-10-02 13:54:55 +0000
> @@ -71,6 +71,7 @@
>  #define export /* not static */
>  
>  #ifdef WITH_PERFSCHEMA_STORAGE_ENGINE
> +#ifndef EMBEDDED_LIBRARY

Why is this?

>  
>  static Sys_var_mybool Sys_pfs_enabled(
>         "performance_schema",

Regards,
Sergei


Follow ups