Fix for BUG#24293: '\Z' token is not handled correctly in views.

If SELECT-part of CREATE VIEW statement contains '\Z',
it is not handled correctly.

The problem was in String::print().
Symbol with code 032 (26) is replaced with '\z',
which is not supported by the lexer.

The fix is to replace the symbol with '\Z'.
This commit is contained in:
anozdrin/alik@alik. 2006-12-19 15:32:02 +03:00
parent 7696592b09
commit ba7a03759b
3 changed files with 26 additions and 2 deletions

View File

@ -3014,4 +3014,13 @@ i j
6 3
DROP VIEW v1, v2;
DROP TABLE t1;
DROP VIEW IF EXISTS v1;
CREATE VIEW v1 AS SELECT 'The\ZEnd';
SELECT * FROM v1;
TheEnd
TheEnd
SHOW CREATE VIEW v1;
View Create View
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select _latin1'The\ZEnd' AS `TheEnd`
DROP VIEW v1;
End of 5.0 tests.

View File

@ -2960,4 +2960,19 @@ DROP VIEW v1, v2;
DROP TABLE t1;
#
# BUG#24293: '\Z' token is not handled correctly in views
#
--disable_warnings
DROP VIEW IF EXISTS v1;
--enable_warnings
CREATE VIEW v1 AS SELECT 'The\ZEnd';
SELECT * FROM v1;
SHOW CREATE VIEW v1;
DROP VIEW v1;
--echo End of 5.0 tests.

View File

@ -1033,8 +1033,8 @@ void String::print(String *str)
case '\r':
str->append(STRING_WITH_LEN("\\r"));
break;
case 26: //Ctrl-Z
str->append(STRING_WITH_LEN("\\z"));
case '\032': // Ctrl-Z
str->append(STRING_WITH_LEN("\\Z"));
break;
default:
str->append(c);