Skip to content

Commit 5ccbda8

Browse files
authored
Merge pull request #320 from yitam/addNewTests
Uploaded some more tests
2 parents 867ca5c + a10fe30 commit 5ccbda8

11 files changed

+1373
-0
lines changed
+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
--TEST--
2+
testing the quote method with different inputs and then test with a empty query
3+
--SKIPIF--
4+
5+
--FILE--
6+
<?php
7+
8+
include 'pdo_tools.inc';
9+
10+
function Quote()
11+
{
12+
require("autonomous_setup.php");
13+
14+
$conn = new PDO( "sqlsrv:server=$serverName", $username, $password);
15+
16+
$output1 = $conn->quote("1'2'3'4'5'6'7'8", PDO::PARAM_INT);
17+
var_dump($output1);
18+
19+
$output2 = $conn->quote("{ABCD}'{EFGH}", PDO::PARAM_STR);
20+
var_dump($output2);
21+
22+
$output3 = $conn->quote("<XmlTestData><Letters>The quick brown fox jumps over the lazy dog</Letters><Digits>0123456789</Digits></XmlTestData>");
23+
var_dump($output3);
24+
25+
$stmt = $conn->query("");
26+
if ($stmt != false)
27+
{
28+
echo("Empty query was expected to fail!\n");
29+
}
30+
31+
$stmt1 = $conn->prepare($output2);
32+
$result = $stmt1->execute();
33+
if ($result != false)
34+
{
35+
echo("This query was expected to fail!\n");
36+
}
37+
$stmt1 = null;
38+
39+
$stmt2 = $conn->query($output3);
40+
if ($stmt2 != false)
41+
{
42+
echo("This query was expected to fail!\n");
43+
}
44+
45+
$conn = null;
46+
}
47+
48+
function Repro()
49+
{
50+
StartTest("pdo_connection_quote");
51+
try
52+
{
53+
Quote();
54+
}
55+
catch (Exception $e)
56+
{
57+
echo $e->getMessage();
58+
}
59+
echo "\nDone\n";
60+
EndTest("pdo_connection_quote");
61+
}
62+
63+
Repro();
64+
65+
?>
66+
--EXPECT--
67+
68+
...Starting 'pdo_connection_quote' test...
69+
string(24) "'1''2''3''4''5''6''7''8'"
70+
string(16) "'{ABCD}''{EFGH}'"
71+
string(118) "'<XmlTestData><Letters>The quick brown fox jumps over the lazy dog</Letters><Digits>0123456789</Digits></XmlTestData>'"
72+
73+
Done
74+
...Test 'pdo_connection_quote' completed successfully.
+108
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
--TEST--
2+
fetch multiple result sets with MARS on and then off
3+
--SKIPIF--
4+
5+
--FILE--
6+
<?php
7+
8+
include 'pdo_tools.inc';
9+
10+
function NestedQuery_Mars($on)
11+
{
12+
require("autonomous_setup.php");
13+
14+
$database = "tempdb";
15+
$tableName = GetTempTableName();
16+
17+
$conn = new PDO( "sqlsrv:server=$serverName;Database=$database;MultipleActiveResultSets=$on", $username, $password);
18+
$conn->SetAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
19+
20+
$stmt = $conn->exec("CREATE TABLE $tableName ([c1_int] int, [c2_varchar] varchar(20))");
21+
22+
$query = "INSERT INTO $tableName ([c1_int], [c2_varchar]) VALUES (1, 'Dummy value 1')";
23+
$stmt = $conn->query($query);
24+
25+
$query = "INSERT INTO $tableName ([c1_int], [c2_varchar]) VALUES (2, 'Dummy value 2')";
26+
$stmt = $conn->query($query);
27+
28+
$query = "SELECT * FROM $tableName ORDER BY [c1_int]";
29+
$stmt = $conn->query($query);
30+
$numRows = 0;
31+
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
32+
$numRows++;
33+
34+
if ($numRows !== 2) echo "Number of rows is unexpected!\n";
35+
$stmt = null;
36+
37+
// more than one active results
38+
$stmt1 = $conn->query($query);
39+
$stmt2 = $conn->prepare($query);
40+
$stmt2->execute();
41+
42+
echo "\nNumber of columns in First set: " . $stmt2->columnCount() . "\n";
43+
while ($row = $stmt1->fetch(PDO::FETCH_ASSOC))
44+
{
45+
print_r($row);
46+
}
47+
48+
echo "\nNumber of columns in Second set: " . $stmt1->columnCount() . "\n\n";
49+
while ($row = $stmt2->fetch(PDO::FETCH_OBJ))
50+
{
51+
print_r($row);
52+
}
53+
54+
$stmt1 = null;
55+
$stmt2 = null;
56+
$conn = null;
57+
}
58+
59+
function Repro()
60+
{
61+
StartTest("pdo_nested_query_mars");
62+
try
63+
{
64+
NestedQuery_Mars(true);
65+
NestedQuery_Mars(false);
66+
}
67+
catch (Exception $e)
68+
{
69+
echo $e->getMessage();
70+
}
71+
echo "\nDone\n";
72+
EndTest("pdo_nested_query_mars");
73+
}
74+
75+
Repro();
76+
77+
?>
78+
--EXPECT--
79+
80+
...Starting 'pdo_nested_query_mars' test...
81+
82+
Number of columns in First set: 2
83+
Array
84+
(
85+
[c1_int] => 1
86+
[c2_varchar] => Dummy value 1
87+
)
88+
Array
89+
(
90+
[c1_int] => 2
91+
[c2_varchar] => Dummy value 2
92+
)
93+
94+
Number of columns in Second set: 2
95+
96+
stdClass Object
97+
(
98+
[c1_int] => 1
99+
[c2_varchar] => Dummy value 1
100+
)
101+
stdClass Object
102+
(
103+
[c1_int] => 2
104+
[c2_varchar] => Dummy value 2
105+
)
106+
SQLSTATE[IMSSP]: The connection cannot process this operation because there is a statement with pending results. To make the connection available for other queries, either fetch all results or cancel or free the statement. For more information, see the product documentation about the MultipleActiveResultSets connection option.
107+
Done
108+
...Test 'pdo_nested_query_mars' completed successfully.
+92
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
--TEST--
2+
test query time out at the connection level and statement level
3+
--SKIPIF--
4+
5+
--FILE--
6+
<?php
7+
8+
include 'pdo_tools.inc';
9+
10+
function QueryTimeout($connLevel)
11+
{
12+
require("autonomous_setup.php");
13+
14+
$database = "tempdb";
15+
$tableName = GetTempTableName();
16+
17+
$conn = new PDO( "sqlsrv:server=$serverName;Database=$database", $username, $password);
18+
19+
$stmt = $conn->exec("CREATE TABLE $tableName ([c1_int] int, [c2_varchar] varchar(25))");
20+
21+
$query = "INSERT INTO $tableName ([c1_int], [c2_varchar]) VALUES (1, 'QueryTimeout 1')";
22+
$stmt = $conn->query($query);
23+
24+
$query = "INSERT INTO $tableName ([c1_int], [c2_varchar]) VALUES (2, 'QueryTimeout 2')";
25+
$stmt = $conn->query($query);
26+
27+
$query = "SELECT * FROM $tableName";
28+
29+
if ($connLevel)
30+
{
31+
echo "Setting query timeout as an attribute in connection\n";
32+
$conn->setAttribute(constant('PDO::SQLSRV_ATTR_QUERY_TIMEOUT'), 1);
33+
$stmt = $conn->query("WAITFOR DELAY '00:00:03'; $query");
34+
35+
var_dump($conn->errorInfo());
36+
}
37+
else
38+
{
39+
echo "Setting query timeout in the statement\n";
40+
$stmt = $conn->prepare("WAITFOR DELAY '00:00:03'; $query", array(constant('PDO::SQLSRV_ATTR_QUERY_TIMEOUT') => 1));
41+
$stmt->execute();
42+
43+
var_dump($stmt->errorInfo());
44+
}
45+
46+
$stmt = null;
47+
$conn = null;
48+
}
49+
50+
function Repro()
51+
{
52+
StartTest("pdo_query_timeout");
53+
try
54+
{
55+
QueryTimeout(true);
56+
QueryTimeout(false);
57+
}
58+
catch (Exception $e)
59+
{
60+
echo $e->getMessage();
61+
}
62+
echo "\nDone\n";
63+
EndTest("pdo_query_timeout");
64+
}
65+
66+
Repro();
67+
68+
?>
69+
--EXPECT--
70+
71+
...Starting 'pdo_query_timeout' test...
72+
Setting query timeout as an attribute in connection
73+
array(3) {
74+
[0]=>
75+
string(5) "HYT00"
76+
[1]=>
77+
int(0)
78+
[2]=>
79+
string(63) "[Microsoft][ODBC Driver 13 for SQL Server]Query timeout expired"
80+
}
81+
Setting query timeout in the statement
82+
array(3) {
83+
[0]=>
84+
string(5) "HYT00"
85+
[1]=>
86+
int(0)
87+
[2]=>
88+
string(63) "[Microsoft][ODBC Driver 13 for SQL Server]Query timeout expired"
89+
}
90+
91+
Done
92+
...Test 'pdo_query_timeout' completed successfully.

0 commit comments

Comments
 (0)