Annotation of embedaddon/php/ext/pdo_pgsql/tests/bug48764.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Bug #48764 (PDO_pgsql::query always uses implicit prepared statements if v3 proto available)
3: --SKIPIF--
4: <?php
5: if (!extension_loaded('pdo') || !extension_loaded('pdo_pgsql')) die('skip not loaded');
6: require dirname(__FILE__) . '/config.inc';
7: require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
8: PDOTest::skip();
9:
10: $db = PDOTest::factory();
11:
12: $client_version = $db->getAttribute(PDO::ATTR_CLIENT_VERSION);
13: $server_version = $db->getAttribute(PDO::ATTR_SERVER_VERSION);
14:
15: if (version_compare($server_version, '7.4', '<') || version_compare($client_version, '7.4', '<')) {
16: die('skip');
17: }
18:
19: ?>
20: --FILE--
21: <?php
22: require dirname(__FILE__) . '/../../../ext/pdo/tests/pdo_test.inc';
23: $db = PDOTest::test_factory(dirname(__FILE__) . '/common.phpt');
24: $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
25:
26: echo "Test 1\n";
27: bug($db);
28:
29: echo "Test 2\n";
30: bug($db, array(PDO::ATTR_EMULATE_PREPARES => 0));
31: bug($db, array(PDO::ATTR_EMULATE_PREPARES => 1));
32:
33: echo "Test 3\n";
34: bug($db, array(PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT => 0));
35: bug($db, array(PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT => 1));
36:
37: echo "Test 4\n";
38: $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
39: bug($db);
40: $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
41: bug($db);
42:
43: echo "Test 5\n";
44: $db->setAttribute(PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT, 1);
45: bug($db);
46: $db->setAttribute(PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT, 0);
47: bug($db);
48:
49:
50: putenv('PDOTEST_ATTR='.serialize(array(
51: PDO::ATTR_EMULATE_PREPARES => 1,
52: )));
53: $db = PDOTest::factory('PDO', false);
54: $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
55:
56: echo "Test 6\n";
57: bug($db);
58: bug($db, array(PDO::ATTR_EMULATE_PREPARES => 0));
59: bug($db, array(PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT => 0));
60:
61:
62: putenv('PDOTEST_ATTR='.serialize(array(
63: PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT => 1,
64: )));
65:
66: $db = PDOTest::factory('PDO', false);
67: $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
68:
69: echo "Test 7\n";
70: bug($db);
71: bug($db, array(PDO::ATTR_EMULATE_PREPARES => 0));
72: bug($db, array(PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT => 0));
73:
74:
75: putenv('PDOTEST_ATTR='.serialize(array(
76: PDO::ATTR_EMULATE_PREPARES => 1,
77: PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT => 1,
78: )));
79:
80: $db = PDOTest::factory('PDO', false);
81: $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
82:
83: echo "Test 8\n";
84: bug($db);
85: bug($db, array(PDO::ATTR_EMULATE_PREPARES => 0));
86: bug($db, array(PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT => 0));
87: bug($db, array(
88: PDO::ATTR_EMULATE_PREPARES => 0,
89: PDO::PGSQL_ATTR_DISABLE_NATIVE_PREPARED_STATEMENT => 0,
90: ));
91:
92:
93: putenv('PDOTEST_ATTR');
94:
95:
96: function bug($db, $options = array()) {
97: try {
98: $stmt = $db->prepare("SELECT ?", $options);
99: $stmt->execute(array(1));
100: echo "OK\n";
101: } catch (PDOException $e) {
102: // Indetermined data type when using native prepared statements
103: echo $e->getCode()."\n";
104: }
105: }
106:
107: --EXPECT--
108: Test 1
109: 42P18
110: Test 2
111: 42P18
112: OK
113: Test 3
114: 42P18
115: OK
116: Test 4
117: OK
118: 42P18
119: Test 5
120: OK
121: 42P18
122: Test 6
123: OK
124: 42P18
125: OK
126: Test 7
127: OK
128: OK
129: 42P18
130: Test 8
131: OK
132: OK
133: OK
134: 42P18
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>