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

Reply via email to