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