[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/ext/mysqli/tests/bug52891.phpt trunk/ext/mysqli/tests/bug52891.phpt
andrey Wed, 22 Sep 2010 11:09:29 + Revision: http://svn.php.net/viewvc?view=revision&revision=303669 Log: update tests Changed paths: U php/php-src/branches/PHP_5_3/ext/mysqli/tests/bug52891.phpt U php/php-src/trunk/ext/mysqli/tests/bug52891.phpt Modified: php/php-src/branches/PHP_5_3/ext/mysqli/tests/bug52891.phpt === --- php/php-src/branches/PHP_5_3/ext/mysqli/tests/bug52891.phpt 2010-09-22 09:38:05 UTC (rev 303668) +++ php/php-src/branches/PHP_5_3/ext/mysqli/tests/bug52891.phpt 2010-09-22 11:09:29 UTC (rev 303669) @@ -4,6 +4,9 @@ --FILE-- --FILE-- -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/ext/mysqli/tests/bug52891.phpt trunk/ext/mysqli/tests/bug52891.phpt
uw Mon, 20 Sep 2010 18:26:11 + Revision: http://svn.php.net/viewvc?view=revision&revision=303629 Log: Align test to the style used in the other tests Changed paths: U php/php-src/branches/PHP_5_3/ext/mysqli/tests/bug52891.phpt U php/php-src/trunk/ext/mysqli/tests/bug52891.phpt Modified: php/php-src/branches/PHP_5_3/ext/mysqli/tests/bug52891.phpt === --- php/php-src/branches/PHP_5_3/ext/mysqli/tests/bug52891.phpt 2010-09-20 17:26:39 UTC (rev 303628) +++ php/php-src/branches/PHP_5_3/ext/mysqli/tests/bug52891.phpt 2010-09-20 18:26:11 UTC (rev 303629) @@ -8,51 +8,78 @@ --FILE-- query("DROP TABLE IF EXISTS tuint")); - var_dump($link->query("DROP TABLE IF EXISTS tsint")); - var_dump($link->query("CREATE TABLE tuint(a bigint unsigned) ENGINE=".$engine)); - var_dump($link->query("CREATE TABLE tsint(a bigint) ENGINE=".$engine)); - - $stmt = $link->prepare("INSERT INTO tuint VALUES(?)"); - $stmt2 = $link->prepare("INSERT INTO tsint VALUES(?)"); + + if (!$link->query("DROP TABLE IF EXISTS tuint") || + !$link->query("DROP TABLE IF EXISTS tsint")) { + printf("[002] [%d] %s\n", $link->errno, $link->error); + } + + if (!$link->query("CREATE TABLE tuint(a BIGINT UNSIGNED) ENGINE=" . $engine) || + !$link->query("CREATE TABLE tsint(a BIGINT) ENGINE=" . $engine)) { + printf("[003] [%d] %s\n", $link->errno, $link->error); + } + + + if (!$stmt1 = $link->prepare("INSERT INTO tuint VALUES(?)")) + printf("[004] [%d] %s\n", $link->errno, $link->error); + + if (!$stmt2 = $link->prepare("INSERT INTO tsint VALUES(?)")) + printf("[005] [%d] %s\n", $link->errno, $link->error); + $param = 42; - $stmt->bind_param("i", $param); - $stmt2->bind_param("i", $param); + if (!$stmt1->bind_param("i", $param)) + printf("[006] [%d] %s\n", $stmt1->errno, $stmt1->error); + + if (!$stmt2->bind_param("i", $param)) + printf("[007] [%d] %s\n", $stmt2->errno, $stmt2->error); + /* first insert normal value to force initial send of types */ - var_dump($stmt->execute()); - var_dump($stmt2->execute()); + if (!$stmt1->execute()) + printf("[008] [%d] %s\n", $stmt1->errno, $stmt1->error); + if (!$stmt2->execute()) + printf("[009] [%d] %s\n", $stmt2->errno, $stmt2->error); + /* now try values that don't fit in long, on 32bit, new types should be sent or 0 will be inserted */ $param = -4294967297; - var_dump($stmt2->execute()); + if (!$stmt2->execute()) + printf("[010] [%d] %s\n", $stmt2->errno, $stmt2->error); /* again normal value */ $param = 43; - var_dump($stmt->execute()); - var_dump($stmt2->execute()); + if (!$stmt1->execute()) + printf("[011] [%d] %s\n", $stmt1->errno, $stmt1->error); + + if (!$stmt2->execute()) + printf("[012] [%d] %s\n", $stmt2->errno, $stmt2->error); + /* again conversion */ $param = -4294967295; - var_dump($stmt2->execute()); + if (!$stmt2->execute()) + printf("[013] [%d] %s\n", $stmt2->errno, $stmt2->error); $param = 4294967295; - var_dump($stmt->execute()); - var_dump($stmt2->execute()); + if (!$stmt1->execute()) + printf("[014] [%d] %s\n", $stmt1->errno, $stmt1->error); + if (!$stmt2->execute()) + printf("[015] [%d] %s\n", $stmt2->errno, $stmt2->error); + $param = 4294967297; - var_dump($stmt->execute()); - var_dump($stmt2->execute()); + if (!$stmt1->execute()) + printf("[016] [%d] %s\n", $stmt1->errno, $stmt1->error); - $result = $link->query("SELECT * FROM tsint ORDER BY a"); - $result2 = $link->query("SELECT * FROM tuint ORDER BY a"); + if (!$stmt2->execute()) + printf("[017] [%d] %s\n", $stmt2->errno, $stmt2->error); - var_dump($link->query("DROP TABLE tsint")); - var_dump($link->query("DROP TABLE tuint")); + $result = $link->query("SELECT * FROM tsint ORDER BY a ASC"); + $result2 = $link->query("SELECT * FROM tuint ORDER BY a ASC"); echo "tsint:\n"; while ($row = $result->fetch_assoc()) { @@ -62,26 +89,29 @@ while ($row = $result2->fetch_assoc()) { var_dump($row); } - + echo "done"; ?> +--CLEAN-- + --EXPECTF-- -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) -bool(true) tsint: array(1) { ["a"]=> @@ -124,4 +154,4 @@ ["a"]=> string(10) "4294967297" } -done +done \ No newline at end of file Modified: php/php-src/trunk/ext/mysqli/tests/bug52891.phpt === --- php/php-src/trunk/ext/mysqli/tests/bug52891.phpt 2010-09-20 17:26:39 UTC (rev 303628) +++ php/php-src/trunk/ext/mysqli/tests/bug52891.phpt 2010-09-20 18:26:11 UTC (rev 303629) @@ -8,51 +8,78 @@ --FILE-- query("DROP TABLE IF EXISTS tuint")); - var_dump($link->query("DROP TABLE IF EXISTS tsint")); - var_dump($link->query("CREATE TABLE tuint(a bigint unsigned) ENGINE=".$engine)); - var_dump($link->query("CREATE TABLE tsint(a bigint) ENGINE=".$engine)); - - $stmt = $link->prepare("INSERT INTO tu
[PHP-CVS] svn: /php/php-src/ branches/PHP_5_3/ext/mysqli/tests/bug52891.phpt trunk/ext/mysqli/tests/bug52891.phpt
andrey Mon, 20 Sep 2010 09:02:31 + Revision: http://svn.php.net/viewvc?view=revision&revision=303599 Log: add test case for 52891 Changed paths: A php/php-src/branches/PHP_5_3/ext/mysqli/tests/bug52891.phpt A php/php-src/trunk/ext/mysqli/tests/bug52891.phpt Added: php/php-src/branches/PHP_5_3/ext/mysqli/tests/bug52891.phpt === --- php/php-src/branches/PHP_5_3/ext/mysqli/tests/bug52891.phpt (rev 0) +++ php/php-src/branches/PHP_5_3/ext/mysqli/tests/bug52891.phpt 2010-09-20 09:02:31 UTC (rev 303599) @@ -0,0 +1,127 @@ +--TEST-- +Bug #52891 (Wrong data inserted with mysqli/mysqlnd when using bind_param,value > LONG_MAX) +--SKIPIF-- + +--FILE-- +query("DROP TABLE IF EXISTS tuint")); + var_dump($link->query("DROP TABLE IF EXISTS tsint")); + var_dump($link->query("CREATE TABLE tuint(a bigint unsigned) ENGINE=".$engine)); + var_dump($link->query("CREATE TABLE tsint(a bigint) ENGINE=".$engine)); + + $stmt = $link->prepare("INSERT INTO tuint VALUES(?)"); + $stmt2 = $link->prepare("INSERT INTO tsint VALUES(?)"); + $param = 42; + $stmt->bind_param("i", $param); + $stmt2->bind_param("i", $param); + + /* first insert normal value to force initial send of types */ + var_dump($stmt->execute()); + var_dump($stmt2->execute()); + + /* now try values that don't fit in long, on 32bit, new types should be sent or 0 will be inserted */ + $param = -4294967297; + var_dump($stmt2->execute()); + + /* again normal value */ + $param = 43; + var_dump($stmt->execute()); + var_dump($stmt2->execute()); + + /* again conversion */ + $param = -4294967295; + var_dump($stmt2->execute()); + + $param = 4294967295; + var_dump($stmt->execute()); + var_dump($stmt2->execute()); + + $param = 4294967297; + var_dump($stmt->execute()); + var_dump($stmt2->execute()); + + $result = $link->query("SELECT * FROM tsint ORDER BY a"); + $result2 = $link->query("SELECT * FROM tuint ORDER BY a"); + + var_dump($link->query("DROP TABLE tsint")); + var_dump($link->query("DROP TABLE tuint")); + + echo "tsint:\n"; + while ($row = $result->fetch_assoc()) { + var_dump($row); + } + echo "tuint:\n"; + while ($row = $result2->fetch_assoc()) { + var_dump($row); + } + + echo "done"; +?> +--EXPECTF-- +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +tsint: +array(1) { + ["a"]=> + string(11) "-4294967297" +} +array(1) { + ["a"]=> + string(11) "-4294967295" +} +array(1) { + ["a"]=> + string(2) "42" +} +array(1) { + ["a"]=> + string(2) "43" +} +array(1) { + ["a"]=> + string(10) "4294967295" +} +array(1) { + ["a"]=> + string(10) "4294967297" +} +tuint: +array(1) { + ["a"]=> + string(2) "42" +} +array(1) { + ["a"]=> + string(2) "43" +} +array(1) { + ["a"]=> + string(10) "4294967295" +} +array(1) { + ["a"]=> + string(10) "4294967297" +} +done Added: php/php-src/trunk/ext/mysqli/tests/bug52891.phpt === --- php/php-src/trunk/ext/mysqli/tests/bug52891.phpt (rev 0) +++ php/php-src/trunk/ext/mysqli/tests/bug52891.phpt2010-09-20 09:02:31 UTC (rev 303599) @@ -0,0 +1,127 @@ +--TEST-- +Bug #52891 (Wrong data inserted with mysqli/mysqlnd when using bind_param,value > LONG_MAX) +--SKIPIF-- + +--FILE-- +query("DROP TABLE IF EXISTS tuint")); + var_dump($link->query("DROP TABLE IF EXISTS tsint")); + var_dump($link->query("CREATE TABLE tuint(a bigint unsigned) ENGINE=".$engine)); + var_dump($link->query("CREATE TABLE tsint(a bigint) ENGINE=".$engine)); + + $stmt = $link->prepare("INSERT INTO tuint VALUES(?)"); + $stmt2 = $link->prepare("INSERT INTO tsint VALUES(?)"); + $param = 42; + $stmt->bind_param("i", $param); + $stmt2->bind_param("i", $param); + + /* first insert normal value to force initial send of types */ + var_dump($stmt->execute()); + var_dump($stmt2->execute()); + + /* now try values that don't fit in long, on 32bit, new types should be sent or 0 will be inserted */ + $param = -4294967297; + var_dump($stmt2->execute()); + + /* again normal value */ + $param = 43; + var_dump($stmt->execute()); + var_dump($stmt2->execute()); + + /* again conversion */ + $param = -4294967295; + var_dump($stmt2->execute()); + + $param = 4294967295; + var_dump($stmt->execute()); + var_dump($stmt2->execute()); + + $param = 4294967297; + var_dump($stmt->execute()); + var_dump($stmt2->execute());