mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Making mysqlnd emit no warnings when fetching pooled persistent connections that have timed out or are unusable for any other reason - bug #49761
This commit is contained in:
parent
ab4670ee53
commit
d8dc47d58f
7 changed files with 12 additions and 8 deletions
|
@ -34,3 +34,5 @@
|
||||||
#define mysqli_close(c, is_forced) mysql_close((c))
|
#define mysqli_close(c, is_forced) mysql_close((c))
|
||||||
#define mysqli_stmt_close(c, implicit) mysql_stmt_close((c))
|
#define mysqli_stmt_close(c, implicit) mysql_stmt_close((c))
|
||||||
#define mysqli_free_result(r, is_forced) mysql_free_result((r))
|
#define mysqli_free_result(r, is_forced) mysql_free_result((r))
|
||||||
|
#define mysqli_change_user_silent(c, u, p, d) mysql_change_user((c), (u), (p), (d))
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,7 @@
|
||||||
#define mysqli_free_result(r, implicit) mysqlnd_free_result((r), (implicit))
|
#define mysqli_free_result(r, implicit) mysqlnd_free_result((r), (implicit))
|
||||||
#define mysqli_bg_store_result(r) mysqlnd_bg_store_result((r))
|
#define mysqli_bg_store_result(r) mysqlnd_bg_store_result((r))
|
||||||
#define mysqli_async_query(c, q, l) mysqlnd_async_query((c), (q), (l))
|
#define mysqli_async_query(c, q, l) mysqlnd_async_query((c), (q), (l))
|
||||||
|
#define mysqli_change_user_silent(c, u, p, d) mysqlnd_change_user((c), (u), (p), (d), TRUE)
|
||||||
|
|
||||||
#define HAVE_STMT_NEXT_RESULT
|
#define HAVE_STMT_NEXT_RESULT
|
||||||
|
|
||||||
|
|
|
@ -166,7 +166,7 @@ void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_real_conne
|
||||||
/* reset variables */
|
/* reset variables */
|
||||||
|
|
||||||
#ifndef MYSQLI_NO_CHANGE_USER_ON_PCONNECT
|
#ifndef MYSQLI_NO_CHANGE_USER_ON_PCONNECT
|
||||||
if (!mysql_change_user(mysql->mysql, username, passwd, dbname)) {
|
if (!mysqli_change_user_silent(mysql->mysql, username, passwd, dbname)) {
|
||||||
#else
|
#else
|
||||||
if (!mysql_ping(mysql->mysql)) {
|
if (!mysql_ping(mysql->mysql)) {
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1825,7 +1825,8 @@ static enum_func_status
|
||||||
MYSQLND_METHOD(mysqlnd_conn, change_user)(MYSQLND * const conn,
|
MYSQLND_METHOD(mysqlnd_conn, change_user)(MYSQLND * const conn,
|
||||||
const char *user,
|
const char *user,
|
||||||
const char *passwd,
|
const char *passwd,
|
||||||
const char *db TSRMLS_DC)
|
const char *db,
|
||||||
|
zend_bool silent TSRMLS_DC)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
User could be max 16 * 3 (utf8), pass is 20 usually, db is up to 64*3
|
User could be max 16 * 3 (utf8), pass is 20 usually, db is up to 64*3
|
||||||
|
@ -1839,8 +1840,8 @@ MYSQLND_METHOD(mysqlnd_conn, change_user)(MYSQLND * const conn,
|
||||||
char *p = buffer;
|
char *p = buffer;
|
||||||
|
|
||||||
DBG_ENTER("mysqlnd_conn::change_user");
|
DBG_ENTER("mysqlnd_conn::change_user");
|
||||||
DBG_INF_FMT("conn=%llu user=%s passwd=%s db=%s",
|
DBG_INF_FMT("conn=%llu user=%s passwd=%s db=%s silent=%d",
|
||||||
conn->thread_id, user?user:"", passwd?"***":"null", db?db:"");
|
conn->thread_id, user?user:"", passwd?"***":"null", db?db:"", (silent == TRUE)?1:0 );
|
||||||
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
user = "";
|
user = "";
|
||||||
|
@ -1877,7 +1878,7 @@ MYSQLND_METHOD(mysqlnd_conn, change_user)(MYSQLND * const conn,
|
||||||
|
|
||||||
if (PASS != mysqlnd_simple_command(conn, COM_CHANGE_USER, buffer, p - buffer,
|
if (PASS != mysqlnd_simple_command(conn, COM_CHANGE_USER, buffer, p - buffer,
|
||||||
PROT_LAST /* we will handle the OK packet*/,
|
PROT_LAST /* we will handle the OK packet*/,
|
||||||
FALSE, TRUE TSRMLS_CC)) {
|
silent, TRUE TSRMLS_CC)) {
|
||||||
DBG_RETURN(FAIL);
|
DBG_RETURN(FAIL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -96,7 +96,7 @@ PHPAPI MYSQLND * mysqlnd_connect(MYSQLND *conn,
|
||||||
MYSQLND_THD_ZVAL_PCACHE *zval_cache
|
MYSQLND_THD_ZVAL_PCACHE *zval_cache
|
||||||
TSRMLS_DC);
|
TSRMLS_DC);
|
||||||
|
|
||||||
#define mysqlnd_change_user(conn, user, passwd, db) (conn)->m->change_user((conn), (user), (passwd), (db) TSRMLS_CC)
|
#define mysqlnd_change_user(conn, user, passwd, db, silent) (conn)->m->change_user((conn), (user), (passwd), (db), (silent) TSRMLS_CC)
|
||||||
|
|
||||||
#define mysqlnd_debug(x) _mysqlnd_debug((x) TSRMLS_CC)
|
#define mysqlnd_debug(x) _mysqlnd_debug((x) TSRMLS_CC)
|
||||||
PHPAPI void _mysqlnd_debug(const char *mode TSRMLS_DC);
|
PHPAPI void _mysqlnd_debug(const char *mode TSRMLS_DC);
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
/* functions */
|
/* functions */
|
||||||
#define mysql_affected_rows(r) mysqlnd_affected_rows((r))
|
#define mysql_affected_rows(r) mysqlnd_affected_rows((r))
|
||||||
#define mysql_autocommit(r,m) mysqlnd_autocommit((r),(m))
|
#define mysql_autocommit(r,m) mysqlnd_autocommit((r),(m))
|
||||||
#define mysql_change_user(r,a,b,c) mysqlnd_change_user((r), (a), (b), (c))
|
#define mysql_change_user(r,a,b,c) mysqlnd_change_user((r), (a), (b), (c), FALSE)
|
||||||
#define mysql_character_set_name(c) mysqlnd_character_set_name((c))
|
#define mysql_character_set_name(c) mysqlnd_character_set_name((c))
|
||||||
#define mysql_close(r) mysqlnd_close((r), MYSQLND_CLOSE_EXPLICIT)
|
#define mysql_close(r) mysqlnd_close((r), MYSQLND_CLOSE_EXPLICIT)
|
||||||
#define mysql_commit(r) mysqlnd_commit((r))
|
#define mysql_commit(r) mysqlnd_commit((r))
|
||||||
|
|
|
@ -254,7 +254,7 @@ struct st_mysqlnd_conn_methods
|
||||||
enum_func_status (*kill_connection)(MYSQLND *conn, unsigned int pid TSRMLS_DC);
|
enum_func_status (*kill_connection)(MYSQLND *conn, unsigned int pid TSRMLS_DC);
|
||||||
enum_func_status (*select_db)(MYSQLND * const conn, const char * const db, unsigned int db_len TSRMLS_DC);
|
enum_func_status (*select_db)(MYSQLND * const conn, const char * const db, unsigned int db_len TSRMLS_DC);
|
||||||
enum_func_status (*server_dump_debug_information)(MYSQLND * const conn TSRMLS_DC);
|
enum_func_status (*server_dump_debug_information)(MYSQLND * const conn TSRMLS_DC);
|
||||||
enum_func_status (*change_user)(MYSQLND * const conn, const char * user, const char * passwd, const char * db TSRMLS_DC);
|
enum_func_status (*change_user)(MYSQLND * const conn, const char * user, const char * passwd, const char * db, zend_bool silent TSRMLS_DC);
|
||||||
|
|
||||||
unsigned int (*get_error_no)(const MYSQLND * const conn);
|
unsigned int (*get_error_no)(const MYSQLND * const conn);
|
||||||
const char * (*get_error_str)(const MYSQLND * const conn);
|
const char * (*get_error_str)(const MYSQLND * const conn);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue