Skip to content

Commit c8be679

Browse files
Add test case for bug #13354 in pgsql extension
1 parent 87cb0d0 commit c8be679

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

ext/pgsql/tests/bug13354.phpt

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
--TEST--
2+
Bug #13354 (null-by-reference handling in pg_execute, pg_send_query_params, pg_send_execute)
3+
--EXTENSIONS--
4+
pgsql
5+
--FILE--
6+
<?php
7+
include 'inc/config.inc';
8+
9+
$db = pg_connect($conn_str);
10+
$val = null;
11+
12+
$query = 'SELECT $1::text IS NULL;';
13+
$params_null = [null];
14+
$params_null_by_ref = [&$val];
15+
16+
pg_prepare($db, 'test', $query);
17+
18+
19+
// method 1, pg_execute
20+
$val = null;
21+
$res = pg_execute($db, 'test', $params_null);
22+
echo "pg_execute, null value: " . pg_fetch_result($res, 0, 0) . "\n";
23+
pg_free_result($res);
24+
25+
$res = pg_execute($db, 'test', $params_null_by_ref);
26+
echo "pg_execute, null value by reference: " . pg_fetch_result($res, 0, 0) . "\n";
27+
pg_free_result($res);
28+
29+
30+
// method 2, pg_query_params
31+
$res = pg_query_params($db, $query, $params_null);
32+
echo "pg_query_params, null value: " . pg_fetch_result($res, 0, 0) . "\n";
33+
pg_free_result($res);
34+
35+
$res = pg_query_params($db, $query, $params_null_by_ref);
36+
echo "pg_query_params, null value by reference: " . pg_fetch_result($res, 0, 0) . "\n";
37+
pg_free_result($res);
38+
39+
40+
// method 3, pg_send_query_params
41+
$res = pg_send_query_params($db, $query, $params_null);
42+
pg_consume_input($db);
43+
$res = pg_get_result($db);
44+
echo "pg_send_query_params, null value: " . pg_fetch_result($res, 0, 0) . "\n";
45+
pg_free_result($res);
46+
47+
$res = pg_send_query_params($db, $query, $params_null_by_ref);
48+
pg_consume_input($db);
49+
$res = pg_get_result($db);
50+
echo "pg_send_query_params, null value by reference: " . pg_fetch_result($res, 0, 0) . "\n";
51+
pg_free_result($res);
52+
53+
54+
// method 4, pg_send_prepare, pg_send_execute
55+
pg_send_execute($db, 'test', $params_null);
56+
pg_consume_input($db);
57+
$res = pg_get_result($db);
58+
echo "pg_send_execute, null value: " . pg_fetch_result($res, 0, 0) . "\n";
59+
pg_free_result($res);
60+
61+
pg_send_execute($db, 'test', $params_null_by_ref);
62+
pg_consume_input($db);
63+
$res = pg_get_result($db);
64+
echo "pg_send_execute, null value by reference: " . pg_fetch_result($res, 0, 0) . "\n";
65+
pg_free_result($res);
66+
67+
pg_close($db);
68+
69+
?>
70+
--EXPECT--
71+
pg_execute, null value: t
72+
pg_execute, null value by reference: t
73+
pg_query_params, null value: t
74+
pg_query_params, null value by reference: t
75+
pg_send_query_params, null value: t
76+
pg_send_query_params, null value by reference: t
77+
pg_send_execute, null value: t
78+
pg_send_execute, null value by reference: t

0 commit comments

Comments
 (0)