andrey Sat Jul 9 22:20:26 2005 EDT Modified files: /php-src/ext/pdo_mysql mysql_statement.c Log: if the result set is buffered ask libmysql to compute the lengths, so later allocate buffer as big as the largest value of the column in the result set (max_legth positive). http://cvs.php.net/diff.php/php-src/ext/pdo_mysql/mysql_statement.c?r1=1.37&r2=1.38&ty=u Index: php-src/ext/pdo_mysql/mysql_statement.c diff -u php-src/ext/pdo_mysql/mysql_statement.c:1.37 php-src/ext/pdo_mysql/mysql_statement.c:1.38 --- php-src/ext/pdo_mysql/mysql_statement.c:1.37 Sat Jul 9 22:00:35 2005 +++ php-src/ext/pdo_mysql/mysql_statement.c Sat Jul 9 22:20:26 2005 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysql_statement.c,v 1.37 2005/07/10 02:00:35 wez Exp $ */ +/* $Id: mysql_statement.c,v 1.38 2005/07/10 02:20:26 andrey Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -78,7 +78,6 @@ my_ulonglong row_count; #if HAVE_MYSQL_STMT_PREPARE int i; - my_bool on = 1; if (S->stmt) { /* (re)bind the parameters */ @@ -92,7 +91,12 @@ return 0; } - mysql_stmt_attr_set(S->stmt, STMT_ATTR_UPDATE_MAX_LENGTH, &on); + /* if buffered, pre-fetch all the data */ + if (H->buffered) { + my_bool on = 1; + mysql_stmt_attr_set(S->stmt, STMT_ATTR_UPDATE_MAX_LENGTH, &on); + mysql_stmt_store_result(S->stmt); + } if (!S->result) { /* figure out the result set format, if any */ @@ -117,7 +121,9 @@ /* summon memory to hold the row */ for (i = 0; i < stmt->column_count; i++) { - S->bound_result[i].buffer_length = S->fields[i].length; + S->bound_result[i].buffer_length = + S->fields[i].max_length? S->fields[i].max_length: + S->fields[i].length; S->bound_result[i].buffer = emalloc(S->bound_result[i].buffer_length); S->bound_result[i].is_null = &S->out_null[i]; S->bound_result[i].length = &S->out_length[i]; @@ -131,10 +137,6 @@ } } - /* if buffered, pre-fetch all the data */ - if (H->buffered) { - mysql_stmt_store_result(S->stmt); - } stmt->row_count = mysql_stmt_affected_rows(S->stmt); return 1;
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php