wez Sat Jun 11 10:48:07 2005 EDT Modified files: /php-src/ext/pdo_odbc odbc_driver.c Log: hunting for a bug. Looks like it might be yet-another-mysterious-shutdown problem. http://cvs.php.net/diff.php/php-src/ext/pdo_odbc/odbc_driver.c?r1=1.22&r2=1.23&ty=u Index: php-src/ext/pdo_odbc/odbc_driver.c diff -u php-src/ext/pdo_odbc/odbc_driver.c:1.22 php-src/ext/pdo_odbc/odbc_driver.c:1.23 --- php-src/ext/pdo_odbc/odbc_driver.c:1.22 Sat Jun 11 08:38:12 2005 +++ php-src/ext/pdo_odbc/odbc_driver.c Sat Jun 11 10:48:06 2005 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: odbc_driver.c,v 1.22 2005/06/11 12:38:12 wez Exp $ */ +/* $Id: odbc_driver.c,v 1.23 2005/06/11 14:48:06 wez Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -101,8 +101,10 @@ SQLEndTran(SQL_HANDLE_DBC, H->dbc, SQL_ROLLBACK); SQLDisconnect(H->dbc); SQLFreeHandle(SQL_HANDLE_DBC, H->dbc); + H->dbc = NULL; } SQLFreeHandle(SQL_HANDLE_ENV, H->env); + H->env = NULL; pefree(H, dbh->is_persistent); return 0; @@ -249,10 +251,9 @@ if (dbh->auto_commit) { /* turn auto-commit back on again */ - RETCODE rc; rc = SQLSetConnectAttr(H->dbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_ON, SQL_NTS); if (rc != SQL_SUCCESS) { - pdo_odbc_drv_error("SQLSetConnectAttr AUTOCOMMIT = OFF"); + pdo_odbc_drv_error("SQLSetConnectAttr AUTOCOMMIT = ON"); return 0; } } @@ -263,7 +264,7 @@ { pdo_odbc_db_handle *H = (pdo_odbc_db_handle *)dbh->driver_data; RETCODE rc; - + rc = SQLEndTran(SQL_HANDLE_DBC, H->dbc, SQL_ROLLBACK); if (rc != SQL_SUCCESS) { @@ -273,12 +274,11 @@ return 0; } } - if (dbh->auto_commit && H->dbc && dbh->in_txn) { + if (dbh->auto_commit && H->dbc) { /* turn auto-commit back on again */ - RETCODE rc; rc = SQLSetConnectAttr(H->dbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_ON, SQL_NTS); if (rc != SQL_SUCCESS) { - pdo_odbc_drv_error("SQLSetConnectAttr AUTOCOMMIT = OFF"); + pdo_odbc_drv_error("SQLSetConnectAttr AUTOCOMMIT = ON"); return 0; } } @@ -357,13 +357,12 @@ return 0; } - if (!dbh->auto_commit) { - rc = SQLSetConnectAttr(H->dbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_OFF, SQL_NTS); - if (rc != SQL_SUCCESS) { - pdo_odbc_drv_error("SQLSetConnectAttr AUTOCOMMIT = OFF"); - odbc_handle_closer(dbh TSRMLS_CC); - return 0; - } + rc = SQLSetConnectAttr(H->dbc, SQL_ATTR_AUTOCOMMIT, + (SQLPOINTER)(dbh->auto_commit ? SQL_AUTOCOMMIT_ON : SQL_AUTOCOMMIT_OFF), SQL_NTS); + if (rc != SQL_SUCCESS) { + pdo_odbc_drv_error("SQLSetConnectAttr AUTOCOMMIT"); + odbc_handle_closer(dbh TSRMLS_CC); + return 0; } /* set up the cursor library, if needed, or if configured explicitly */
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php