Re: [Maria-developers] Rev 3847: Client attributes
Hi, Sanja! On Oct 02, sanja@askmonty.org 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
02.10.2013 18:13, Sergei Golubchik пишет:
Hi, Sanja!
On Oct 02, sanja@askmonty.org 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 I tested it works (attributes are compatible and if they are not supported it does not prevent other functions).
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? removed and its works.
+ (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? removed (it actually caused bug)
The big question is if embedded does not support performance schema should we remove all performance schema control variables?
static Sys_var_mybool Sys_pfs_enabled( "performance_schema",
Regards, Sergei
Hi, Oleksandr! On Oct 03, Oleksandr Byelkin wrote:
=== 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? removed (it actually caused bug)
The big question is if embedded does not support performance schema should we remove all performance schema control variables?
Not in this task. Regards, Sergei
Hi! 03.10.2013 18:47, Sergei Golubchik пишет:
Hi, Oleksandr!
On Oct 03, Oleksandr Byelkin wrote:
=== 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? removed (it actually caused bug)
The big question is if embedded does not support performance schema should we remove all performance schema control variables? Not in this task.
Naturally, it is not this task. But it is not clear from the answer, should they be removed or should not. [skip]
participants (2)
-
Oleksandr Byelkin
-
Sergei Golubchik