1--TEST--
2mysqli_autocommit()
3--SKIPIF--
4<?php
5    require_once('skipif.inc');
6    require_once('skipifemb.inc');
7    require_once('connect.inc');
8    require_once('skipifconnectfailure.inc');
9
10    if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
11        die(sprintf("skip Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
12            $host, $user, $db, $port, $socket));
13    }
14
15    if (!have_innodb($link))
16        die(sprintf("skip Needs InnoDB support, [%d] %s", $link->errno, $link->error));
17?>
18--FILE--
19<?php
20    require_once("connect.inc");
21
22    $tmp    = NULL;
23    $link   = NULL;
24
25    if (!is_null($tmp = @mysqli_autocommit()))
26        printf("[001] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
27
28    if (!is_null($tmp = @mysqli_autocommit($link)))
29        printf("[002] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
30
31    if (!is_null($tmp = @mysqli_autocommit($link, $link, $link)))
32        printf("[003] Expecting NULL, got %s/%s\n", gettype($tmp), $tmp);
33
34    if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
35        printf("[004] Cannot connect to the server using host=%s, user=%s, passwd=***, dbname=%s, port=%s, socket=%s\n",
36            $host, $user, $db, $port, $socket);
37    }
38
39    if (!is_bool($tmp = mysqli_autocommit($link, true)))
40        printf("[005] Expecting boolean/any, got %s/%s\n", gettype($tmp), $tmp);
41
42    if (!mysqli_query($link, 'SET AUTOCOMMIT = 0'))
43        printf("[006] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
44
45    if (!$res = mysqli_query($link, 'SELECT @@autocommit as auto_commit'))
46        printf("[007] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
47
48    $tmp = mysqli_fetch_assoc($res);
49    mysqli_free_result($res);
50    if ($tmp['auto_commit'])
51        printf("[008] Cannot turn off autocommit\n");
52
53    if (true !== ($tmp = mysqli_autocommit($link, true)))
54        printf("[009] Expecting true, got %s/%s\n", gettype($tmp), $tmp);
55
56    if (!$res = mysqli_query($link, 'SELECT @@autocommit as auto_commit'))
57        printf("[010] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
58    $tmp = mysqli_fetch_assoc($res);
59    mysqli_free_result($res);
60    if (!$tmp['auto_commit'])
61        printf("[011] Cannot turn on autocommit\n");
62
63    if (!mysqli_query($link, 'DROP TABLE IF EXISTS test'))
64        printf("[012] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
65
66    if (!mysqli_query($link, 'CREATE TABLE test(id INT) ENGINE = InnoDB')) {
67        printf("[013] Cannot create test table, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
68    }
69
70    if (!mysqli_query($link, 'INSERT INTO test(id) VALUES (1)'))
71        printf("[014] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
72
73    if (!mysqli_query($link, 'ROLLBACK'))
74        printf("[015] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
75
76    if (!$res = mysqli_query($link, 'SELECT COUNT(*) AS num FROM test'))
77        printf("[016] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
78
79    if ((!$tmp = mysqli_fetch_assoc($res)) || (1 != $tmp['num']))
80        printf("[17] Expecting 1 row in table test, found %d rows. [%d] %s\n",
81            $tmp['num'], mysqli_errno($link), mysqli_error($link));
82
83    mysqli_free_result($res);
84
85    if (!mysqli_query($link, 'DROP TABLE IF EXISTS test'))
86        printf("[018] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
87
88    if (!mysqli_query($link, 'SET AUTOCOMMIT = 1'))
89        printf("[019] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
90
91    if (!$res = mysqli_query($link, 'SELECT @@autocommit as auto_commit'))
92        printf("[020] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
93    $tmp = mysqli_fetch_assoc($res);
94    mysqli_free_result($res);
95    if (!$tmp['auto_commit'])
96        printf("[021] Cannot turn on autocommit\n");
97
98    if (true !== ($tmp = mysqli_autocommit($link, false)))
99        printf("[022] Expecting true, got %s/%s\n", gettype($tmp), $tmp);
100
101    if (!mysqli_query($link, 'CREATE TABLE test(id INT) ENGINE = InnoDB')) {
102        printf("[023] Cannot create test table, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
103    }
104
105    if (!mysqli_query($link, 'INSERT INTO test(id) VALUES (1)'))
106        printf("[024] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
107
108    if (!mysqli_query($link, 'ROLLBACK'))
109        printf("[025] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
110
111    if (!$res = mysqli_query($link, 'SELECT COUNT(*) AS num FROM test'))
112        printf("[026] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
113    $tmp = mysqli_fetch_assoc($res);
114    if (0 != $tmp['num'])
115        printf("[27] Expecting 0 rows in table test, found %d rows\n", $tmp['num']);
116    mysqli_free_result($res);
117
118    if (!mysqli_query($link, 'INSERT INTO test(id) VALUES (1)'))
119        printf("[028] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
120
121    if (!mysqli_query($link, 'COMMIT'))
122        printf("[029] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
123
124    if (!$res = mysqli_query($link, 'SELECT COUNT(*) AS num FROM test'))
125        printf("[030] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
126
127    if ((!$tmp = mysqli_fetch_assoc($res)) || (1 != $tmp['num']))
128        printf("[31] Expecting 1 row in table test, found %d rows. [%d] %s\n",
129            $tmp['num'], mysqli_errno($link), mysqli_error($link));
130    mysqli_free_result($res);
131
132    if (!mysqli_query($link, 'DROP TABLE IF EXISTS test'))
133        printf("[032] [%d] %s\n", mysqli_errno($link), mysqli_error($link));
134
135    mysqli_close($link);
136
137    if (false !== ($tmp = @mysqli_autocommit($link, false)))
138        printf("[033] Expecting false, got %s/%s\n", gettype($tmp), $tmp);
139
140    print "done!";
141?>
142--CLEAN--
143<?php
144    require_once("clean_table.inc");
145?>
146--EXPECT--
147done!
148