iliaa Tue Jul 19 23:38:34 2005 EDT Modified files: /php-src/ext/pdo_mysql mysql_driver.c mysql_statement.c /php-src/ext/pdo pdo.c php_pdo_driver.h Log: Proper handling for databases that need to pre-calculate length of large columns, which is not normally done for performance reasons. http://cvs.php.net/diff.php/php-src/ext/pdo_mysql/mysql_driver.c?r1=1.58&r2=1.59&ty=u Index: php-src/ext/pdo_mysql/mysql_driver.c diff -u php-src/ext/pdo_mysql/mysql_driver.c:1.58 php-src/ext/pdo_mysql/mysql_driver.c:1.59 --- php-src/ext/pdo_mysql/mysql_driver.c:1.58 Wed Jul 13 22:09:08 2005 +++ php-src/ext/pdo_mysql/mysql_driver.c Tue Jul 19 23:38:32 2005 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysql_driver.c,v 1.58 2005/07/14 02:09:08 wez Exp $ */ +/* $Id: mysql_driver.c,v 1.59 2005/07/20 03:38:32 iliaa Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -208,6 +208,8 @@ dbh->alloc_own_columns = 1; + S->max_length = pdo_attr_lval(driver_options, PDO_ATTR_MAX_COLUMN_LEN, 0 TSRMLS_CC); + return 1; #else http://cvs.php.net/diff.php/php-src/ext/pdo_mysql/mysql_statement.c?r1=1.46&r2=1.47&ty=u Index: php-src/ext/pdo_mysql/mysql_statement.c diff -u php-src/ext/pdo_mysql/mysql_statement.c:1.46 php-src/ext/pdo_mysql/mysql_statement.c:1.47 --- php-src/ext/pdo_mysql/mysql_statement.c:1.46 Tue Jul 19 22:36:34 2005 +++ php-src/ext/pdo_mysql/mysql_statement.c Tue Jul 19 23:38:32 2005 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mysql_statement.c,v 1.46 2005/07/20 02:36:34 iliaa Exp $ */ +/* $Id: mysql_statement.c,v 1.47 2005/07/20 03:38:32 iliaa Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -93,8 +93,7 @@ /* if buffered, pre-fetch all the data */ if (H->buffered) { - /* if we have bound the buffers don't set the attribute again */ - if (!S->result && stmt->column_count > 0) { + if (S->max_length == 1 && !S->result) { my_bool on = 1; mysql_stmt_attr_set(S->stmt, STMT_ATTR_UPDATE_MAX_LENGTH, &on); } http://cvs.php.net/diff.php/php-src/ext/pdo/pdo.c?r1=1.55&r2=1.56&ty=u Index: php-src/ext/pdo/pdo.c diff -u php-src/ext/pdo/pdo.c:1.55 php-src/ext/pdo/pdo.c:1.56 --- php-src/ext/pdo/pdo.c:1.55 Mon Jul 11 22:40:59 2005 +++ php-src/ext/pdo/pdo.c Tue Jul 19 23:38:33 2005 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo.c,v 1.55 2005/07/12 02:40:59 wez Exp $ */ +/* $Id: pdo.c,v 1.56 2005/07/20 03:38:33 iliaa Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -338,6 +338,7 @@ REGISTER_LONG_CONSTANT("PDO_ATTR_FETCH_CATALOG_NAMES", (long)PDO_ATTR_FETCH_CATALOG_NAMES, CONST_CS|CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PDO_ATTR_DRIVER_NAME", (long)PDO_ATTR_DRIVER_NAME, CONST_CS|CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PDO_ATTR_STRINGIFY_FETCHES",(long)PDO_ATTR_STRINGIFY_FETCHES, CONST_CS|CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PDO_ATTR_MAX_COLUMN_LEN",(long)PDO_ATTR_MAX_COLUMN_LEN, CONST_CS|CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PDO_ERRMODE_SILENT", (long)PDO_ERRMODE_SILENT, CONST_CS|CONST_PERSISTENT); REGISTER_LONG_CONSTANT("PDO_ERRMODE_WARNING", (long)PDO_ERRMODE_WARNING, CONST_CS|CONST_PERSISTENT); http://cvs.php.net/diff.php/php-src/ext/pdo/php_pdo_driver.h?r1=1.65&r2=1.66&ty=u Index: php-src/ext/pdo/php_pdo_driver.h diff -u php-src/ext/pdo/php_pdo_driver.h:1.65 php-src/ext/pdo/php_pdo_driver.h:1.66 --- php-src/ext/pdo/php_pdo_driver.h:1.65 Mon Jul 11 22:40:59 2005 +++ php-src/ext/pdo/php_pdo_driver.h Tue Jul 19 23:38:33 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pdo_driver.h,v 1.65 2005/07/12 02:40:59 wez Exp $ */ +/* $Id: php_pdo_driver.h,v 1.66 2005/07/20 03:38:33 iliaa Exp $ */ #ifndef PHP_PDO_DRIVER_H #define PHP_PDO_DRIVER_H @@ -128,6 +128,7 @@ PDO_ATTR_FETCH_CATALOG_NAMES, /* include the catalog/db name names in the column names, where available */ PDO_ATTR_DRIVER_NAME, /* name of the driver (as used in the constructor) */ PDO_ATTR_STRINGIFY_FETCHES, /* converts integer/float types to strings during fetch */ + PDO_ATTR_MAX_COLUMN_LEN, /* make database calculate maximum length of data found in a column */ /* this defines the start of the range for driver specific options. * Drivers should define their own attribute constants beginning with this
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php