]> granicus.if.org Git - php/commitdiff
Sync with bzr
authorAndrey Hristov <andrey@php.net>
Tue, 15 Jul 2008 13:11:09 +0000 (13:11 +0000)
committerAndrey Hristov <andrey@php.net>
Tue, 15 Jul 2008 13:11:09 +0000 (13:11 +0000)
ext/mysql/php_mysql.c
ext/mysqli/mysqli.c
ext/mysqlnd/mysqlnd.c
ext/mysqlnd/mysqlnd_palloc.c
ext/mysqlnd/mysqlnd_ps.c
ext/mysqlnd/mysqlnd_wireprotocol.c

index c441d4def6eb2644d0bbb048429e4bd08140c5ed..f38aff2957dee254f524b1c42b1d40d0b36405b8 100644 (file)
@@ -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) {
index fda5a846a838c9ba0d180249c1edc8caf5cedc8b..a1b26bdaaf57f1028afd7788bbc28780c5cd48cc 100644 (file)
@@ -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;
 }
 /* }}} */
index 12b215ac4c8a5589701e846ff483c4a822ead4ee..fb57ca70f54409bd277b9e890f54abaf86008bf9 100644 (file)
@@ -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;
 }
 /* }}} */
index da6e2b07a6d786ae2e20726faf30c6eb06d44d1f..f64dd17ada7a7db931fbca8159e30a702c7632b0 100644 (file)
@@ -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);
index acacee22ef768d071d645ce4ccb01470d1edae2a..30154bfe5461e1133544c2b6bf704d97906acd09 100644 (file)
@@ -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
index 4816a4fb37f591cd2d0c334d3f591437f27fa7de..c59e1b216cbb2ee2a05c3e663f3803055a561ed1 100644 (file)
@@ -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;