add new test plus fix some

This commit is contained in:
yitam 2017-04-04 11:32:18 -07:00
parent 56be6ae056
commit 849725d742
3 changed files with 223 additions and 5 deletions

View file

@ -101,7 +101,7 @@ function FetchData($stmt, $tableName, $numRows, $fetchMode = false)
//--------------------------------------------------------------------
function RunTest()
{
StartTest("pdo_fetch_complex_transactions.phpt");
StartTest("pdo_fetch_complex_transactions");
try
{
require_once("autonomous_setup.php");
@ -134,7 +134,7 @@ function RunTest()
echo $e->getMessage();
}
echo "\nDone\n";
EndTest("pdo_fetch_complex_transactions.phpt");
EndTest("pdo_fetch_complex_transactions");
}
RunTest();
@ -142,7 +142,7 @@ RunTest();
?>
--EXPECT--

...Starting 'pdo_fetch_complex_transactions.phpt' test...
...Starting 'pdo_fetch_complex_transactions' test...
Number of rows fetched: 10
Committed deleting 3 rows
Number of rows fetched: 7
@ -156,4 +156,4 @@ Deletion aborted
Number of rows fetched: 4
Done
...Test 'pdo_fetch_complex_transactions.phpt' completed successfully.
...Test 'pdo_fetch_complex_transactions' completed successfully.

View file

