diff --git a/ext/mysqli/tests/bug_bits.phpt b/ext/mysqli/tests/bug_bits.phpt new file mode 100644 index 00000000000..d87505f8b6c --- /dev/null +++ b/ext/mysqli/tests/bug_bits.phpt @@ -0,0 +1,65 @@ +--TEST-- +Bug (Incorrectly decoding bit values / Malformed server packet. Field length pointing) +--SKIPIF-- + +--FILE-- +query("DROP TABLE IF EXISTS bug_bits")) { + printf("[002] [%d] %s\n", $link->errno, $link->error); +} + +if (!$link->query("CREATE TABLE `bug_bits` (`inty` bigint(20) unsigned NOT NULL DEFAULT '0', `bitty` bit(64) NOT NULL DEFAULT b'0')")) { + printf("[003] [%d] %s\n", $link->errno, $link->error); +} + +$insertQuery = "INSERT INTO `bug_bits` VALUES (18446744073709551615, 18446744073709551615), (18446744073709551614, 18446744073709551614)"; +if (!$link->query($insertQuery)) { + printf("[004] [%d] %s\n", $link->errno, $link->error); +} + +if (!($res = $link->query("SELECT * FROM `bug_bits`"))) { + printf("[005] [%d] %s\n", $link->errno, $link->error); +} + +while ($row = $res->fetch_assoc()) { + var_dump($row); +} + +$link->close(); + +echo "Done\n"; +?> +--CLEAN-- + +--EXPECT-- +array(2) { + ["inty"]=> + string(20) "18446744073709551615" + ["bitty"]=> + string(20) "18446744073709551615" +} +array(2) { + ["inty"]=> + string(20) "18446744073709551614" + ["bitty"]=> + string(20) "18446744073709551614" +} +Done