maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #06382
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