Commit d0b076b6 authored by unknown's avatar unknown

Bug#29323 mysql client only accetps ANSI encoded files

Fix: ignore BOM marker in the first line.


client/mysql.cc:
  Skip BOM marker in the very first line.
mysql-test/r/mysql.result:
  Adding test
mysql-test/t/mysql.test:
  Adding test
parent 11045636
...@@ -1042,6 +1042,17 @@ static int read_and_execute(bool interactive) ...@@ -1042,6 +1042,17 @@ static int read_and_execute(bool interactive)
if (!interactive) if (!interactive)
{ {
line=batch_readline(status.line_buff); line=batch_readline(status.line_buff);
/*
Skip UTF8 Byte Order Marker (BOM) 0xEFBBBF.
Editors like "notepad" put this marker in
the very beginning of a text file when
you save the file using "Unicode UTF-8" format.
*/
if (!line_number &&
(uchar) line[0] == 0xEF &&
(uchar) line[1] == 0xBB &&
(uchar) line[2] == 0xBF)
line+= 3;
line_number++; line_number++;
if (!glob_buffer.length()) if (!glob_buffer.length())
status.query_start_line=line_number; status.query_start_line=line_number;
......
...@@ -178,4 +178,6 @@ ERROR at line 1: DELIMITER cannot contain a backslash character ...@@ -178,4 +178,6 @@ ERROR at line 1: DELIMITER cannot contain a backslash character
1 1
1 1
1 1
This is a file starting with UTF8 BOM 0xEFBBBF
This is a file starting with UTF8 BOM 0xEFBBBF
End of 5.0 tests End of 5.0 tests
...@@ -281,4 +281,13 @@ remove_file $MYSQLTEST_VARDIR/tmp/bug21412.sql; ...@@ -281,4 +281,13 @@ remove_file $MYSQLTEST_VARDIR/tmp/bug21412.sql;
# #
--exec $MYSQL test -e "/*! \C latin1 */ select 1;" --exec $MYSQL test -e "/*! \C latin1 */ select 1;"
#
# Bug#29323 mysql client only accetps ANSI encoded files
#
--write_file $MYSQLTEST_VARDIR/tmp/bug29323.sql
select "This is a file starting with UTF8 BOM 0xEFBBBF";
EOF
--exec $MYSQL < $MYSQLTEST_VARDIR/tmp/bug29323.sql 2>&1
remove_file $MYSQLTEST_VARDIR/tmp/bug29323.sql;
--echo End of 5.0 tests --echo End of 5.0 tests
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment