iliaa Fri Nov 7 12:20:49 2003 EDT Modified files: /php-src/ext/mysqli mysqli.c /php-src/ext/mysql php_mysql.c Log: 10-18% optimization of fetch_array(), when both number & string indexes are created. # Do we want to MFH the change (for ext/mysql) into 4.3.X? Index: php-src/ext/mysqli/mysqli.c diff -u php-src/ext/mysqli/mysqli.c:1.17 php-src/ext/mysqli/mysqli.c:1.18 --- php-src/ext/mysqli/mysqli.c:1.17 Thu Oct 30 08:32:18 2003 +++ php-src/ext/mysqli/mysqli.c Fri Nov 7 12:20:48 2003 @@ -15,7 +15,7 @@ | Author: Georg Richter <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ - $Id: mysqli.c,v 1.17 2003/10/30 13:32:18 zak Exp $ + $Id: mysqli.c,v 1.18 2003/11/07 17:20:48 iliaa Exp $ */ #ifdef HAVE_CONFIG_H @@ -375,7 +375,6 @@ MYSQL_RES *result; zval *mysql_result; int fetchtype; - int copyflag; unsigned int i; MYSQL_FIELD *fields; MYSQL_ROW row; @@ -430,24 +429,26 @@ for (i = 0; i < mysql_num_fields(result); i++) { if (row[i]) { - char *column; - int column_len; - + zval *res; + + MAKE_STD_ZVAL(res); + /* check if we need magic quotes */ if (PG(magic_quotes_runtime)) { - column = php_addslashes(row[i], field_len[i], &column_len, 0 TSRMLS_CC); - copyflag = 0; + Z_TYPE_P(res) = IS_STRING; + Z_STRVAL_P(res) = php_addslashes(row[i], field_len[i], &Z_STRLEN_P(res), 0 TSRMLS_CC); } else { - column = row[i]; - column_len = field_len[i]; - copyflag = 1; + ZVAL_STRINGL(res, row[i], field_len[i], 1); } + if (fetchtype & MYSQLI_NUM) { - add_index_stringl(return_value, i, column, column_len, copyflag); - copyflag = 1; + add_index_zval(return_value, i, res); } if (fetchtype & MYSQLI_ASSOC) { - add_assoc_stringl(return_value, fields[i].name, column, column_len, copyflag); + if (fetchtype & MYSQLI_NUM) { + ZVAL_ADDREF(res); + } + add_assoc_zval(return_value, fields[i].name, res); } } else { if (fetchtype & MYSQLI_NUM) { Index: php-src/ext/mysql/php_mysql.c diff -u php-src/ext/mysql/php_mysql.c:1.201 php-src/ext/mysql/php_mysql.c:1.202 --- php-src/ext/mysql/php_mysql.c:1.201 Thu Oct 2 21:07:35 2003 +++ php-src/ext/mysql/php_mysql.c Fri Nov 7 12:20:49 2003 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_mysql.c,v 1.201 2003/10/03 01:07:35 iliaa Exp $ */ +/* $Id: php_mysql.c,v 1.202 2003/11/07 17:20:49 iliaa Exp $ */ /* TODO: * @@ -1932,26 +1932,25 @@ mysql_field_seek(mysql_result, 0); for (mysql_field=mysql_fetch_field(mysql_result), i=0; mysql_field; mysql_field=mysql_fetch_field(mysql_result), i++) { if (mysql_row[i]) { - char *data; - int data_len; - int should_copy; + zval *data; + + MAKE_STD_ZVAL(data); if (PG(magic_quotes_runtime)) { - data = php_addslashes(mysql_row[i], mysql_row_lengths[i],&data_len, 0 TSRMLS_CC); - should_copy = 0; + Z_TYPE_P(data) = IS_STRING; + Z_STRVAL_P(data) = php_addslashes(mysql_row[i], mysql_row_lengths[i], &Z_STRLEN_P(data), 0 TSRMLS_CC); } else { - data = mysql_row[i]; - data_len = mysql_row_lengths[i]; - should_copy = 1; + ZVAL_STRINGL(data, mysql_row[i], mysql_row_lengths[i], 1); } - + if (result_type & MYSQL_NUM) { - add_index_stringl(return_value, i, data, data_len, should_copy); - should_copy = 1; + add_index_zval(return_value, i, data); } - if (result_type & MYSQL_ASSOC) { - add_assoc_stringl(return_value, mysql_field->name, data, data_len, should_copy); + if (result_type & MYSQL_NUM) { + ZVAL_ADDREF(data); + } + add_assoc_zval(return_value, mysql_field->name, data); } } else { /* NULL value. */
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php