xref: /php-src/ext/pdo_pgsql/tests/bug43925.phpt (revision f4a5db3e)
1--TEST--
2Bug #43925 (Incorrect argument counter in prepared statements with pgsql)
3--EXTENSIONS--
4pdo
5pdo_pgsql
6--SKIPIF--
7<?php
8require __DIR__ . '/config.inc';
9require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc';
10PDOTest::skip();
11?>
12--FILE--
13<?php
14require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc';
15$dbh = PDOTest::test_factory(__DIR__ . '/common.phpt');
16
17$dbh->query('
18CREATE TABLE test43925
19(
20   id   integer NOT NULL PRIMARY KEY
21 , root integer NOT NULL
22 , lft  integer NOT NULL
23 , rgt  integer NOT NULL
24);');
25
26$dbh->query('INSERT INTO test43925 (id, root, lft, rgt) VALUES (1, 1, 1, 6), (2, 1, 2, 3), (3, 1, 4, 5);');
27
28
29$stmt = $dbh->prepare('
30    SELECT *
31    FROM test43925
32    WHERE (:rootId > 0 OR lft > :left OR rgt > :left)
33        AND (root = :rootId OR root  = :left)
34        AND (1 > :left OR 1 < :left OR 1 = :left)
35        AND (:x > 0 OR :x < 10 OR :x > 100)
36        OR :y = 1 OR :left = 1
37');
38
39$stmt->bindValue('left',   1, PDO::PARAM_INT);
40$stmt->bindValue('rootId', 3, PDO::PARAM_INT);
41$stmt->bindValue('x', 5, PDO::PARAM_INT);
42$stmt->bindValue('y', 50, PDO::PARAM_INT);
43
44$stmt->execute();
45
46foreach ($stmt->fetchAll() as $row) {
47    print implode(' - ', $row);
48    print "\n";
49}
50?>
51--CLEAN--
52<?php
53require __DIR__ . '/../../../ext/pdo/tests/pdo_test.inc';
54$db = PDOTest::test_factory(__DIR__ . '/common.phpt');
55$db->exec("DROP TABLE IF EXISTS test43925");
56?>
57--EXPECT--
581 - 1 - 1 - 1 - 1 - 1 - 6 - 6
592 - 2 - 1 - 1 - 2 - 2 - 3 - 3
603 - 3 - 1 - 1 - 4 - 4 - 5 - 5
61