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