1
0
mirror of https://github.com/MariaDB/server.git synced 2025-11-08 00:28:29 +03:00

Bug#9801 Views: imperfect error message

Backport for 5.5

The root cause of this bug is that the grammar for GROUP BY clauses,
when using WITH CUBE or WITH ROLLUP, cause conflicts with the grammar
for VIEW, when using WITH CHECK OPTION.

The solution is to implement two token look ahead when parsing a WITH token,
to disambiguate the non standard WITH CUBE and WITH ROLLUP syntaxes.

Patch based on code from Marc Alff and Antony Curtis
This commit is contained in:
Marc Alff
2009-11-02 09:31:00 -07:00
parent 64b813e361
commit 1035de6282
6 changed files with 130 additions and 6 deletions

View File

@@ -49,7 +49,7 @@ a b
Full-text indexes are called collections
Only MyISAM tables support collections
select * from t1 where MATCH(a,b) AGAINST ("indexes" IN BOOLEAN MODE WITH QUERY EXPANSION);
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 'WITH QUERY EXPANSION)' at line 1
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 'QUERY EXPANSION)' at line 1
explain select * from t1 where MATCH(a,b) AGAINST ("collections");
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 fulltext a a 0 1 Using where

View File

@@ -3958,3 +3958,16 @@ DROP TABLE t1;
# -----------------------------------------------------------------
# -- End of 5.1 tests.
# -----------------------------------------------------------------
drop table if exists t_9801;
drop view if exists v_9801;
create table t_9801 (s1 int);
create view v_9801 as
select sum(s1) from t_9801 with check option;
ERROR HY000: CHECK OPTION on non-updatable view 'test.v_9801'
create view v_9801 as
select sum(s1) from t_9801 group by s1 with check option;
ERROR HY000: CHECK OPTION on non-updatable view 'test.v_9801'
create view v_9801 as
select sum(s1) from t_9801 group by s1 with rollup with check option;
ERROR HY000: CHECK OPTION on non-updatable view 'test.v_9801'
drop table t_9801;

View File

@@ -3905,3 +3905,29 @@ DROP TABLE t1;
--echo # -----------------------------------------------------------------
--echo # -- End of 5.1 tests.
--echo # -----------------------------------------------------------------
#
# Bug#9801 (Views: imperfect error message)
#
--disable_warnings
drop table if exists t_9801;
drop view if exists v_9801;
--enable_warnings
create table t_9801 (s1 int);
--error ER_VIEW_NONUPD_CHECK
create view v_9801 as
select sum(s1) from t_9801 with check option;
--error ER_VIEW_NONUPD_CHECK
create view v_9801 as
select sum(s1) from t_9801 group by s1 with check option;
--error ER_VIEW_NONUPD_CHECK
create view v_9801 as
select sum(s1) from t_9801 group by s1 with rollup with check option;
drop table t_9801;