iliaa Thu Jun 28 03:13:29 2007 UTC
Modified files: (Branch: PHP_5_2)
/php-src/ext/pdo pdo_dbh.c
/php-src/ext/pdo_pgsql pgsql_driver.c
/php-src NEWS
Log:
Added support for ATTR_TIMEOUT inside pdo_pgsql driver.
Fixed a bug inside PDO's "use persistent" connection detection mechanism
that would trigger connections on "" and "0" values
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_dbh.c?r1=1.82.2.31.2.12&r2=1.82.2.31.2.13&diff_format=u
Index: php-src/ext/pdo/pdo_dbh.c
diff -u php-src/ext/pdo/pdo_dbh.c:1.82.2.31.2.12
php-src/ext/pdo/pdo_dbh.c:1.82.2.31.2.13
--- php-src/ext/pdo/pdo_dbh.c:1.82.2.31.2.12 Wed Jun 27 02:02:18 2007
+++ php-src/ext/pdo/pdo_dbh.c Thu Jun 28 03:13:29 2007
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pdo_dbh.c,v 1.82.2.31.2.12 2007/06/27 02:02:18 iliaa Exp $ */
+/* $Id: pdo_dbh.c,v 1.82.2.31.2.13 2007/06/28 03:13:29 iliaa Exp $ */
/* The PDO Database Handle Class */
@@ -280,7 +280,7 @@
pdo_dbh_t *pdbh = NULL;
if (SUCCESS == zend_hash_index_find(Z_ARRVAL_P(options),
PDO_ATTR_PERSISTENT, (void**)&v)) {
- if (Z_TYPE_PP(v) == IS_STRING) {
+ if (Z_TYPE_PP(v) == IS_STRING &&
!is_numeric_string(Z_STRVAL_PP(v), Z_STRLEN_PP(v), NULL, NULL, 0) &&
Z_STRLEN_PP(v) > 0) {
/* user specified key */
plen = spprintf(&hashkey, 0,
"PDO:DBH:DSN=%s:%s:%s:%s", data_source,
username ? username : "",
http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_pgsql/pgsql_driver.c?r1=1.53.2.14.2.8&r2=1.53.2.14.2.9&diff_format=u
Index: php-src/ext/pdo_pgsql/pgsql_driver.c
diff -u php-src/ext/pdo_pgsql/pgsql_driver.c:1.53.2.14.2.8
php-src/ext/pdo_pgsql/pgsql_driver.c:1.53.2.14.2.9
--- php-src/ext/pdo_pgsql/pgsql_driver.c:1.53.2.14.2.8 Wed Jun 27 02:00:46 2007
+++ php-src/ext/pdo_pgsql/pgsql_driver.c Thu Jun 28 03:13:29 2007
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: pgsql_driver.c,v 1.53.2.14.2.8 2007/06/27 02:00:46 iliaa Exp $ */
+/* $Id: pgsql_driver.c,v 1.53.2.14.2.9 2007/06/28 03:13:29 iliaa Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -670,6 +670,7 @@
pdo_pgsql_db_handle *H;
int ret = 0;
char *conn_str, *p, *e;
+ long connect_timeout = 30;
H = pecalloc(1, sizeof(pdo_pgsql_db_handle), dbh->is_persistent);
dbh->driver_data = H;
@@ -686,23 +687,25 @@
*p = ' ';
}
+ if (driver_options) {
+ connect_timeout = pdo_attr_lval(driver_options,
PDO_ATTR_TIMEOUT, 30 TSRMLS_CC);
+ }
+
/* support both full connection string & connection string + login
and/or password */
if (!dbh->username || !dbh->password) {
- conn_str = (char *) dbh->data_source;
+ spprintf(&conn_str, 0, "%s connect_timeout=%ld", (char *)
dbh->data_source, connect_timeout);
} else if (dbh->username && dbh->password) {
- spprintf(&conn_str, 0, "%s user=%s password=%s",
dbh->data_source, dbh->username, dbh->password);
+ spprintf(&conn_str, 0, "%s user=%s password=%s
connect_timeout=%ld", dbh->data_source, dbh->username, dbh->password,
connect_timeout);
} else if (dbh->username) {
- spprintf(&conn_str, 0, "%s user=%s", dbh->data_source,
dbh->username);
+ spprintf(&conn_str, 0, "%s user=%s connect_timeout=%ld",
dbh->data_source, dbh->username, connect_timeout);
} else {
- spprintf(&conn_str, 0, "%s password=%s", dbh->data_source,
dbh->password);
+ spprintf(&conn_str, 0, "%s password=%s connect_timeout=%ld",
dbh->data_source, dbh->password, connect_timeout);
}
H->server = PQconnectdb(conn_str);
-
- if (conn_str != dbh->data_source) {
- efree(conn_str);
- }
-
+
+ efree(conn_str);
+
if (PQstatus(H->server) != CONNECTION_OK) {
pdo_pgsql_error(dbh, PGRES_FATAL_ERROR,
PHP_PDO_PGSQL_CONNECTION_FAILURE_SQLSTATE);
goto cleanup;
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.806&r2=1.2027.2.547.2.807&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.806 php-src/NEWS:1.2027.2.547.2.807
--- php-src/NEWS:1.2027.2.547.2.806 Wed Jun 27 12:30:27 2007
+++ php-src/NEWS Thu Jun 28 03:13:29 2007
@@ -12,6 +12,7 @@
- Added persistent connection status checker to pdo_pgsql (Elvis
Pranskevichus, Ilia)
+- Added support for ATTR_TIMEOUT inside pdo_pgsql driver. (Ilia)
- Added php_ini_loaded_file() function which returns the path to the actual
php.ini in use. (Jani)
- Added GD version constants GD_MAJOR_VERSION, GD_MINOR_VERSION
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php