svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/ext/pdo_mysql/mysql_driver.c branches/PHP_5_3/ext/pdo_mysql/php_pdo_mysql_int.h
branches/PHP_5_3/ext/pdo_mysql/tests/mysql_pdo_test.inc branches/PHP_5_3/ext/pdo_mysql/tests/pdo_mysql_connect_charset.phpt trunk/NEWS trunk/UPGRADING
| From: | Kalle Sommer Nielsen | Date: | Mon, 17 Jan 2011 09:54:22 +0000 |
| Subject: | svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/ext/pdo_mysql/mysql_driver.c branches/PHP_5_3/ext/pdo_mysql/php_pdo_mysql_int.h branches/PHP_5_3/ext/pdo_mysql/tests/mysql_pdo_test.inc branches/PHP_5_3/ext/pdo_mysql/tests/pdo_mysql_connect_charset.phpt trunk/NEWS trunk/UPGRADING |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-64364@lists.php.net to get a copy of this message | ||
kalle Mon, 17 Jan 2011 09:54:22 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=307529
Log:
MFT: Implemented FR #47802 (Support for setting character sets in DSN strings)
Bug: http://bugs.php.net/47802 (Assigned) PDO_MYSQL
doesn't use the charset parameter
Changed paths:
U php/php-src/branches/PHP_5_3/NEWS
U php/php-src/branches/PHP_5_3/ext/pdo_mysql/mysql_driver.c
U php/php-src/branches/PHP_5_3/ext/pdo_mysql/php_pdo_mysql_int.h
U php/php-src/branches/PHP_5_3/ext/pdo_mysql/tests/mysql_pdo_test.inc
A php/php-src/branches/PHP_5_3/ext/pdo_mysql/tests/pdo_mysql_connect_charset.phpt
U php/php-src/trunk/NEWS
U php/php-src/trunk/UPGRADING
Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS 2011-01-17 07:59:46 UTC (rev 307528)
+++ php/php-src/branches/PHP_5_3/NEWS 2011-01-17 09:54:22 UTC (rev 307529)
@@ -68,6 +68,8 @@
server mode. (Gustavo)
- PDO MySQL driver:
+ . Implemented FR #47802 (Support for setting character sets in DSN strings).
+ (Kalle)
. Fixed bug #53551 (PDOStatement execute segfaults for pdo_mysql driver).
(Johannes)
Modified: php/php-src/branches/PHP_5_3/ext/pdo_mysql/mysql_driver.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/pdo_mysql/mysql_driver.c 2011-01-17 07:59:46 UTC (rev 307528)
+++ php/php-src/branches/PHP_5_3/ext/pdo_mysql/mysql_driver.c 2011-01-17 09:54:22 UTC (rev 307529)
@@ -711,6 +711,13 @@
#endif
}
+#ifdef PDO_MYSQL_HAS_CHARSET
+ if (vars[0].optval && mysql_options(H->server, MYSQL_SET_CHARSET_NAME, vars[0].optval))
{
+ pdo_mysql_error(dbh);
+ goto cleanup;
+ }
+#endif
+
dbname = vars[1].optval;
host = vars[2].optval;
if(vars[3].optval) {
Modified: php/php-src/branches/PHP_5_3/ext/pdo_mysql/php_pdo_mysql_int.h
===================================================================
--- php/php-src/branches/PHP_5_3/ext/pdo_mysql/php_pdo_mysql_int.h 2011-01-17 07:59:46 UTC (rev
307528)
+++ php/php-src/branches/PHP_5_3/ext/pdo_mysql/php_pdo_mysql_int.h 2011-01-17 09:54:22 UTC (rev
307529)
@@ -33,6 +33,10 @@
# define PDO_MYSQL_PARAM_BIND MYSQL_BIND
#endif
+#if (MYSQL_VERSION_ID >= 40113 && MYSQL_VERSION_ID < 50000) || MYSQL_VERSION_ID >=
50007 || defined(MYSQL_USE_MYSQLND)
+# define PDO_MYSQL_HAS_CHARSET
+#endif
+
#if defined(PDO_USE_MYSQLND) && PHP_DEBUG && !defined(PHP_WIN32)
#define PDO_DBG_ENABLED 1
Modified: php/php-src/branches/PHP_5_3/ext/pdo_mysql/tests/mysql_pdo_test.inc
===================================================================
--- php/php-src/branches/PHP_5_3/ext/pdo_mysql/tests/mysql_pdo_test.inc 2011-01-17 07:59:46 UTC (rev
307528)
+++ php/php-src/branches/PHP_5_3/ext/pdo_mysql/tests/mysql_pdo_test.inc 2011-01-17 09:54:22 UTC (rev
307529)
@@ -4,9 +4,9 @@
class MySQLPDOTest extends PDOTest {
- static function factory($classname = 'PDO', $drop_test_tables = false, $myattr = null) {
+ static function factory($classname = 'PDO', $drop_test_tables = false, $myattr = null,
$mydsn = null) {
- $dsn = self::getDSN();
+ $dsn = self::getDSN($mydsn);
$user = PDO_MYSQL_TEST_USER;
$pass = PDO_MYSQL_TEST_PASS;
$attr = getenv('PDOTEST_ATTR');
Added: php/php-src/branches/PHP_5_3/ext/pdo_mysql/tests/pdo_mysql_connect_charset.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/ext/pdo_mysql/tests/pdo_mysql_connect_charset.phpt
(rev 0)
+++ php/php-src/branches/PHP_5_3/ext/pdo_mysql/tests/pdo_mysql_connect_charset.phpt 2011-01-17
09:54:22 UTC (rev 307529)
@@ -0,0 +1,34 @@
+--TEST--
+PDO_MYSQL: Defining a connection charset in the DSN
+--SKIPIF--
+<?php
+require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc');
+require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+MySQLPDOTest::skip();
+?>
+--FILE--
+<?php
+ /* TODO: remove this test after fix and enable the BIT test in pdo_mysql_types.phpt again */
+ require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
+
+ /* Connect to mysql to determine the current charset so we can diffinate it */
+ $link = MySQLPDOTest::factory();
+ $charset = $link->query("SHOW VARIABLES LIKE
'character_set_connection'")->fetchObject()->value;
+
+ /* Make sure that we don't attempt to set the current character set to make this case useful
*/
+ $new_charset = ($charset == 'latin1' ? 'ascii' : 'latin1');
+
+ /* Done with the original connection, create a second link to test the character set being defined
*/
+ unset($link);
+
+ $link = MySQLPDOTest::factory('PDO', false, null, Array('charset' =>
$new_charset));
+ $conn_charset = $link->query("SHOW VARIABLES LIKE
'character_set_connection'")->fetchObject()->value;
+
+ if ($charset !== $conn_charset) {
+ echo "done!\n";
+ } else {
+ echo "failed!\n";
+ }
+?>
+--EXPECTF--
+done!
\ No newline at end of file
Modified: php/php-src/trunk/NEWS
===================================================================
--- php/php-src/trunk/NEWS 2011-01-17 07:59:46 UTC (rev 307528)
+++ php/php-src/trunk/NEWS 2011-01-17 09:54:22 UTC (rev 307529)
@@ -164,8 +164,6 @@
Traversable. (Andrey, Johannes)
. MySQLi: Implemented FR #39847 (mysqli_fetch_[field|fields|field_direct]
need to return db). (Kalle)
- . PDO_mysql: Implemented FR #47802 (Support for setting character sets in
- DSN strings). (Kalle)
. PDO_mysql: Removed support for linking with MySQL client libraries older
than 4.1. (Johannes)
Modified: php/php-src/trunk/UPGRADING
===================================================================
--- php/php-src/trunk/UPGRADING 2011-01-17 07:59:46 UTC (rev 307528)
+++ php/php-src/trunk/UPGRADING 2011-01-17 09:54:22 UTC (rev 307529)
@@ -161,8 +161,6 @@
strings. This breaks code that iterated the resulting stream array using a
numeric index, but makes easier to identify which of the passed streams are
present in the result.
-- pdo_mysql now supports setting character sets when connecting in the DSN
- string.
- mysqli_fetch_[field|fields|field_direct] now returns an additional property
named 'db' that contains the database name of the associated result.