Commit ba7a0375 authored by anozdrin/alik@alik.'s avatar anozdrin/alik@alik.
Browse files

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'.
parent 7696592b
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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.
+15 −0
Original line number Diff line number Diff line
@@ -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.
+2 −2
Original line number Diff line number Diff line
@@ -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);