1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

Better fix for bug#22830

Events: crash with procedure which alters events with function

Post-review CS

This fix also changes the handling of KILL command combined with
subquery. It changes the error message given back to "not supported",
from parse error. The error for CREATE|ALTER EVENT has also been changed
to generate "not supported yet" instead of parse error.
In case of a SP call, the error is "not supported yet". This change
cleans the parser from code which should not belong to there. Still
LEX::expr_allows_subselect is existant because it simplifies the handling
 of SQLCOM_HA_READ which forbids subselects.


mysql-test/r/events_bugs.result:
  update resut
mysql-test/r/events_grant.result:
  update result
mysql-test/r/kill.result:
  the error message has been changed for KILL
mysql-test/t/events_bugs.test:
  Update old tests with the new emitted error
  
  Add a test case for
  BUG#22830 Events: crash with procedure which alters events with function
mysql-test/t/events_grant.test:
  add ORDER BY clause to keep the result deterministic.
mysql-test/t/kill.test:
  use name of the error, and change the error
  from parse error, to not supported
sql/sql_lex.cc:
  Add an auxiliary function that checks whether SP and/or
  tables are used in the statement. This function is helpful for
  statements that cannot handle subqueries ans SP calls. Adding out
  of the parser cleans the latter of handling of special cases and
  letting it do its job of parsing.
sql/sql_lex.h:
  helper function to check whether a table or SP was used
sql/sql_parse.cc:
  Use LEX::table_or_sp_used() for SQLCOM_CREATE_EVENT, SQLCOM_ALTER_EVENT
  and SQLCOM_KILL. SQLCOM_DROP event does not use `expr` rule and thus a check is
  not needed.
sql/sql_yacc.yy:
  Remove usage of LEX::expr_allows_subselect for CREATE|ALTER EVENT
  and KILL. There is only one left occurence - SQLCOM_HAREAD, but it 
  adds one table to the list of tables
This commit is contained in:
unknown
2006-11-02 13:51:43 +01:00
parent ae03b232cc
commit 63030d767c
10 changed files with 153 additions and 40 deletions

View File

@ -16,7 +16,7 @@ select 4;
4
drop table t1;
kill (select count(*) from mysql.user);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select count(*) from mysql.user)' at line 1
ERROR 42000: This version of MySQL doesn't yet support 'Usage of subqueries or stored function calls as part of this statement'
create table t1 (id int primary key);
create table t2 (id int unsigned not null);
insert into t2 select id from t1;