From: Date: June 28 2007 1:53pm Subject: PHP mysqlnd svn commit: r560 - in trunk: mysqlnd php4/ext/mysql php5/ext/mysql php6/ext/mysql php6/ext/mysqli List-Archive: http://lists.mysql.com/commits/29842 Message-Id: <200706281153.l5SBrgkt018679@bk-internal.mysql.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Author: ahristov Date: 2007-06-28 13:53:41 +0200 (Thu, 28 Jun 2007) New Revision: 560 Modified: trunk/mysqlnd/mysqlnd.h trunk/mysqlnd/mysqlnd_enum_n_def.h trunk/mysqlnd/mysqlnd_result.c trunk/php4/ext/mysql/php_mysql.c trunk/php5/ext/mysql/php_mysql.c trunk/php6/ext/mysql/php_mysql.c trunk/php6/ext/mysqli/mysqli.c Log: There are differences in the return values of ext/mysql and ext/mysqli, thus mysqlnd should know which API uses it. Modified: trunk/mysqlnd/mysqlnd.h =================================================================== --- trunk/mysqlnd/mysqlnd.h 2007-06-28 11:32:50 UTC (rev 559) +++ trunk/mysqlnd/mysqlnd.h 2007-06-28 11:53:41 UTC (rev 560) @@ -372,7 +372,7 @@ MYSQLND_RES * (*use_result)(MYSQLND_RES * const result, zend_bool ps_protocol TSRMLS_DC); MYSQLND_RES * (*store_result)(MYSQLND_RES * result, MYSQLND * const conn, zend_bool ps TSRMLS_DC); - void (*fetch_into)(MYSQLND_RES *result, unsigned int flags, zval *return_value TSRMLS_DC ZEND_FILE_LINE_DC); + void (*fetch_into)(MYSQLND_RES *result, unsigned int flags, zval *return_value, enum_mysqlnd_extension ext TSRMLS_DC ZEND_FILE_LINE_DC); void (*fetch_all)(MYSQLND_RES *result, unsigned int flags, zval *return_value TSRMLS_DC ZEND_FILE_LINE_DC); mynd_ulonglong (*num_rows)(const MYSQLND_RES * const result); unsigned int (*num_fields)(const MYSQLND_RES * const result); @@ -662,7 +662,7 @@ /* Query */ -#define mysqlnd_fetch_into(result, flags, return_value) (result)->m.fetch_into((result), (flags), (return_value) TSRMLS_CC ZEND_FILE_LINE_CC) +#define mysqlnd_fetch_into(result, flags, ret_val, ext) (result)->m.fetch_into((result), (flags), (ret_val), (ext) TSRMLS_CC ZEND_FILE_LINE_CC) #define mysqlnd_fetch_all(result, flags, return_value) (result)->m.fetch_all((result), (flags), (return_value) TSRMLS_CC ZEND_FILE_LINE_CC) #define mysqlnd_get_connection_stats(conn, values) (conn)->m->get_statistics((conn), (values) TSRMLS_CC ZEND_FILE_LINE_CC) #define mysqlnd_get_client_stats(values) _mysqlnd_get_client_stats((values) TSRMLS_CC ZEND_FILE_LINE_CC) Modified: trunk/mysqlnd/mysqlnd_enum_n_def.h =================================================================== --- trunk/mysqlnd/mysqlnd_enum_n_def.h 2007-06-28 11:32:50 UTC (rev 559) +++ trunk/mysqlnd/mysqlnd_enum_n_def.h 2007-06-28 11:53:41 UTC (rev 560) @@ -56,6 +56,12 @@ #define CLIENT_MULTI_STATEMENTS (1UL << 16) /* Enable/disable multi-stmt support */ #define CLIENT_MULTI_RESULTS (1UL << 17) /* Enable/disable multi-results */ +typedef enum mysqlnd_extension +{ + MYSQLND_MYSQL = 0, + MYSQLND_MYSQLI, +} enum_mysqlnd_extension; + enum { MYSQLND_FETCH_ASSOC = 1, Modified: trunk/mysqlnd/mysqlnd_result.c =================================================================== --- trunk/mysqlnd/mysqlnd_result.c 2007-06-28 11:32:50 UTC (rev 559) +++ trunk/mysqlnd/mysqlnd_result.c 2007-06-28 11:53:41 UTC (rev 560) @@ -936,7 +936,8 @@ /* {{{ mysqlnd_res::fetch_into */ static void MYSQLND_METHOD(mysqlnd_res, fetch_into)(MYSQLND_RES *result, unsigned int flags, - zval *return_value TSRMLS_DC ZEND_FILE_LINE_DC) + zval *return_value, + enum_mysqlnd_extension extension TSRMLS_DC ZEND_FILE_LINE_DC) { zend_bool fetched_anything; @@ -953,7 +954,15 @@ RETURN_FALSE; } else if (fetched_anything == FALSE) { zval_dtor(return_value); - RETURN_NULL(); + switch (extension) { + case MYSQLND_MYSQLI: + RETURN_NULL(); + break; + case MYSQLND_MYSQL: + RETURN_FALSE; + break; + default:exit(0); + } } /* return_value is IS_NULL for no more data and an array for data. Thus it's ok @@ -985,7 +994,7 @@ (result->data->data_cursor - result->data->data) < result->data->row_count) { MAKE_STD_ZVAL(row); - mysqlnd_fetch_into(result, flags, row); + mysqlnd_fetch_into(result, flags, row, MYSQLND_MYSQLI); add_index_zval(return_value, i++, row); } } Modified: trunk/php4/ext/mysql/php_mysql.c =================================================================== --- trunk/php4/ext/mysql/php_mysql.c 2007-06-28 11:32:50 UTC (rev 559) +++ trunk/php4/ext/mysql/php_mysql.c 2007-06-28 11:53:41 UTC (rev 560) @@ -2090,7 +2090,7 @@ } } #else - mysqlnd_fetch_into(mysql_result, MYSQLND_FETCH_ASSOC, return_value); + mysqlnd_fetch_into(mysql_result, MYSQLND_FETCH_ASSOC, return_value, MYSQLND_MYSQL); #endif } /* }}} */ @@ -2108,7 +2108,7 @@ } ZEND_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, -1, "MySQL result", le_result); - mysqlnd_fetch_into(result, MYSQLND_FETCH_NUM, return_value); + mysqlnd_fetch_into(result, MYSQLND_FETCH_NUM, return_value, MYSQLND_MYSQL); #else php_mysql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, MYSQL_NUM, 1); #endif @@ -2145,7 +2145,7 @@ } ZEND_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, -1, "MySQL result", le_result); - mysqlnd_fetch_into(result, mode, return_value); + mysqlnd_fetch_into(result, mode, return_value, MYSQLND_MYSQL); #endif } /* }}} */ @@ -2166,7 +2166,7 @@ } ZEND_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, -1, "MySQL result", le_result); - mysqlnd_fetch_into(result, MYSQLND_FETCH_ASSOC, return_value); + mysqlnd_fetch_into(result, MYSQLND_FETCH_ASSOC, return_value, MYSQLND_MYSQL); #endif } /* }}} */ Modified: trunk/php5/ext/mysql/php_mysql.c =================================================================== --- trunk/php5/ext/mysql/php_mysql.c 2007-06-28 11:32:50 UTC (rev 559) +++ trunk/php5/ext/mysql/php_mysql.c 2007-06-28 11:53:41 UTC (rev 560) @@ -2041,7 +2041,7 @@ } } #else - mysqlnd_fetch_into(mysql_result, MYSQLND_FETCH_ASSOC, return_value); + mysqlnd_fetch_into(mysql_result, MYSQLND_FETCH_ASSOC, return_value, MYSQLND_MYSQL); #endif #ifdef ZEND_ENGINE_2 @@ -2126,7 +2126,7 @@ } ZEND_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, -1, "MySQL result", le_result); - mysqlnd_fetch_into(result, MYSQLND_FETCH_NUM, return_value); + mysqlnd_fetch_into(result, MYSQLND_FETCH_NUM, return_value, MYSQLND_MYSQL); #else php_mysql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, MYSQL_NUM, 1, 0); #endif @@ -2163,7 +2163,7 @@ } ZEND_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, -1, "MySQL result", le_result); - mysqlnd_fetch_into(result, mode, return_value); + mysqlnd_fetch_into(result, mode, return_value, MYSQLND_MYSQL); #endif } /* }}} */ @@ -2184,7 +2184,7 @@ } ZEND_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, -1, "MySQL result", le_result); - mysqlnd_fetch_into(result, MYSQLND_FETCH_ASSOC, return_value); + mysqlnd_fetch_into(result, MYSQLND_FETCH_ASSOC, return_value, MYSQLND_MYSQL); #endif } /* }}} */ Modified: trunk/php6/ext/mysql/php_mysql.c =================================================================== --- trunk/php6/ext/mysql/php_mysql.c 2007-06-28 11:32:50 UTC (rev 559) +++ trunk/php6/ext/mysql/php_mysql.c 2007-06-28 11:53:41 UTC (rev 560) @@ -2016,7 +2016,7 @@ } } #else - mysqlnd_fetch_into(mysql_result, MYSQLND_FETCH_ASSOC, return_value); + mysqlnd_fetch_into(mysql_result, MYSQLND_FETCH_ASSOC, return_value, MYSQLND_MYSQL); #endif if (into_object) { @@ -2098,7 +2098,7 @@ } ZEND_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, -1, "MySQL result", le_result); - mysqlnd_fetch_into(result, MYSQLND_FETCH_NUM, return_value); + mysqlnd_fetch_into(result, MYSQLND_FETCH_NUM, return_value, MYSQLND_MYSQL); #else php_mysql_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU, MYSQL_NUM, 1, 0); #endif @@ -2135,7 +2135,7 @@ } ZEND_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, -1, "MySQL result", le_result); - mysqlnd_fetch_into(result, mode, return_value); + mysqlnd_fetch_into(result, mode, return_value, MYSQLND_MYSQL); #endif } /* }}} */ @@ -2156,7 +2156,7 @@ } ZEND_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, -1, "MySQL result", le_result); - mysqlnd_fetch_into(result, MYSQLND_FETCH_ASSOC, return_value); + mysqlnd_fetch_into(result, MYSQLND_FETCH_ASSOC, return_value, MYSQLND_MYSQL); #endif } /* }}} */ Modified: trunk/php6/ext/mysqli/mysqli.c =================================================================== --- trunk/php6/ext/mysqli/mysqli.c 2007-06-28 11:32:50 UTC (rev 559) +++ trunk/php6/ext/mysqli/mysqli.c 2007-06-28 11:53:41 UTC (rev 560) @@ -1073,8 +1073,7 @@ } } #else - mysqlnd_fetch_into(result, MYSQLND_FETCH_ASSOC, return_value); - + mysqlnd_fetch_into(result, MYSQLND_FETCH_ASSOC, return_value, MYSQLND_MYSQLI); #endif if (into_object && Z_TYPE_P(return_value) != IS_NULL) {