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

Reply via email to