diff --git a/source/pdo_sqlsrv/pdo_dbh.cpp b/source/pdo_sqlsrv/pdo_dbh.cpp index 6bea9c6e..5323058f 100644 --- a/source/pdo_sqlsrv/pdo_dbh.cpp +++ b/source/pdo_sqlsrv/pdo_dbh.cpp @@ -433,6 +433,7 @@ int pdo_sqlsrv_db_handle_factory(pdo_dbh_t *dbh, zval *driver_options TSRMLS_DC) } // throws PDOException if the ATTR_PERSISTENT is in connection options CHECK_CUSTOM_ERROR( dbh->is_persistent, *g_henv_cp, PDO_SQLSRV_ERROR_UNSUPPORTED_DBH_ATTR ) { + dbh->refcount--; throw pdo::PDOException(); } diff --git a/test/pdo_sqlsrv/pdo_065_construct_persistent.phpt b/test/pdo_sqlsrv/pdo_065_construct_persistent.phpt index 361a9625..0f0fc5a0 100644 --- a/test/pdo_sqlsrv/pdo_065_construct_persistent.phpt +++ b/test/pdo_sqlsrv/pdo_065_construct_persistent.phpt @@ -6,33 +6,33 @@ Exception is thrown if the unsupported attribute ATTR_PERSISTENT is put into the include 'pdo_tools.inc'; require_once("autonomous_setup.php"); $database = "tempdb"; -$dsn = "sqlsrv:Server = $serverName;Database = $database;"; +$dsn = "sqlsrv:Server = $serverName;Database = $database;"; try{ echo "Testing a connection with ATTR_PERSISTENT...\n"; // setting PDO::ATTR_PERSISTENT in PDO constructor returns an exception - $attr = array(PDO::ATTR_PERSISTENT => true); + $attr = array(PDO::ATTR_PERSISTENT => true); $conn = new PDO( $dsn, $username, $password, $attr); - //free the statement and connection - $stmt=null; - $conn=null; + //free the statement and connection + $stmt=null; + $conn=null; } catch( PDOException $e ) { echo "Exception from unsupported attribute (ATTR_PERSISTENT) is caught\n"; //exit; } try{ - echo "\nTesting new connection after exception thrown in previous connection...\n"; - $tableName1 = GetTempTableName('tab1'); - $conn = new PDO( $dsn, $username, $password ); - $sql = "CREATE TABLE $tableName1 (c1 int, c2 varchar(10))"; - $stmt = $conn->query($sql); - $ret = $conn->exec("INSERT INTO $tableName1 VALUES(1, 'column2')"); - $stmt = $conn->query("SELECT * FROM $tableName1"); - $result = $stmt->fetch(PDO::FETCH_ASSOC); - if ($result['c1'] == 1 && $result['c2'] == 'column2') { - echo "Test successfully"; - } + echo "\nTesting new connection after exception thrown in previous connection...\n"; + $tableName1 = GetTempTableName('tab1'); + $conn = new PDO( $dsn, $username, $password ); + $sql = "CREATE TABLE $tableName1 (c1 int, c2 varchar(10))"; + $stmt = $conn->query($sql); + $ret = $conn->exec("INSERT INTO $tableName1 VALUES(1, 'column2')"); + $stmt = $conn->query("SELECT * FROM $tableName1"); + $result = $stmt->fetch(PDO::FETCH_ASSOC); + if ($result['c1'] == 1 && $result['c2'] == 'column2') { + echo "Test successfully"; + } } catch( PDOException $e ) { var_dump( $e); diff --git a/test/pdo_sqlsrv/pdo_065_construct_prefetch.phpt b/test/pdo_sqlsrv/pdo_065_construct_prefetch.phpt index c3a90cfc..ddd8f0c9 100644 --- a/test/pdo_sqlsrv/pdo_065_construct_prefetch.phpt +++ b/test/pdo_sqlsrv/pdo_065_construct_prefetch.phpt @@ -6,20 +6,20 @@ Exception is thrown for the unsupported connection attribute ATTR_PREFETCH only include 'pdo_tools.inc'; require_once("autonomous_setup.php"); $database = "tempdb"; -$dsn = "sqlsrv:Server = $serverName;Database = $database;"; +$dsn = "sqlsrv:Server = $serverName;Database = $database;"; try{ echo "Testing a connection with ATTR_PREFETCH before ERRMODE_EXCEPTION...\n"; // setting PDO::ATTR_PERSISTENT in PDO constructor returns an exception - $attr = array(PDO::ATTR_PREFETCH => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION); + $attr = array(PDO::ATTR_PREFETCH => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION); $conn = new PDO( $dsn, $username, $password, $attr); - echo "Error from supported attribute (ATTR_PREFETCH) is silented\n\n"; + echo "Error from supported attribute (ATTR_PREFETCH) is silented\n\n"; - echo "Testing a connection with ATTR_PREFETCH after ERRMODE_EXCEPTION...\n"; - $attr = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_PREFETCH => true); - $conn = new PDO( $dsn, $username, $password, $attr); - //free the statement and connection - $stmt=null; - $conn=null; + echo "Testing a connection with ATTR_PREFETCH after ERRMODE_EXCEPTION...\n"; + $attr = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_PREFETCH => true); + $conn = new PDO( $dsn, $username, $password, $attr); + //free the statement and connection + $stmt=null; + $conn=null; } catch( PDOException $e ) { echo "Exception from unsupported attribute (ATTR_PREFETCH) is caught\n";