From 7e202c92ee0390dff9aa071ddf2d9ac445a97dfd Mon Sep 17 00:00:00 2001 From: Rahim Kanji Date: Tue, 19 Dec 2023 15:55:44 +0500 Subject: [PATCH] Updated mariadb_lib.c.patch --- deps/Makefile | 2 +- .../mariadb_lib.c.patch | 109 +++++++++--------- 2 files changed, 54 insertions(+), 57 deletions(-) diff --git a/deps/Makefile b/deps/Makefile index 022d7f497..521c87eb8 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -238,7 +238,7 @@ else ifeq ($(USEVALGRIND),1) cd mariadb-client-library/mariadb_client && patch -p0 < ../ma_context.h.patch endif cd mariadb-client-library/mariadb_client && patch -p0 < ../mariadb_stmt.c.patch - cd mariadb-client-library/mariadb_client && patch libmariadb/mariadb_lib.c < ../mariadb_lib.c.patch + cd mariadb-client-library/mariadb_client && patch -p0 < ../mariadb_lib.c.patch cd mariadb-client-library/mariadb_client && patch libmariadb/mariadb_lib.c < ../mariadb_lib.c.collation.patch # make sure this path is applied after mariadb_lib.c.patch cd mariadb-client-library/mariadb_client && patch libmariadb/mariadb_lib.c < ../mariadb_lib.c.ipv6_fix.patch # make sure this patch is applied after mariadb_lib.c.collation.patch # cd mariadb-client-library/mariadb_client && patch libmariadb/net.c < ../net.c.patch diff --git a/deps/mariadb-client-library/mariadb_lib.c.patch b/deps/mariadb-client-library/mariadb_lib.c.patch index 6db5e05a0..2997a1753 100644 --- a/deps/mariadb-client-library/mariadb_lib.c.patch +++ b/deps/mariadb-client-library/mariadb_lib.c.patch @@ -1,41 +1,45 @@ diff --git libmariadb/mariadb_lib.c libmariadb/mariadb_lib.c -index 8c2a99b..cf6114a 100644 +index e8db51a0..66b44df4 100644 --- libmariadb/mariadb_lib.c +++ libmariadb/mariadb_lib.c -@@ -1643,9 +1643,16 @@ MYSQL *mthd_my_real_connect(MYSQL *mysql, const char *host, const char *user, +@@ -1936,10 +1936,16 @@ restart: mysql->client_flag= client_flag; -+ { -+ volatile my_bool net_blocking = ma_pvio_is_blocking(net->pvio); -+ if (!net_blocking) -+ ma_pvio_blocking(net->pvio, TRUE, 0); - if (run_plugin_auth(mysql, scramble_data, scramble_len, - scramble_plugin, db)) - goto error; -+ if (!net_blocking) -+ ma_pvio_blocking(net->pvio, FALSE, 0); -+ } - - if (mysql->client_flag & CLIENT_COMPRESS) - net->compress= 1; -@@ -1696,6 +1703,15 @@ MYSQL *mthd_my_real_connect(MYSQL *mysql, const char *host, const char *user, +- if (run_plugin_auth(mysql, scramble_data, scramble_len, +- scramble_plugin, db)) +- goto error; +- ++ { ++ volatile my_bool net_blocking = ma_pvio_is_blocking(net->pvio); ++ if (!net_blocking) ++ ma_pvio_blocking(net->pvio, TRUE, 0); ++ if (run_plugin_auth(mysql, scramble_data, scramble_len, ++ scramble_plugin, db)) ++ goto error; ++ if (!net_blocking) ++ ma_pvio_blocking(net->pvio, FALSE, 0); ++ } + if (mysql->client_flag & CLIENT_COMPRESS || + mysql->client_flag & CLIENT_ZSTD_COMPRESSION) + { +@@ -2006,6 +2012,15 @@ restart: return(mysql); error: + // fix for proxysql bug #2623 + if (mysql->net.extension) { -+ free(mysql->net.extension); -+ mysql->net.extension=NULL; ++ free(mysql->net.extension); ++ mysql->net.extension=NULL; + } + if (mysql->extension) { -+ free(mysql->extension); -+ mysql->extension=NULL; ++ free(mysql->extension); ++ mysql->extension=NULL; + } - /* Free alloced memory */ - end_server(mysql); - /* only free the allocated memory, user needs to call mysql_close */ -@@ -1775,7 +1791,7 @@ my_bool STDCALL mariadb_reconnect(MYSQL *mysql) + /* Free allocated memory */ + free(host_list); + free(host_copy); +@@ -2087,7 +2102,7 @@ my_bool STDCALL mariadb_reconnect(MYSQL *mysql) if (!mysql_real_connect(&tmp_mysql,mysql->host,mysql->user,mysql->passwd, mysql->db, mysql->port, mysql->unix_socket, mysql->client_flag | CLIENT_REMEMBER_OPTIONS) || @@ -44,23 +48,23 @@ index 8c2a99b..cf6114a 100644 { if (ctxt) my_context_install_suspend_resume_hook(ctxt, NULL, NULL); -@@ -1821,6 +1837,7 @@ void ma_invalidate_stmts(MYSQL *mysql, const char *function_name) +@@ -2138,6 +2153,7 @@ void ma_invalidate_stmts(MYSQL *mysql, const char *function_name) { if (mysql->stmts) { -+/* ++ /* LIST *li_stmt= mysql->stmts; for (; li_stmt; li_stmt= li_stmt->next) -@@ -1829,6 +1846,7 @@ void ma_invalidate_stmts(MYSQL *mysql, const char *function_name) +@@ -2146,6 +2162,7 @@ void ma_invalidate_stmts(MYSQL *mysql, const char *function_name) stmt->mysql= NULL; - SET_CLIENT_STMT_ERROR(stmt, CR_STMT_CLOSED, SQLSTATE_UNKNOWN, function_name); + stmt_set_error(stmt, CR_STMT_CLOSED, SQLSTATE_UNKNOWN, 0, function_name); } -+*/ ++ */ mysql->stmts= NULL; } } -@@ -2115,6 +2133,44 @@ mysql_close(MYSQL *mysql) +@@ -2458,6 +2475,42 @@ mysql_close(MYSQL *mysql) return; } @@ -69,28 +73,27 @@ index 8c2a99b..cf6114a 100644 +{ + if (mysql) /* Some simple safety */ + { -+ + if (mysql->methods) { -+ if (mysql->net.pvio) { -+ free_old_query(mysql); -+ mysql->status=MYSQL_STATUS_READY; /* Force command */ -+ mysql->options.reconnect=0; -+ end_server(mysql); -+ } -+ } ++ if (mysql->net.pvio) { ++ free_old_query(mysql); ++ mysql->status=MYSQL_STATUS_READY; /* Force command */ ++ mysql->options.reconnect=0; ++ end_server(mysql); ++ } ++ } + mysql_close_memory(mysql); + mysql_close_options(mysql); + mysql->host_info=mysql->user=mysql->passwd=mysql->db=0; + + // fix for proxysql bug #3204 + if (mysql->net.extension) { -+ free(mysql->net.extension); -+ mysql->net.extension=NULL; ++ free(mysql->net.extension); ++ mysql->net.extension=NULL; + } + + if (mysql->extension) { -+ free(mysql->extension); -+ mysql->extension=NULL; ++ free(mysql->extension); ++ mysql->extension=NULL; + } + + /* Clear pointers for better safety */ @@ -101,20 +104,10 @@ index 8c2a99b..cf6114a 100644 + } + return; +} -+ /************************************************************************** ** Do a query. If query returned rows, free old rows. -@@ -2189,6 +2245,8 @@ int ma_read_ok_packet(MYSQL *mysql, uchar *pos, ulong length) - char *data; - si_type= (enum enum_session_state_type)net_field_length(&pos); - switch(si_type) { -+ case SESSION_TRACK_GTIDS: -+ net_field_length(&pos); /* skip encoding */ - case SESSION_TRACK_SCHEMA: - case SESSION_TRACK_STATE_CHANGE: - case SESSION_TRACK_TRANSACTION_CHARACTERISTICS: -@@ -3670,18 +3728,27 @@ void STDCALL mysql_get_character_set_info(MYSQL *mysql, MY_CHARSET_INFO *cs) +@@ -4237,18 +4290,27 @@ void STDCALL mysql_get_character_set_info(MYSQL *mysql, MY_CHARSET_INFO *cs) mariadb_get_charset_info(mysql, cs); } @@ -147,11 +140,15 @@ index 8c2a99b..cf6114a 100644 if (!mysql_real_query(mysql, buff, (unsigned long)strlen(buff))) { mysql->charset= cs; -@@ -3691,6 +3758,7 @@ int STDCALL mysql_set_character_set(MYSQL *mysql, const char *csname) +@@ -4258,8 +4320,9 @@ int STDCALL mysql_set_character_set(MYSQL *mysql, const char *csname) } error: +- my_set_error(mysql, CR_CANT_READ_CHARSET, SQLSTATE_UNKNOWN, +- 0, csname, "compiled_in"); + if (!cs) - my_set_error(mysql, CR_CANT_READ_CHARSET, SQLSTATE_UNKNOWN, - 0, csname, "compiled_in"); ++ my_set_error(mysql, CR_CANT_READ_CHARSET, SQLSTATE_UNKNOWN, ++ 0, csname, "compiled_in"); return(mysql->net.last_errno); + } +