mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
MDEV-17894 Assertion `(thd->lex)->current_select' failed in MYSQLparse(),
query with VALUES() A table value constructor can be used in all contexts where a select can be used. In particular an ORDER BY clause or a LIMIT clause or both of them can be attached to a table value constructor to produce a new query. Unfortunately execution of such queries was not supported. This patch fixes the problem.
This commit is contained in:
@ -1125,3 +1125,154 @@ DROP VIEW v1;
|
||||
|
||||
VALUES(1 + 1,2,'abc');
|
||||
SELECT * FROM (VALUES(1 + 1,2,'abc')) t;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-17894: tvc with ORDER BY ... LIMIT
|
||||
--echo #
|
||||
|
||||
let $q=
|
||||
values (5), (7), (1), (3), (4) limit 2;
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
values (5), (7), (1), (3), (4) limit 2 offset 1;
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
values (5), (7), (1), (3), (4) order by 1 limit 2;
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
values (5), (7), (1), (3), (4) order by 1 limit 2 offset 1;
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
values (5), (7), (1), (3), (4) order by 1;
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
values (5,90), (7,20), (1,70), (3,50), (4,10) order by 2;
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
select 2 union (values (5), (7), (1), (3), (4) limit 2);
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
select 2 union (values (5), (7), (1), (3), (4) limit 2 offset 1);
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
select 2 union (values (5), (7), (1), (3), (4) order by 1 limit 2);
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
select 2 union (values (5), (7), (1), (3), (4) order by 1 limit 2 offset 1);
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
|
||||
let $q=
|
||||
(values (5), (7), (1), (3), (4) limit 2) union select 2;
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
(values (5), (7), (1), (3), (4) limit 2 offset 1) union select 2;
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
(values (5), (7), (1), (3), (4) order by 1 limit 2) union select 2;
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
(values (5), (7), (1), (3), (4) order by 1 limit 2 offset 1) union select 2;
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
|
||||
let $q=
|
||||
select 3 union all (values (5), (7), (1), (3), (4) limit 2 offset 3);
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
(values (5), (7), (1), (3), (4) limit 2 offset 3) union all select 3;
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
select 3 union all (values (5), (7), (1), (3), (4) order by 1 limit 2);
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
(values (5), (7), (1), (3), (4) order by 1 limit 2) union all select 3;
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
( values (5), (7), (1), (3), (4) limit 2 offset 1 )
|
||||
union
|
||||
( values (5), (7), (1), (3), (4) order by 1 limit 2 );
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
( values (5), (7), (1), (3), (4) limit 2 offset 1 )
|
||||
union all
|
||||
( values (5), (7), (1), (3), (4) order by 1 limit 2 );
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
(values (5), (7), (1), (3), (4) limit 2 offset 3) union all select 3 order by 1;
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
(values (5), (7), (1), (3), (4) order by 1 limit 3 offset 1) union all select 3 order by 1;
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
let $q=
|
||||
(values (5), (7), (1), (3), (4) order by 1 limit 3 offset 1) union all select 3
|
||||
order by 1 limit 2 offset 1;
|
||||
eval $q;
|
||||
eval explain extended $q;
|
||||
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
values (5,90), (7,20), (1,70), (3,50), (4,10) order by 3;
|
||||
|
||||
create view v1 as values (5), (7), (1), (3), (4) order by 1 limit 2;
|
||||
show create view v1;
|
||||
select * from v1;
|
||||
drop view v1;
|
||||
|
||||
create view v1 as
|
||||
( values (5), (7), (1), (3), (4) limit 2 offset 1 )
|
||||
union
|
||||
( values (5), (7), (1), (3), (4) order by 1 limit 2 );
|
||||
show create view v1;
|
||||
select * from v1;
|
||||
drop view v1;
|
||||
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
create view v1 as values (5,90), (7,20), (1,70), (3,50), (4,10) order by 3;
|
||||
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
create view v1 as
|
||||
( values (5), (7), (1), (3), (4) limit 2 offset 1 )
|
||||
union
|
||||
( values (5), (7), (1), (3), (4) order by 2 limit 2 );
|
||||
|
Reference in New Issue
Block a user