Added tests for manual verification
This commit is contained in:
parent
10aa50ced0
commit
91418df548
82
test/functional/pdo_sqlsrv/pdo_txn_rollback_crash.phpt
Normal file
82
test/functional/pdo_sqlsrv/pdo_txn_rollback_crash.phpt
Normal file
|
@ -0,0 +1,82 @@
|
|||
--TEST--
|
||||
Checks that calling query() after beginTransaction() with an invalid query does not cause a crash. Fix for Github 434.
|
||||
--DESCRIPTION--
|
||||
Calling beginTransaction() and then query() with an invalid query can cause a crash in php.exe or php-cgi.exe,
|
||||
which may manifest as a CLI crash or produce an error message saying "Faulting Module[...]odbc32.dll". The
|
||||
cause is an attempt to double free a statement handle after script execution which had not been properly freed
|
||||
during rollback. This test tells us nothing under run-tests.php because the crash only occurs at the end of
|
||||
script execution, so any expected output already exists and the test would pass. Therefore manual verification
|
||||
is necessary - this test should be run separately to verify no crash occurs.
|
||||
--SKIPIF--
|
||||
<?php require('skipif.inc'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
require_once("MsSetup.inc");
|
||||
|
||||
$conn = new PDO("sqlsrv:Server=$server; database = $databaseName", $uid, $pwd);
|
||||
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
|
||||
|
||||
for ($i = 0; $i < 50; $i++) {
|
||||
echo "Iteration $i\n";
|
||||
if ($conn->beginTransaction()) {
|
||||
$stmt = $conn->query('SELECT fakecolumn FROM faketable');
|
||||
}
|
||||
$conn->commit();
|
||||
}
|
||||
|
||||
$conn = null;
|
||||
|
||||
echo "Done.\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
Iteration 0
|
||||
Iteration 1
|
||||
Iteration 2
|
||||
Iteration 3
|
||||
Iteration 4
|
||||
Iteration 5
|
||||
Iteration 6
|
||||
Iteration 7
|
||||
Iteration 8
|
||||
Iteration 9
|
||||
Iteration 10
|
||||
Iteration 11
|
||||
Iteration 12
|
||||
Iteration 13
|
||||
Iteration 14
|
||||
Iteration 15
|
||||
Iteration 16
|
||||
Iteration 17
|
||||
Iteration 18
|
||||
Iteration 19
|
||||
Iteration 20
|
||||
Iteration 21
|
||||
Iteration 22
|
||||
Iteration 23
|
||||
Iteration 24
|
||||
Iteration 25
|
||||
Iteration 26
|
||||
Iteration 27
|
||||
Iteration 28
|
||||
Iteration 29
|
||||
Iteration 30
|
||||
Iteration 31
|
||||
Iteration 32
|
||||
Iteration 33
|
||||
Iteration 34
|
||||
Iteration 35
|
||||
Iteration 36
|
||||
Iteration 37
|
||||
Iteration 38
|
||||
Iteration 39
|
||||
Iteration 40
|
||||
Iteration 41
|
||||
Iteration 42
|
||||
Iteration 43
|
||||
Iteration 44
|
||||
Iteration 45
|
||||
Iteration 46
|
||||
Iteration 47
|
||||
Iteration 48
|
||||
Iteration 49
|
||||
Done.
|
82
test/functional/sqlsrv/sqlsrv_txn_rollback_crash.phpt
Normal file
82
test/functional/sqlsrv/sqlsrv_txn_rollback_crash.phpt
Normal file
|
@ -0,0 +1,82 @@
|
|||
--TEST--
|
||||
Checks that calling sqlsrv_query() after sqlsrv_begin_transaction() with an invalid query does not cause a crash.
|
||||
--DESCRIPTION--
|
||||
In PDO_SQLSRV, calling beginTransaction() and then query() with an invalid query can cause a crash in php.exe or
|
||||
php-cgi.exe, which may manifest as a CLI crash or produce an error message saying "Faulting Module[...]odbc32.dll".
|
||||
The equivalent sequence of operations in SQLSRV is not known to crash - this test is for verification. This test
|
||||
tells us nothing under run-tests.php because the crash only occurs at the end of script execution, so any expected
|
||||
output already exists and the test would pass. Therefore manual verification is necessary - this test should be run
|
||||
separately to verify no crash occurs.
|
||||
--SKIPIF--
|
||||
<?php require('skipif.inc'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
require_once("MsSetup.inc");
|
||||
$connOptions = array("Database"=>"$databaseName", "UID"=>"$uid", "PWD"=>"$pwd");
|
||||
|
||||
$conn = sqlsrv_connect($server, $connOptions);
|
||||
|
||||
for ($i = 0; $i < 50; $i++) {
|
||||
echo "Iteration $i\n";
|
||||
if (sqlsrv_begin_transaction($conn)) {
|
||||
$stmt = sqlsrv_query($conn, 'SELECT fakecolumn FROM faketable');
|
||||
}
|
||||
sqlsrv_commit($conn);
|
||||
}
|
||||
|
||||
sqlsrv_close($conn);
|
||||
|
||||
echo "Done.\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
Iteration 0
|
||||
Iteration 1
|
||||
Iteration 2
|
||||
Iteration 3
|
||||
Iteration 4
|
||||
Iteration 5
|
||||
Iteration 6
|
||||
Iteration 7
|
||||
Iteration 8
|
||||
Iteration 9
|
||||
Iteration 10
|
||||
Iteration 11
|
||||
Iteration 12
|
||||
Iteration 13
|
||||
Iteration 14
|
||||
Iteration 15
|
||||
Iteration 16
|
||||
Iteration 17
|
||||
Iteration 18
|
||||
Iteration 19
|
||||
Iteration 20
|
||||
Iteration 21
|
||||
Iteration 22
|
||||
Iteration 23
|
||||
Iteration 24
|
||||
Iteration 25
|
||||
Iteration 26
|
||||
Iteration 27
|
||||
Iteration 28
|
||||
Iteration 29
|
||||
Iteration 30
|
||||
Iteration 31
|
||||
Iteration 32
|
||||
Iteration 33
|
||||
Iteration 34
|
||||
Iteration 35
|
||||
Iteration 36
|
||||
Iteration 37
|
||||
Iteration 38
|
||||
Iteration 39
|
||||
Iteration 40
|
||||
Iteration 41
|
||||
Iteration 42
|
||||
Iteration 43
|
||||
Iteration 44
|
||||
Iteration 45
|
||||
Iteration 46
|
||||
Iteration 47
|
||||
Iteration 48
|
||||
Iteration 49
|
||||
Done.
|
Loading…
Reference in a new issue