mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Fix for BUG#47671 - wrong character-set after upgrade from 5.1.34 to 5.1.39
mysql client displays wrong character-set of server. When a user changes the charset of a server, mysql client 'status' command displays wrong charset but the command "SHOW VARIABLES LIKE "%charset%" displayed correct charset results. The problem is only with the mysql client's 'status' command output. In mysql client, the method mysql_store_lazy_result() returns 0 for success and non-zero for failure. The method com_status() was using this method wrongly. Fixed all such instances according to return value of the method mysql_store_lazy_result(). client/mysql.cc: Fix for BUG#47671 - wrong character-set after upgrade from 5.1.34 to 5.1.39 Fix com_status() method to use mysql_store_lazy_result() properly. mysql-test/r/bug47671.result: Fix for BUG#47671 - wrong character-set after upgrade from 5.1.34 to 5.1.39 Testcase for BUG#47671 mysql-test/t/bug47671-master.opt: Fix for BUG#47671 - wrong character-set after upgrade from 5.1.34 to 5.1.39 Testcase for BUG#47671 mysql-test/t/bug47671.test: Fix for BUG#47671 - wrong character-set after upgrade from 5.1.34 to 5.1.39 Testcase for BUG#47671
This commit is contained in:
@ -4335,7 +4335,7 @@ com_status(String *buffer __attribute__((unused)),
|
|||||||
Don't remove "limit 1",
|
Don't remove "limit 1",
|
||||||
it is protection againts SQL_SELECT_LIMIT=0
|
it is protection againts SQL_SELECT_LIMIT=0
|
||||||
*/
|
*/
|
||||||
if (mysql_store_result_for_lazy(&result))
|
if (!mysql_store_result_for_lazy(&result))
|
||||||
{
|
{
|
||||||
MYSQL_ROW cur=mysql_fetch_row(result);
|
MYSQL_ROW cur=mysql_fetch_row(result);
|
||||||
if (cur)
|
if (cur)
|
||||||
@ -4379,7 +4379,7 @@ com_status(String *buffer __attribute__((unused)),
|
|||||||
if (mysql_errno(&mysql) == CR_SERVER_GONE_ERROR)
|
if (mysql_errno(&mysql) == CR_SERVER_GONE_ERROR)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (mysql_store_result_for_lazy(&result))
|
if (!mysql_store_result_for_lazy(&result))
|
||||||
{
|
{
|
||||||
MYSQL_ROW cur=mysql_fetch_row(result);
|
MYSQL_ROW cur=mysql_fetch_row(result);
|
||||||
if (cur)
|
if (cur)
|
||||||
|
13
mysql-test/r/bug47671.result
Normal file
13
mysql-test/r/bug47671.result
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#
|
||||||
|
# Bug#47671 - wrong character-set after upgrade from 5.1.34 to 5.1.39
|
||||||
|
#
|
||||||
|
# Extract only charset information from 'status' command output using regex
|
||||||
|
--------------
|
||||||
|
|
||||||
|
Server characterset: utf8
|
||||||
|
Db characterset: utf8
|
||||||
|
Client characterset: utf8
|
||||||
|
Conn. characterset: utf8
|
||||||
|
|
||||||
|
--------------
|
||||||
|
|
1
mysql-test/t/bug47671-master.opt
Normal file
1
mysql-test/t/bug47671-master.opt
Normal file
@ -0,0 +1 @@
|
|||||||
|
--default-character-set=utf8 --skip-character-set-client-handshake
|
6
mysql-test/t/bug47671.test
Normal file
6
mysql-test/t/bug47671.test
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
--echo #
|
||||||
|
--echo # Bug#47671 - wrong character-set after upgrade from 5.1.34 to 5.1.39
|
||||||
|
--echo #
|
||||||
|
--echo # Extract only charset information from 'status' command output using regex
|
||||||
|
--replace_regex /.*mysql.*// /Connection.*// /Current.*// /SSL.*// /Using.*// /Server version.*// /Protocol.*// /UNIX.*// /Uptime.*// /Threads.*//
|
||||||
|
--exec $MYSQL -u root test -e "status";
|
Reference in New Issue
Block a user