]> granicus.if.org Git - php/commitdiff
- renamed rollback function to _restore_connection_default
authorGeorg Richter <georg@php.net>
Mon, 9 Sep 2002 15:53:05 +0000 (15:53 +0000)
committerGeorg Richter <georg@php.net>
Mon, 9 Sep 2002 15:53:05 +0000 (15:53 +0000)
- in _restore_connection_default:
  - unset the selected database (thx to Paul DuBois)
  - set session variable autocommit to default (=1)

ext/mysql/php_mysql.c

index e7fe46fa2a442078b82db4c448c84cd15f01520d..82a1e3fb758e556106aa25834001dd2715e713f0 100644 (file)
@@ -223,12 +223,14 @@ void timeout(int sig);
 
 #define CHECK_LINK(link) { if (link==-1) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "A link to the server could not be established"); RETURN_FALSE; } }
 
-/* {{{ _rollback_mysql_transactions
+/* {{{ _restore_connection_defaults
  */
-static int _rollback_mysql_transactions(zend_rsrc_list_entry *rsrc TSRMLS_DC)
+static int _restore_connection_defaults(zend_rsrc_list_entry *rsrc TSRMLS_DC)
 {
        php_mysql_conn *link;
        char    query[128];
+       char    user[128];
+       char    passwd[128];
 
        /* check if its a persistent link */
        if (Z_TYPE_P(rsrc) != le_plink) 
@@ -240,6 +242,17 @@ static int _rollback_mysql_transactions(zend_rsrc_list_entry *rsrc TSRMLS_DC)
        strcpy (query, "ROLLBACK");
        mysql_real_query(&link->conn, query, strlen(query));
 
+       /* restore session variable "autocommit" to default (=1) */
+       strcpy (query, "SET AUTOCOMMIT=1");
+       mysql_real_query(&link->conn, query, strlen(query));
+
+       /* unset the current selected db */
+#if MYSQL_VERSION_ID > 32329
+       strcpy (user, (char *)(&link->conn)->user);
+       strcpy (passwd, (char *)(&link->conn)->passwd);
+       mysql_change_user(&link->conn, user, passwd, "");
+#endif
+
        return 0;       
 }
 /* }}} */
@@ -420,7 +433,7 @@ PHP_RINIT_FUNCTION(mysql)
  */
 PHP_RSHUTDOWN_FUNCTION(mysql)
 {
-       zend_hash_apply(&EG(persistent_list), (apply_func_t) _rollback_mysql_transactions TSRMLS_CC);
+       zend_hash_apply(&EG(persistent_list), (apply_func_t) _restore_connection_defaults TSRMLS_CC);
 
        if (MySG(connect_error)!=NULL) {
                efree(MySG(connect_error));