From: Andrey Hristov Date: Tue, 15 Jul 2008 13:11:09 +0000 (+0000) Subject: Sync with bzr X-Git-Tag: php-5.3.0alpha1~335 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=136a55fcd92f537f9e6dfcf5003930fe55a328ab;p=php Sync with bzr --- diff --git a/ext/mysql/php_mysql.c b/ext/mysql/php_mysql.c index c441d4def6..f38aff2957 100644 --- a/ext/mysql/php_mysql.c +++ b/ext/mysql/php_mysql.c @@ -687,6 +687,8 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) client_flags ^= CLIENT_LOCAL_FILES; } + client_flags &= ~CLIENT_MULTI_STATEMENTS; /* don't allow multi_queries via connect parameter */ + hashed_details_length = spprintf(&hashed_details, 0, "mysql_%s_%s_%s_%ld", SAFE_STRING(host_and_port), SAFE_STRING(user), SAFE_STRING(passwd), client_flags); } @@ -738,7 +740,7 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) /* create the link */ mysql = (php_mysql_conn *) malloc(sizeof(php_mysql_conn)); mysql->active_result_id = 0; - mysql->multi_query = 1; + mysql->multi_query = client_flags & CLIENT_MULTI_STATEMENTS? 1:0; #ifndef MYSQL_USE_MYSQLND mysql->conn = mysql_init(NULL); #else @@ -786,7 +788,7 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) } mysql = (php_mysql_conn *) le->ptr; mysql->active_result_id = 0; - mysql->multi_query = 1; + mysql->multi_query = client_flags & CLIENT_MULTI_STATEMENTS? 1:0; /* ensure that the link did not die */ if (mysql_ping(mysql->conn)) { if (mysql_errno(mysql->conn) == 2006) { diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c index fda5a846a8..a1b26bdaaf 100644 --- a/ext/mysqli/mysqli.c +++ b/ext/mysqli/mysqli.c @@ -893,6 +893,12 @@ PHP_MINIT_FUNCTION(mysqli) #endif #endif + REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED", SERVER_QUERY_NO_GOOD_INDEX_USED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_NO_INDEX_USED", SERVER_QUERY_NO_INDEX_USED, CONST_CS | CONST_PERSISTENT); +#ifdef SERVER_QUERY_WAS_SLOW + REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_WAS_SLOW", SERVER_QUERY_WAS_SLOW, CONST_CS | CONST_PERSISTENT); +#endif + return SUCCESS; } /* }}} */ diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index 12b215ac4c..fb57ca70f5 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -467,7 +467,6 @@ PHPAPI void _mysqlnd_end_psession(MYSQLND *conn TSRMLS_DC) DBG_ENTER("_mysqlnd_end_psession"); /* The thd zval cache is always freed on request shutdown, so this has happened already */ mysqlnd_palloc_free_thd_cache_reference(&conn->zval_cache); - conn->zval_cache = NULL; DBG_VOID_RETURN; } /* }}} */ diff --git a/ext/mysqlnd/mysqlnd_palloc.c b/ext/mysqlnd/mysqlnd_palloc.c index da6e2b07a6..f64dd17ada 100644 --- a/ext/mysqlnd/mysqlnd_palloc.c +++ b/ext/mysqlnd/mysqlnd_palloc.c @@ -172,7 +172,7 @@ MYSQLND_THD_ZVAL_PCACHE* _mysqlnd_palloc_get_thd_cache_reference(MYSQLND_THD_ZVA if (cache) { ++cache->references; DBG_INF_FMT("cache=%p new_refc=%d gc_list.canary1=%p gc_list.canary2=%p", - *cache, cache->references, cache->gc_list.canary1, cache->gc_list.canary2); + cache, cache->references, cache->gc_list.canary1, cache->gc_list.canary2); mysqlnd_palloc_get_cache_reference(cache->parent); } DBG_RETURN(cache); diff --git a/ext/mysqlnd/mysqlnd_ps.c b/ext/mysqlnd/mysqlnd_ps.c index acacee22ef..30154bfe54 100644 --- a/ext/mysqlnd/mysqlnd_ps.c +++ b/ext/mysqlnd/mysqlnd_ps.c @@ -582,7 +582,7 @@ MYSQLND_METHOD(mysqlnd_stmt, execute)(MYSQLND_STMT * const stmt TSRMLS_DC) SET_ERROR_AFF_ROWS(stmt); SET_ERROR_AFF_ROWS(stmt->conn); - if (stmt->state > MYSQLND_STMT_PREPARED && stmt->field_count) { + if (stmt->result && stmt->state > MYSQLND_STMT_PREPARED && stmt->field_count) { /* We don need to copy the data from the buffers which we will clean. Because it has already been copied. See diff --git a/ext/mysqlnd/mysqlnd_wireprotocol.c b/ext/mysqlnd/mysqlnd_wireprotocol.c index 4816a4fb37..c59e1b216c 100644 --- a/ext/mysqlnd/mysqlnd_wireprotocol.c +++ b/ext/mysqlnd/mysqlnd_wireprotocol.c @@ -690,8 +690,6 @@ size_t php_mysqlnd_auth_write(void *_packet, MYSQLND *conn TSRMLS_DC) packet->client_flags ^= CLIENT_LOCAL_FILES; } - /* don't allow multi_queries via connect parameter */ - packet->client_flags ^= CLIENT_MULTI_STATEMENTS; int4store(p, packet->client_flags); p+= 4;