xref: /php-src/ext/mysqli/tests/bug_bits.phpt (revision a21edc52)
1--TEST--
2Bug (Incorrectly decoding bit values / Malformed server packet. Field length pointing)
3--EXTENSIONS--
4mysqli
5--SKIPIF--
6<?php
7require_once 'skipifconnectfailure.inc';
8?>
9--FILE--
10<?php
11
12require_once 'connect.inc';
13if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) {
14    printf("[001] Connect failed, [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
15}
16
17if (!$link->query("DROP TABLE IF EXISTS bug_bits")) {
18    printf("[002] [%d] %s\n", $link->errno, $link->error);
19}
20
21if (!$link->query("CREATE TABLE `bug_bits` (`inty` bigint(20) unsigned NOT NULL DEFAULT '0', `bitty` bit(64) NOT NULL DEFAULT b'0')")) {
22    printf("[003] [%d] %s\n", $link->errno, $link->error);
23}
24
25$insertQuery = "INSERT INTO `bug_bits` VALUES (18446744073709551615, 18446744073709551615)".
26               ",(18446744073709551614, 18446744073709551614)".
27               ",(4294967296, 4294967296)".
28               ",(4294967295, 4294967295)".
29               ",(2147483648, 2147483648)".
30               ",(2147483647, 2147483647)".
31               ",(1, 1)";
32if (!$link->query($insertQuery)) {
33    printf("[004] [%d] %s\n", $link->errno, $link->error);
34}
35
36if (!($res = $link->query("SELECT * FROM `bug_bits`"))) {
37    printf("[005] [%d] %s\n", $link->errno, $link->error);
38}
39
40while ($row = $res->fetch_assoc()) {
41    var_dump($row);
42}
43
44$link->close();
45
46echo "Done\n";
47?>
48--CLEAN--
49<?php
50require_once 'connect.inc';
51if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))
52    printf("[c001] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error());
53
54if (!mysqli_query($link, "DROP TABLE IF EXISTS bug_bits"))
55    printf("[c002] Cannot drop table, [%d] %s\n", mysqli_errno($link), mysqli_error($link));
56
57mysqli_close($link);
58?>
59--EXPECT--
60array(2) {
61  ["inty"]=>
62  string(20) "18446744073709551615"
63  ["bitty"]=>
64  string(20) "18446744073709551615"
65}
66array(2) {
67  ["inty"]=>
68  string(20) "18446744073709551614"
69  ["bitty"]=>
70  string(20) "18446744073709551614"
71}
72array(2) {
73  ["inty"]=>
74  string(10) "4294967296"
75  ["bitty"]=>
76  string(10) "4294967296"
77}
78array(2) {
79  ["inty"]=>
80  string(10) "4294967295"
81  ["bitty"]=>
82  string(10) "4294967295"
83}
84array(2) {
85  ["inty"]=>
86  string(10) "2147483648"
87  ["bitty"]=>
88  string(10) "2147483648"
89}
90array(2) {
91  ["inty"]=>
92  string(10) "2147483647"
93  ["bitty"]=>
94  string(10) "2147483647"
95}
96array(2) {
97  ["inty"]=>
98  string(1) "1"
99  ["bitty"]=>
100  string(1) "1"
101}
102Done
103