Skip to content

Commit 0e0368d

Browse files
committed
Add test for the free list comparator fix.
1 parent c66dde1 commit 0e0368d

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

ext/sqlite3/tests/gh21483.phpt

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
--TEST--
2+
GH-21483 (SQLite3 free list comparator uses correct pointer types)
3+
--EXTENSIONS--
4+
sqlite3
5+
--FILE--
6+
<?php
7+
8+
$db = new SQLite3(':memory:');
9+
$db->exec('CREATE TABLE test (id INTEGER PRIMARY KEY, val TEXT)');
10+
$db->exec("INSERT INTO test VALUES (1, 'a')");
11+
$db->exec("INSERT INTO test VALUES (2, 'b')");
12+
$db->exec("INSERT INTO test VALUES (3, 'c')");
13+
14+
$r1 = $db->query("SELECT * FROM test WHERE id = 1");
15+
$r2 = $db->query("SELECT * FROM test WHERE id = 2");
16+
$r3 = $db->query("SELECT * FROM test WHERE id = 3");
17+
18+
var_dump($r1->fetchArray(SQLITE3_ASSOC));
19+
var_dump($r2->fetchArray(SQLITE3_ASSOC));
20+
var_dump($r3->fetchArray(SQLITE3_ASSOC));
21+
22+
$r2->finalize();
23+
$r1->finalize();
24+
$r3->finalize();
25+
26+
$stmt = $db->prepare("SELECT * FROM test WHERE id = ?");
27+
$stmt->bindValue(1, 2, SQLITE3_INTEGER);
28+
$result = $stmt->execute();
29+
var_dump($result->fetchArray(SQLITE3_ASSOC));
30+
$result->finalize();
31+
$stmt->close();
32+
33+
$db->close();
34+
echo "Done\n";
35+
?>
36+
--EXPECT--
37+
array(2) {
38+
["id"]=>
39+
int(1)
40+
["val"]=>
41+
string(1) "a"
42+
}
43+
array(2) {
44+
["id"]=>
45+
int(2)
46+
["val"]=>
47+
string(1) "b"
48+
}
49+
array(2) {
50+
["id"]=>
51+
int(3)
52+
["val"]=>
53+
string(1) "c"
54+
}
55+
array(2) {
56+
["id"]=>
57+
int(2)
58+
["val"]=>
59+
string(1) "b"
60+
}
61+
Done

0 commit comments

Comments
 (0)