svn: /pecl/mysqlnd_ms/trunk/tests/ mysqlnd_ms_charsets_pdo_fail.phpt

From: Date: Wed, 30 Jan 2013 16:34:12 +0000
Subject: svn: /pecl/mysqlnd_ms/trunk/tests/ mysqlnd_ms_charsets_pdo_fail.phpt
Groups: php.pecl.cvs 
Request: Send a blank email to pecl-cvs+get-19366@lists.php.net to get a copy of this message
uw Wed, 30 Jan 2013 16:34:12 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=329374 Log: PDO and invalid charset bug 63886 Bug: https://bugs.php.net/63886 (Assigned) PHP crashes when quoting string with PDO and using mysqlnd_ms Changed paths: A pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_charsets_pdo_fail.phpt Added: pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_charsets_pdo_fail.phpt =================================================================== --- pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_charsets_pdo_fail.phpt (rev 0) +++ pecl/mysqlnd_ms/trunk/tests/mysqlnd_ms_charsets_pdo_fail.phpt 2013-01-30 16:34:12 UTC (rev 329374) @@ -0,0 +1,82 @@ +--TEST-- +Charsets, invalid using PDO +--SKIPIF-- +<?php +require_once('skipif.inc'); +require_once("connect.inc"); + +_skipif_check_extensions(array("mysqli")); +_skipif_connect($master_host_only, $user, $passwd, $db, $master_port, $master_socket); +_skipif_connect($slave_host_only, $user, $passwd, $db, $slave_port, $slave_socket); + +$settings = array( + "myapp" => array( + 'master' => array($master_host), + 'slave' => array($slave_host), + ), +); +if ($error = mst_create_config("test_mysqlnd_ms_charsets_pdo_fail.ini", $settings)) + die(sprintf("SKIP %s\n", $error)); + +function test_for_charset($host, $user, $passwd, $db, $port, $socket) { + if (!$link = mst_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) + die(sprintf("skip Cannot connect, [%d] %s", mysqli_connect_errno(), mysqli_connect_error())); + + if (!($res = mysqli_query($link, 'SELECT version() AS server_version')) || + !($tmp = mysqli_fetch_assoc($res))) { + mysqli_close($link); + die(sprintf("skip Cannot check server version, [%d] %s\n", + mysqli_errno($link), mysqli_error($link))); + } + mysqli_free_result($res); + $version = explode('.', $tmp['server_version']); + if (empty($version)) { + mysqli_close($link); + die(sprintf("skip Cannot check server version, based on '%s'", + $tmp['server_version'])); + } + + if ($version[0] <= 4 && $version[1] < 1) { + mysqli_close($link); + die(sprintf("skip Requires MySQL Server 4.1+\n")); + } + + if (($res = mysqli_query($link, 'SHOW CHARACTER SET LIKE "pleasenot"', MYSQLI_STORE_RESULT)) && (mysqli_num_rows($res) == 1)) { + die(sprintf("skip WOW, server has charset 'pleasenot'!\n")); + } + + if (!$res = mysqli_query($link, 'SELECT @@character_set_connection AS charset')) + die(sprintf("skip Cannot select current charset, [%d] %s\n", $link->errno, $link->error)); + + if (!$row = mysqli_fetch_assoc($res)) + die(sprintf("skip Cannot detect current charset, [%d] %s\n", $link->errno, $link->error)); + + return $row['charset']; +} + +test_for_charset($master_host_only, $user, $passwd, $db, $master_port, $master_socket); +test_for_charset($slave_host_only, $user, $passwd, $db, $slave_port, $slave_socket); +?> +--INI-- +mysqlnd_ms.enable=1 +mysqlnd_ms.config_file=test_mysqlnd_ms_charsets_pdo_fail.ini +--FILE-- +<?php + require_once("connect.inc"); + require_once("util.inc"); + + $pdo = new PDO("mysql:host=myapp;dbname=" . $db . ";charset=pleasenot", $user, $passwd); +var_dump($pdo->quote("a")); + print "done!"; + +?> +--CLEAN-- +<?php + if (!unlink("test_mysqlnd_ms_charsets_pdo_fail.ini")) + printf("[clean] Cannot unlink ini file 'test_mysqlnd_ms_charsets_pdo_fail.ini'.\n"); +?> +--XFAIL-- +Bug 63886 is the root cause, ms crash is a follow-up, waiting for mysqlnd fix +--EXPECTF-- +connect error +done! \ No newline at end of file

« previous php.pecl.cvs (#19366) next »