mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
c7724872d8
enabled) Before this fix, the lexer and parser would treat the ';' character as a different token (either ';' or END_OF_INPUT), based on convoluted logic, which failed in simple cases where a stored procedure is implemented as a single statement, and used in a multi query. With this fix: - the character ';' is always parsed as a ';' token in the lexer, - parsing multi queries is implemented in the parser, in the 'query:' rules, - the value of thd->client_capabilities, which is the capabilities negotiated between the client and the server during bootstrap, is immutable and not arbitrarily modified during parsing (which was the root cause of the bug)
59 lines
1.7 KiB
Text
59 lines
1.7 KiB
Text
#
|
|
# This file contains tests covering the parser
|
|
#
|
|
|
|
#=============================================================================
|
|
# LEXICAL PARSER (lex)
|
|
#=============================================================================
|
|
|
|
#
|
|
# Maintainer: these tests are for the lexical parser, so every character,
|
|
# even whitespace or comments, is significant here.
|
|
#
|
|
|
|
#
|
|
# Bug#26030 (Parsing fails for stored routine w/multi-statement execution
|
|
# enabled)
|
|
#
|
|
|
|
--disable_warnings
|
|
DROP PROCEDURE IF EXISTS p26030;
|
|
--enable_warnings
|
|
|
|
delimiter $$;
|
|
|
|
select "non terminated"$$
|
|
select "terminated";$$
|
|
select "non terminated, space" $$
|
|
select "terminated, space"; $$
|
|
select "non terminated, comment" /* comment */$$
|
|
select "terminated, comment"; /* comment */$$
|
|
|
|
# Multi queries can not be used in --ps-protocol test mode
|
|
--disable_ps_protocol
|
|
|
|
select "stmt 1";select "stmt 2 non terminated"$$
|
|
select "stmt 1";select "stmt 2 terminated";$$
|
|
select "stmt 1";select "stmt 2 non terminated, space" $$
|
|
select "stmt 1";select "stmt 2 terminated, space"; $$
|
|
select "stmt 1";select "stmt 2 non terminated, comment" /* comment */$$
|
|
select "stmt 1";select "stmt 2 terminated, comment"; /* comment */$$
|
|
|
|
select "stmt 1"; select "space, stmt 2"$$
|
|
select "stmt 1";/* comment */select "comment, stmt 2"$$
|
|
|
|
DROP PROCEDURE IF EXISTS p26030; CREATE PROCEDURE p26030() BEGIN SELECT 1; END; CALL p26030()
|
|
$$
|
|
|
|
DROP PROCEDURE IF EXISTS p26030; CREATE PROCEDURE p26030() SELECT 1; CALL p26030()
|
|
$$
|
|
|
|
--enable_ps_protocol
|
|
|
|
delimiter ;$$
|
|
DROP PROCEDURE p26030;
|
|
|
|
#============================================================================r
|
|
# SYNTACTIC PARSER (bison)
|
|
#=============================================================================
|
|
|