1--TEST--
2PDO_DBLIB: driver supports a batch of queries containing SELECT, INSERT, UPDATE statements
3--SKIPIF--
4<?php
5if (!extension_loaded('pdo_dblib')) die('skip not loaded');
6require __DIR__ . '/config.inc';
7
8if (!driver_supports_batch_statements_without_select($db)) die('xfail test will fail with this version of FreeTDS');
9?>
10--FILE--
11<?php
12require __DIR__ . '/config.inc';
13
14$stmt = $db->query(
15"create table #php_pdo(id int);" .
16"insert into #php_pdo values(1), (2), (3);" .
17"select * from #php_pdo;" .
18"begin transaction;" .
19"update #php_pdo set id = 4;" .
20"rollback transaction;" .
21"select * from #php_pdo;" .
22"delete from #php_pdo;" .
23"drop table #php_pdo;"
24);
25
26// check results from the create table
27var_dump($stmt->rowCount());
28var_dump($stmt->nextRowset());
29
30// check results from the first insert
31var_dump($stmt->rowCount());
32var_dump($stmt->nextRowset());
33
34// check results from the select
35var_dump($stmt->rowCount());
36var_dump($stmt->nextRowset());
37
38// check results from begin transaction
39var_dump($stmt->rowCount());
40var_dump($stmt->nextRowset());
41
42// check results from the update
43var_dump($stmt->rowCount());
44var_dump($stmt->nextRowset());
45
46// check results from rollback
47var_dump($stmt->rowCount());
48var_dump($stmt->nextRowset());
49
50// check results from the select
51var_dump($stmt->fetchAll());
52var_dump($stmt->rowCount());
53var_dump($stmt->nextRowset());
54
55// check results from the delete
56var_dump($stmt->rowCount());
57var_dump($stmt->nextRowset());
58
59// check results from the drop
60var_dump($stmt->rowCount());
61var_dump($stmt->nextRowset());
62
63// check that there are no more results
64var_dump($stmt->rowCount());
65var_dump($stmt->nextRowset());
66
67?>
68--EXPECT--
69int(-1)
70bool(true)
71int(3)
72bool(true)
73int(-1)
74bool(true)
75int(-1)
76bool(true)
77int(3)
78bool(true)
79int(-1)
80bool(true)
81array(3) {
82  [0]=>
83  array(2) {
84    ["id"]=>
85    int(1)
86    [0]=>
87    int(1)
88  }
89  [1]=>
90  array(2) {
91    ["id"]=>
92    int(2)
93    [0]=>
94    int(2)
95  }
96  [2]=>
97  array(2) {
98    ["id"]=>
99    int(3)
100    [0]=>
101    int(3)
102  }
103}
104int(-1)
105bool(true)
106int(3)
107bool(true)
108int(-1)
109bool(false)
110int(-1)
111bool(false)
112