adapt some tests for non-superuser environments
[m6w6/ext-pq] / tests / trans001.phpt
1 --TEST--
2 transaction
3 --SKIPIF--
4 <?php include "_skipif.inc"; ?>
5 --FILE--
6 <?php
7 echo "Test\n";
8
9 include "_setup.inc";
10
11 $c = new pq\Connection(PQ_DSN);
12 $c->exec("DROP TABLE IF EXISTS test CASCADE");
13 $c->exec("SET client_min_messages TO NOTICE");
14 try {
15 $c->exec("SET lc_messages TO 'C'");
16 } catch (pq\Exception $e) {
17 // do not die if we are not superuser
18 }
19 $c->on(pq\Connection::EVENT_NOTICE, function($c, $notice) {
20 echo "Got notice: $notice\n";
21 });
22 var_dump($c->transactionStatus == pq\Connection::TRANS_IDLE);
23 $t = new pq\Transaction($c);
24 var_dump($t->connection->transactionStatus == pq\Connection::TRANS_INTRANS);
25 $c->exec("DROP TABLE IF EXISTS test");
26 $c->off(pq\Connection::EVENT_NOTICE);
27 $c->exec("CREATE TABLE test (id serial, data text)");
28 $s = $c->prepare("test_insert", "INSERT INTO test (data) VALUES (\$1)", array((new pq\Types($c))["text"]->oid));
29 $s->exec(array("a"));
30 $s->exec(array("b"));
31 $s->exec(array("c"));
32 $r = $c->exec("SELECT * FROM test");
33 while ($row = $r->fetchRow(pq\Result::FETCH_OBJECT)) {
34 printf("%d => %s\n", $row->id, $row->data);
35 }
36 $t->rollback();
37 var_dump($c->transactionStatus == pq\Connection::TRANS_IDLE);
38 ?>
39 DONE
40 --EXPECT--
41 Test
42 bool(true)
43 bool(true)
44 Got notice: NOTICE: table "test" does not exist, skipping
45 1 => a
46 2 => b
47 3 => c
48 bool(true)
49 DONE