@ -0,0 +1,219 @@
--TEST--
Test with cursor scroll and select different rows in some random order
--FILE--
<?php
include 'pdo_tools.inc';
function Cursor_ForwardOnly($conn, $tableName)
{
$stmt = $conn->exec("CREATE TABLE $tableName ([c1_int] int, [c2_tinyint] tinyint, [c3_smallint] smallint, [c4_bigint] bigint, [c5_bit] bit)");
// insert data
$numRows = InsertData($conn, $tableName);
// select table
$stmt = $conn->prepare("SELECT * FROM $tableName ORDER BY c1_int", array(constant('PDO::ATTR_CURSOR') => PDO::CURSOR_FWDONLY));
$stmt->execute();
$numRowsFetched = 0;
while ($row = $stmt->fetch(PDO::FETCH_NUM))
{
echo "$row[0]\n";
$numRowsFetched++;
}
if ($numRowsFetched != $numRows)
echo "Number of rows fetched $numRowsFetched is wrong! Expected $numRows\n";
}
function Cursor_Scroll_FetchRows($conn, $tableName)
{
$stmt = $conn->prepare("SELECT * FROM $tableName ORDER BY c1_int", array(constant('PDO::ATTR_CURSOR') => PDO::CURSOR_SCROLL));
$stmt->execute();
GetFirstRow($stmt);
GetNextRow($stmt);
GetLastRow($stmt);
GetPriorRow($stmt);
GetAbsoluteRow($stmt, 7);
GetAbsoluteRow($stmt, 2);
GetRelativeRow($stmt, 3);
GetPriorRow($stmt);
GetRelativeRow($stmt, -4);
GetAbsoluteRow($stmt, 0);
GetNextRow($stmt);
GetRelativeRow($stmt, 5);
GetAbsoluteRow($stmt, -1);
GetNextRow($stmt);
GetLastRow($stmt);
GetRelativeRow($stmt, 1);
}
function InsertData($conn, $tableName)
{
$numRows = 0;
$count = $conn->exec("INSERT INTO $tableName (c1_int, c2_tinyint, c3_smallint, c4_bigint, c5_bit) VALUES ((1), (0), (null), (9223372036854775807), (0))");
$numRows += $count;
$count = $conn->exec("INSERT INTO $tableName (c1_int, c2_tinyint, c3_smallint, c4_bigint, c5_bit) VALUES ((2), (null), (-32768), (9223372036854775807), (0))");
$numRows += $count;
$count = $conn->exec("INSERT INTO $tableName (c1_int, c2_tinyint, c3_smallint, c4_bigint, c5_bit) VALUES ((3), (255), (-32768), (1035941737), (0))");
$numRows += $count;
$count = $conn->exec("INSERT INTO $tableName (c1_int, c2_tinyint, c3_smallint, c4_bigint, c5_bit) VALUES ((4), (null), (4762), (804325764), (0))");
$numRows += $count;
$count = $conn->exec("INSERT INTO $tableName (c1_int, c2_tinyint, c3_smallint, c4_bigint, c5_bit) VALUES ((5), (57), (32767), (-9223372036854775808), (0))");
$numRows += $count;
$count = $conn->exec("INSERT INTO $tableName (c1_int, c2_tinyint, c3_smallint, c4_bigint, c5_bit) VALUES ((6), (201), (-32768), (450619355), (0))");
$numRows += $count;
$count = $conn->exec("INSERT INTO $tableName (c1_int, c2_tinyint, c3_smallint, c4_bigint, c5_bit) VALUES ((7), (244), (-21244), (981345728), (0))");
$numRows += $count;
$count = $conn->exec("INSERT INTO $tableName (c1_int, c2_tinyint, c3_smallint, c4_bigint, c5_bit) VALUES ((8), (143), (0), (-1330405117), (0))");
$numRows += $count;
$count = $conn->exec("INSERT INTO $tableName (c1_int, c2_tinyint, c3_smallint, c4_bigint, c5_bit) VALUES ((9), (null), (null), (209123628), (0))");
$numRows += $count;
$count = $conn->exec("INSERT INTO $tableName (c1_int, c2_tinyint, c3_smallint, c4_bigint, c5_bit) VALUES ((10), (147), (21133), (-1), (0))");
$numRows += $count;
return $numRows;
}
function GetFirstRow($stmt)
{
echo "\nfirst row: ";
$row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_FIRST, 0);
if ($row)
{
echo "$row[0]\n";
}
}
function GetNextRow($stmt)
{
echo "\nnext row: ";
$row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT, 0);
if ($row)
{
echo "$row[0]\n";
}
}
function GetPriorRow($stmt)
{
echo "\nprior row: ";
$row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_PRIOR, 0);
if ($row)
{
echo "$row[0]\n";
}
}
function GetLastRow($stmt)
{
echo "\nlast row: ";
$row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_LAST, 0);
if ($row)
{
echo "$row[0]\n";
}
}
function GetRelativeRow($stmt, $offset)
{
echo "\nrow $offset from the current row: ";
$row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_REL, $offset);
if ($row)
{
echo "$row[0]\n";
}
}
function GetAbsoluteRow($stmt, $offset)
{
echo "\nabsolute row with offset $offset: ";
$row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_ABS, $offset);
if ($row)
{
echo "$row[0]\n";
}
}
//--------------------------------------------------------------------
// RunTest
//
//--------------------------------------------------------------------
function RunTest()
{
StartTest("pdo_fetch_cursor_scroll_random");
try
{
require_once("autonomous_setup.php");
$database = "tempdb";
// Connect
$conn = new PDO( "sqlsrv:server=$serverName;Database=$database", $username, $password);
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$tableName = GetTempTableName();
Cursor_ForwardOnly($conn, $tableName);
Cursor_Scroll_FetchRows($conn, $tableName);
$conn = null;
}
catch (Exception $e)
{
echo $e->getMessage();
}
echo "\nDone\n";
EndTest("pdo_fetch_cursor_scroll_random");
}
RunTest();
?>
--EXPECT--

...Starting 'pdo_fetch_cursor_scroll_random' test...
1
2
3
4
5
6
7
8
9
10
first row: 1
next row: 2
last row: 10
prior row: 9
absolute row with offset 7: 8
absolute row with offset 2: 3
row 3 from the current row: 6
prior row: 5
row -4 from the current row: 1
absolute row with offset 0: 1
next row: 2
row 5 from the current row: 7
absolute row with offset -1:
next row: 1
last row: 10
row 1 from the current row:
Done
...Test 'pdo_fetch_cursor_scroll_random' completed successfully.

View file

@ -143,7 +143,6 @@ function RunTest()
$conn = sqlsrv_connect($serverName, $connectionInfo);
if( !$conn ) { FatalError("Could not connect.\n"); }
//echo "\nUsing SQLSRV_CURSOR_FORWARD: ";
FetchRow_Query($conn);
sqlsrv_close($conn);