diff options
| author | Dmitry Stogov <dmitry@zend.com> | 2014-04-26 00:32:51 +0400 | 
|---|---|---|
| committer | Dmitry Stogov <dmitry@zend.com> | 2014-04-26 00:32:51 +0400 | 
| commit | f9927a6c97208c60d922f9a4e98feb8079c57d1f (patch) | |
| tree | 35815b69d1bf7d47fb41e857ff8d2b024ddac153 /ext/mysql/php_mysql.c | |
| parent | 4e7cbf3f5842abe6688c11ce3cc11d2eabf0695f (diff) | |
| parent | b82d077f988606580e5c06a9da18fe4f60ddb7cb (diff) | |
| download | php-git-f9927a6c97208c60d922f9a4e98feb8079c57d1f.tar.gz | |
Merge mainstream 'master' branch into refactoring
During merge I had to revert:
	Nikita's patch for php_splice() (it probably needs to be applyed again)
	Bob Weinand's patches related to constant expression handling (we need to review them carefully)
	I also reverted all our attempts to support sapi/phpdbg (we didn't test it anyway)
Conflicts:
	Zend/zend.h
	Zend/zend_API.c
	Zend/zend_ast.c
	Zend/zend_compile.c
	Zend/zend_compile.h
	Zend/zend_constants.c
	Zend/zend_exceptions.c
	Zend/zend_execute.c
	Zend/zend_execute.h
	Zend/zend_execute_API.c
	Zend/zend_hash.c
	Zend/zend_highlight.c
	Zend/zend_language_parser.y
	Zend/zend_language_scanner.c
	Zend/zend_language_scanner_defs.h
	Zend/zend_variables.c
	Zend/zend_vm_def.h
	Zend/zend_vm_execute.h
	ext/date/php_date.c
	ext/dom/documenttype.c
	ext/hash/hash.c
	ext/iconv/iconv.c
	ext/mbstring/tests/zend_multibyte-10.phpt
	ext/mbstring/tests/zend_multibyte-11.phpt
	ext/mbstring/tests/zend_multibyte-12.phpt
	ext/mysql/php_mysql.c
	ext/mysqli/mysqli.c
	ext/mysqlnd/mysqlnd_reverse_api.c
	ext/mysqlnd/php_mysqlnd.c
	ext/opcache/ZendAccelerator.c
	ext/opcache/zend_accelerator_util_funcs.c
	ext/opcache/zend_persist.c
	ext/opcache/zend_persist_calc.c
	ext/pcre/php_pcre.c
	ext/pdo/pdo_dbh.c
	ext/pdo/pdo_stmt.c
	ext/pdo_pgsql/pgsql_driver.c
	ext/pgsql/pgsql.c
	ext/reflection/php_reflection.c
	ext/session/session.c
	ext/spl/spl_array.c
	ext/spl/spl_observer.c
	ext/standard/array.c
	ext/standard/basic_functions.c
	ext/standard/html.c
	ext/standard/mail.c
	ext/standard/php_array.h
	ext/standard/proc_open.c
	ext/standard/streamsfuncs.c
	ext/standard/user_filters.c
	ext/standard/var_unserializer.c
	ext/standard/var_unserializer.re
	main/php_variables.c
	sapi/phpdbg/phpdbg.c
	sapi/phpdbg/phpdbg_bp.c
	sapi/phpdbg/phpdbg_frame.c
	sapi/phpdbg/phpdbg_help.c
	sapi/phpdbg/phpdbg_list.c
	sapi/phpdbg/phpdbg_print.c
	sapi/phpdbg/phpdbg_prompt.c
Diffstat (limited to 'ext/mysql/php_mysql.c')
| -rw-r--r-- | ext/mysql/php_mysql.c | 32 | 
1 files changed, 10 insertions, 22 deletions
| diff --git a/ext/mysql/php_mysql.c b/ext/mysql/php_mysql.c index 1731c8a538..56dcf7b373 100644 --- a/ext/mysql/php_mysql.c +++ b/ext/mysql/php_mysql.c @@ -891,7 +891,7 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)  #ifndef MYSQL_USE_MYSQLND  			mysql->conn = mysql_init(NULL);  #else -			mysql->conn = mysql_init(persistent); +			mysql->conn = mysqlnd_init(MYSQLND_CLIENT_KNOWS_RSET_COPY_DATA, persistent);  #endif  			if (connect_timeout != -1) { @@ -900,7 +900,7 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)  #ifndef MYSQL_USE_MYSQLND  			if (mysql_real_connect(mysql->conn, host, user, passwd, NULL, port, socket, client_flags)==NULL)  #else -			if (mysqlnd_connect(mysql->conn, host, user, passwd, passwd_len, NULL, 0, port, socket, client_flags TSRMLS_CC) == NULL) +			if (mysqlnd_connect(mysql->conn, host, user, passwd, passwd_len, NULL, 0, port, socket, client_flags, MYSQLND_CLIENT_KNOWS_RSET_COPY_DATA TSRMLS_CC) == NULL)  #endif  			{  				/* Populate connect error globals so that the error functions can read them */ @@ -953,7 +953,7 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)  #ifndef MYSQL_USE_MYSQLND  					if (mysql_real_connect(mysql->conn, host, user, passwd, NULL, port, socket, client_flags)==NULL)  #else -					if (mysqlnd_connect(mysql->conn, host, user, passwd, passwd_len, NULL, 0, port, socket, client_flags TSRMLS_CC) == NULL) +					if (mysqlnd_connect(mysql->conn, host, user, passwd, passwd_len, NULL, 0, port, socket, client_flags, MYSQLND_CLIENT_KNOWS_RSET_COPY_DATA TSRMLS_CC) == NULL)  #endif  					{  						php_error_docref(NULL TSRMLS_CC, E_WARNING, "Link to server lost, unable to reconnect"); @@ -1014,7 +1014,7 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)  #ifndef MYSQL_USE_MYSQLND  		mysql->conn = mysql_init(NULL);  #else -		mysql->conn = mysql_init(persistent); +		mysql->conn = mysqlnd_init(MYSQLND_CLIENT_KNOWS_RSET_COPY_DATA, persistent);  #endif  		if (!mysql->conn) {  			MySG(connect_error) = estrdup("OOM"); @@ -1031,7 +1031,7 @@ static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)  #ifndef MYSQL_USE_MYSQLND  		if (mysql_real_connect(mysql->conn, host, user, passwd, NULL, port, socket, client_flags)==NULL)  #else -		if (mysqlnd_connect(mysql->conn, host, user, passwd, passwd_len, NULL, 0, port, socket, client_flags TSRMLS_CC) == NULL) +		if (mysqlnd_connect(mysql->conn, host, user, passwd, passwd_len, NULL, 0, port, socket, client_flags, MYSQLND_CLIENT_KNOWS_RSET_COPY_DATA TSRMLS_CC) == NULL)  #endif  		{  			/* Populate connect error globals so that the error functions can read them */ @@ -2183,20 +2183,12 @@ static void php_mysql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, long result_type,  			fci.symbol_table = NULL;  			fci.object = Z_OBJ_P(return_value);  			fci.retval = &retval; +			fci.params = NULL; +			fci.param_count = 0; +			fci.no_separation = 1; +  			if (ctor_params && Z_TYPE_P(ctor_params) != IS_NULL) { -				if (Z_TYPE_P(ctor_params) == IS_ARRAY) { -					HashTable *htl = Z_ARRVAL_P(ctor_params); -					uint idx; -					Bucket *p; - -					fci.param_count = 0; -					fci.params = safe_emalloc(sizeof(zval), htl->nNumOfElements, 0); -					for (idx = 0; idx < htl->nNumUsed; idx++) { -						p = htl->arData + idx; -						if (ZVAL_IS_NULL(&p->val)) continue; -						ZVAL_COPY_VALUE(&fci.params[fci.param_count++], &p->val); -					} -				} else { +				if (zend_fcall_info_args(&fci, ctor_params TSRMLS_CC) == FAILURE) {  					/* Two problems why we throw exceptions here: PHP is typeless  					 * and hence passing one argument that's not an array could be  					 * by mistake and the other way round is possible, too. The @@ -2206,11 +2198,7 @@ static void php_mysql_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, long result_type,  					zend_throw_exception(zend_exception_get_default(TSRMLS_C), "Parameter ctor_params must be an array", 0 TSRMLS_CC);  					return;  				} -			} else { -				fci.param_count = 0; -				fci.params = NULL;  			} -			fci.no_separation = 1;  			fcc.initialized = 1;  			fcc.function_handler = ce->constructor; | 
