You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
573 lines
16 KiB
573 lines
16 KiB
5 months ago
|
# Initialise
|
||
|
--disable_warnings
|
||
|
drop table if exists t1,t2;
|
||
|
--enable_warnings
|
||
|
|
||
|
--error 1054
|
||
|
set @a := foo;
|
||
|
set @a := connection_id() + 3;
|
||
|
select @a - connection_id();
|
||
|
|
||
|
set @b := 1;
|
||
|
select @b;
|
||
|
|
||
|
# Check using and setting variables with SELECT DISTINCT
|
||
|
|
||
|
CREATE TABLE t1 ( i int not null, v int not null,index (i));
|
||
|
insert into t1 values (1,1),(1,3),(2,1);
|
||
|
create table t2 (i int not null, unique (i));
|
||
|
insert into t2 select distinct i from t1;
|
||
|
select * from t2;
|
||
|
select distinct t2.i,@vv1:=if(sv1.i,1,0),@vv2:=if(sv2.i,1,0),@vv3:=if(sv3.i,1,0), @vv1+@vv2+@vv3 from t2 left join t1 as sv1 on sv1.i=t2.i and sv1.v=1 left join t1 as sv2 on sv2.i=t2.i and sv2.v=2 left join t1 as sv3 on sv3.i=t2.i and sv3.v=3;
|
||
|
analyze table t1;
|
||
|
explain select * from t1 where i=@vv1;
|
||
|
select @vv1,i,v from t1 where i=@vv1;
|
||
|
explain select * from t1 where @vv1:=@vv1+1 and i=@vv1;
|
||
|
explain select @vv1:=i from t1 where i=@vv1;
|
||
|
explain select * from t1 where i=@vv1;
|
||
|
drop table t1,t2;
|
||
|
|
||
|
# Check types of variables
|
||
|
set @a=0,@b=0;
|
||
|
select @a:=10, @b:=1, @a > @b, @a < @b;
|
||
|
# Note that here a and b will be avaluated as number
|
||
|
select @a:="10", @b:="1", @a > @b, @a < @b;
|
||
|
# Note that here a and b will be avaluated as strings
|
||
|
select @a:=10, @b:=2, @a > @b, @a < @b;
|
||
|
select @a:="10", @b:="2", @a > @b, @a < @b;
|
||
|
|
||
|
# Fixed bug #1194
|
||
|
select @a:=1;
|
||
|
select @a, @a:=1;
|
||
|
|
||
|
create table t1 (id int, d double, c char(10));
|
||
|
insert into t1 values (1,2.0, "test");
|
||
|
select @c:=0;
|
||
|
update t1 SET id=(@c:=@c+1);
|
||
|
select @c;
|
||
|
select @c:=0;
|
||
|
update t1 set id=(@c:=@c+1);
|
||
|
select @c;
|
||
|
select @c:=0;
|
||
|
select @c:=@c+1;
|
||
|
select @d,(@d:=id),@d from t1;
|
||
|
select @e,(@e:=d),@e from t1;
|
||
|
select @f,(@f:=c),@f from t1;
|
||
|
set @g=1;
|
||
|
select @g,(@g:=c),@g from t1;
|
||
|
select @c, @d, @e, @f;
|
||
|
select @d:=id, @e:=id, @f:=id, @g:=@id from t1;
|
||
|
select @c, @d, @e, @f, @g;
|
||
|
drop table t1;
|
||
|
|
||
|
# just for fun :)
|
||
|
select @a:=10, @b:=2, @a>@b, @a:="10", @b:="2", @a>@b, @a:=10, @b:=2, @a>@b, @a:="10", @b:="2", @a>@b;
|
||
|
|
||
|
#
|
||
|
# bug#1739
|
||
|
# Item_func_set_user_var sets update_query_id, Item_func_get_user_var checks it
|
||
|
#
|
||
|
create table t1 (i int not null);
|
||
|
insert t1 values (1),(2),(2),(3),(3),(3);
|
||
|
select @a:=0; select @a, @a:=@a+count(*), count(*), @a from t1 group by i;
|
||
|
select @a:=0; select @a+0, @a:=@a+0+count(*), count(*), @a+0 from t1 group by i;
|
||
|
|
||
|
set @a=0;
|
||
|
select @a,@a:="hello",@a,@a:=3,@a,@a:="hello again" from t1 group by i;
|
||
|
select @a,@a:="hello",@a,@a:=3,@a,@a:="hello again" from t1 group by i;
|
||
|
drop table t1;
|
||
|
|
||
|
#
|
||
|
# Bug #2244: User variables did not copy collation and derivation
|
||
|
# attributes from values they were initialized to.
|
||
|
#
|
||
|
|
||
|
set @a=_latin2'test';
|
||
|
select charset(@a),collation(@a),coercibility(@a);
|
||
|
select @a=_latin2'TEST';
|
||
|
select @a=_latin2'TEST' collate latin2_bin;
|
||
|
|
||
|
set @a=_latin2'test' collate latin2_general_ci;
|
||
|
select charset(@a),collation(@a),coercibility(@a);
|
||
|
select @a=_latin2'TEST';
|
||
|
select @a=_latin2'TEST' collate latin2_bin;
|
||
|
|
||
|
#
|
||
|
# Check the same invoking Item_set_user_var
|
||
|
#
|
||
|
select charset(@a:=_latin2'test');
|
||
|
select collation(@a:=_latin2'test');
|
||
|
select coercibility(@a:=_latin2'test');
|
||
|
select collation(@a:=_latin2'test' collate latin2_bin);
|
||
|
select coercibility(@a:=_latin2'test' collate latin2_bin);
|
||
|
select (@a:=_latin2'test' collate latin2_bin) = _latin2'TEST';
|
||
|
select charset(@a),collation(@a),coercibility(@a);
|
||
|
select (@a:=_latin2'test' collate latin2_bin) = _latin2'TEST' collate latin2_general_ci;
|
||
|
|
||
|
#
|
||
|
# Bug #6321 strange error:
|
||
|
# string function FIELD(<uservariable content NULL>, ...)
|
||
|
#
|
||
|
set @var= NULL ;
|
||
|
select FIELD( @var,'1it','Hit') as my_column;
|
||
|
|
||
|
#
|
||
|
# Bug#9425 A user variable doesn't always have implicit coercibility
|
||
|
#
|
||
|
select @v, coercibility(@v);
|
||
|
set @v1=null, @v2=1, @v3=1.1, @v4=now();
|
||
|
select coercibility(@v1),coercibility(@v2),coercibility(@v3),coercibility(@v4);
|
||
|
|
||
|
#
|
||
|
# Bug #9286 SESSION/GLOBAL should be disallowed for user variables
|
||
|
#
|
||
|
--error 1064
|
||
|
set session @honk=99;
|
||
|
|
||
|
#
|
||
|
# Bug #10724 @@local not preserved in column name of select
|
||
|
#
|
||
|
# The value doesn't actually matter, we just care about the column name
|
||
|
--replace_column 1 #
|
||
|
select @@local.max_allowed_packet;
|
||
|
--replace_column 1 #
|
||
|
select @@session.max_allowed_packet;
|
||
|
--replace_column 1 #
|
||
|
select @@global.max_allowed_packet;
|
||
|
--replace_column 1 #
|
||
|
select @@max_allowed_packet;
|
||
|
--replace_column 1 #
|
||
|
select @@Max_Allowed_Packet;
|
||
|
--replace_column 1 #
|
||
|
select @@version;
|
||
|
--replace_column 1 #
|
||
|
select @@global.version;
|
||
|
|
||
|
--echo End of 4.1 tests
|
||
|
|
||
|
# Bug #6598: problem with cast(NULL as signed integer);
|
||
|
#
|
||
|
|
||
|
set @first_var= NULL;
|
||
|
create table t1 select @first_var;
|
||
|
show create table t1;
|
||
|
drop table t1;
|
||
|
set @first_var= cast(NULL as signed integer);
|
||
|
create table t1 select @first_var;
|
||
|
show create table t1;
|
||
|
drop table t1;
|
||
|
set @first_var= NULL;
|
||
|
create table t1 select @first_var;
|
||
|
show create table t1;
|
||
|
drop table t1;
|
||
|
set @first_var= concat(NULL);
|
||
|
create table t1 select @first_var;
|
||
|
show create table t1;
|
||
|
drop table t1;
|
||
|
set @first_var=1;
|
||
|
set @first_var= cast(NULL as CHAR);
|
||
|
create table t1 select @first_var;
|
||
|
show create table t1;
|
||
|
drop table t1;
|
||
|
|
||
|
#
|
||
|
# Bug #7498 User variable SET saves SIGNED BIGINT as UNSIGNED BIGINT
|
||
|
#
|
||
|
|
||
|
# First part, set user var to large number and select it
|
||
|
set @a=18446744071710965857;
|
||
|
select @a;
|
||
|
|
||
|
# Second part, set user var from large number in table
|
||
|
# then select it
|
||
|
CREATE TABLE `bigfailure` (
|
||
|
`afield` BIGINT UNSIGNED NOT NULL
|
||
|
);
|
||
|
INSERT INTO `bigfailure` VALUES (18446744071710965857);
|
||
|
SELECT * FROM bigfailure;
|
||
|
select * from (SELECT afield FROM bigfailure) as b;
|
||
|
select * from bigfailure where afield = (SELECT afield FROM bigfailure);
|
||
|
select * from bigfailure where afield = 18446744071710965857;
|
||
|
# This is fixed in 5.0, to be uncommented there
|
||
|
#select * from bigfailure where afield = '18446744071710965857';
|
||
|
select * from bigfailure where afield = 18446744071710965856+1;
|
||
|
|
||
|
SET @a := (SELECT afield FROM bigfailure);
|
||
|
SELECT @a;
|
||
|
SET @a := (select afield from (SELECT afield FROM bigfailure) as b);
|
||
|
SELECT @a;
|
||
|
SET @a := (select * from bigfailure where afield = (SELECT afield FROM bigfailure));
|
||
|
SELECT @a;
|
||
|
|
||
|
drop table bigfailure;
|
||
|
|
||
|
#
|
||
|
# Bug#16861: User defined variable can have a wrong value if a tmp table was
|
||
|
# used.
|
||
|
#
|
||
|
create table t1(f1 int, f2 int);
|
||
|
insert into t1 values (1,2),(2,3),(3,1);
|
||
|
--source include/turn_off_only_full_group_by.inc
|
||
|
select @var:=f2 from t1 group by f1 order by f2 desc limit 1;
|
||
|
select @var;
|
||
|
create table t2 as select @var:=f2 from t1 group by f1 order by f2 desc limit 1;
|
||
|
select * from t2;
|
||
|
select @var;
|
||
|
--source include/restore_sql_mode_after_turn_off_only_full_group_by.inc
|
||
|
drop table t1,t2;
|
||
|
|
||
|
#
|
||
|
# Bug#19024 - SHOW COUNT(*) WARNINGS not return Errors
|
||
|
#
|
||
|
--error 1064
|
||
|
insert into city 'blah';
|
||
|
SHOW COUNT(*) WARNINGS;
|
||
|
SHOW COUNT(*) ERRORS;
|
||
|
|
||
|
#
|
||
|
# Bug#28494: Grouping by Item_func_set_user_var produces incorrect result.
|
||
|
#
|
||
|
create table t1(f1 int, f2 varchar(2), f3 float, f4 decimal(2,1));
|
||
|
insert into t1 values
|
||
|
(1, "a", 1.5, 1.6), (1, "a", 1.5, 1.6), (2, "b", 2.5, 2.6),
|
||
|
(3, "c", 3.5, 3.6), (4, "d", 4.5, 4.6), (1, "a", 1.5, 1.6),
|
||
|
(3, "c", 3.5, 3.6), (1, "a", 1.5, 1.6);
|
||
|
select @a:=f1, count(f1) from t1 group by 1 order by 1 desc;
|
||
|
select @a:=f1, count(f1) from t1 group by 1 order by 1 asc;
|
||
|
select @a:=f2, count(f2) from t1 group by 1 order by 1 desc;
|
||
|
select @a:=f3, count(f3) from t1 group by 1 order by 1 desc;
|
||
|
select @a:=f4, count(f4) from t1 group by 1 order by 1 desc;
|
||
|
drop table t1;
|
||
|
|
||
|
#
|
||
|
# Bug#32482: Crash for a query with ORDER BY a user variable.
|
||
|
#
|
||
|
create table t1 (f1 int);
|
||
|
insert into t1 values (2), (1);
|
||
|
select @i := f1 as j from t1 order by 1;
|
||
|
drop table t1;
|
||
|
# Bug #32260: User variables in query cause server crash
|
||
|
#
|
||
|
create table t1(a int);
|
||
|
insert into t1 values(5),(4),(4),(3),(2),(2),(2),(1);
|
||
|
set @rownum := 0;
|
||
|
set @rank := 0;
|
||
|
set @prev_score := NULL;
|
||
|
# Disable the result log as we assign a value to a user variable in one part
|
||
|
# of a statement and use the same variable in other part of the same statement,
|
||
|
# so we can get unexpected results.
|
||
|
--disable_result_log
|
||
|
select @rownum := @rownum + 1 as `row`,
|
||
|
@rank := IF(@prev_score!=a, @rownum, @rank) as `rank`,
|
||
|
@prev_score := a as score
|
||
|
from t1 order by score desc;
|
||
|
--enable_result_log
|
||
|
drop table t1;
|
||
|
|
||
|
#
|
||
|
# Bug#26020: User-Defined Variables are not consistent with columns data types
|
||
|
#
|
||
|
|
||
|
create table t1(b bigint);
|
||
|
insert into t1 (b) values (10), (30), (10);
|
||
|
set @var := 0;
|
||
|
select if(b=@var, 999, b) , @var := b from t1 order by b;
|
||
|
drop table t1;
|
||
|
|
||
|
create temporary table t1 (id int);
|
||
|
insert into t1 values (2), (3), (3), (4);
|
||
|
set @lastid=-1;
|
||
|
select @lastid != id, @lastid, @lastid := id from t1;
|
||
|
drop table t1;
|
||
|
|
||
|
create temporary table t1 (id bigint);
|
||
|
insert into t1 values (2), (3), (3), (4);
|
||
|
set @lastid=-1;
|
||
|
select @lastid != id, @lastid, @lastid := id from t1;
|
||
|
drop table t1;
|
||
|
|
||
|
#
|
||
|
# Bug#42009: SELECT into variable gives different results to direct SELECT
|
||
|
#
|
||
|
CREATE TABLE t1(a INT, b INT);
|
||
|
INSERT INTO t1 VALUES (0, 0), (2, 1), (2, 3), (1, 1), (30, 20);
|
||
|
SELECT a, b INTO @a, @b FROM t1 WHERE a=2 AND b=3 GROUP BY a, b;
|
||
|
SELECT @a, @b;
|
||
|
SELECT a, b FROM t1 WHERE a=2 AND b=3 GROUP BY a, b;
|
||
|
DROP TABLE t1;
|
||
|
|
||
|
#
|
||
|
# Bug#47371: reference by same column name
|
||
|
#
|
||
|
CREATE TABLE t1 (f1 int(11) default NULL, f2 int(11) default NULL);
|
||
|
CREATE TABLE t2 (f1 int(11) default NULL, f2 int(11) default NULL, foo int(11));
|
||
|
CREATE TABLE t3 (f1 int(11) default NULL, f2 int(11) default NULL);
|
||
|
|
||
|
INSERT INTO t1 VALUES(10, 10);
|
||
|
INSERT INTO t1 VALUES(10, 10);
|
||
|
INSERT INTO t2 VALUES(10, 10, 10);
|
||
|
INSERT INTO t2 VALUES(10, 10, 10);
|
||
|
INSERT INTO t3 VALUES(10, 10);
|
||
|
INSERT INTO t3 VALUES(10, 10);
|
||
|
--source include/turn_off_only_full_group_by.inc
|
||
|
|
||
|
SELECT MIN(t2.f1),
|
||
|
@bar:= (SELECT MIN(t3.f2) FROM t3 WHERE t3.f2 > foo)
|
||
|
FROM t1,t2 WHERE t1.f1 = t2.f1 ORDER BY t2.f1;
|
||
|
|
||
|
--source include/restore_sql_mode_after_turn_off_only_full_group_by.inc
|
||
|
DROP TABLE t1, t2, t3;
|
||
|
|
||
|
--echo End of 5.0 tests
|
||
|
|
||
|
#
|
||
|
# Bug#42188: crash and/or memory corruption with user variables in trigger
|
||
|
#
|
||
|
|
||
|
CREATE TABLE t1 (i INT);
|
||
|
CREATE TRIGGER t_after_insert AFTER INSERT ON t1 FOR EACH ROW SET @bug42188 = 10;
|
||
|
INSERT INTO t1 VALUES (1);
|
||
|
--change_user root,,test
|
||
|
INSERT INTO t1 VALUES (1);
|
||
|
DROP TABLE t1;
|
||
|
|
||
|
#
|
||
|
# Bug #55615: debug assertion after using variable in assignment and
|
||
|
# referred to
|
||
|
# Bug #55564: crash with user variables, assignments, joins...
|
||
|
#
|
||
|
|
||
|
CREATE TABLE t1(a INT);
|
||
|
INSERT INTO t1 VALUES (0),(0);
|
||
|
--echo # BUG#55615 : should not crash
|
||
|
SELECT (@a:=(SELECT @a:=1 FROM t1 LIMIT 1)) AND COUNT(1) FROM t1 GROUP BY @a;
|
||
|
--echo # BUG#55564 : should not crash
|
||
|
SELECT IF(
|
||
|
@v:=LEAST((SELECT 1 FROM t1 t2 LEFT JOIN t1 ON (@v) GROUP BY t1.a), a),
|
||
|
count(*), 1)
|
||
|
FROM t1 GROUP BY a LIMIT 1;
|
||
|
|
||
|
DROP TABLE t1;
|
||
|
|
||
|
#
|
||
|
# BUG#56138 "valgrind errors about overlapping memory when
|
||
|
# double-assigning same variable"
|
||
|
#
|
||
|
|
||
|
select @v:=@v:=sum(1) from dual;
|
||
|
|
||
|
#
|
||
|
# Bug #57187: more user variable fun with multiple assignments and
|
||
|
# comparison in query
|
||
|
#
|
||
|
|
||
|
CREATE TABLE t1(a DECIMAL(31,21));
|
||
|
INSERT INTO t1 VALUES (0);
|
||
|
|
||
|
SELECT (@v:=a) <> (@v:=1) FROM t1;
|
||
|
|
||
|
DROP TABLE t1;
|
||
|
|
||
|
--echo End of 5.1 tests
|
||
|
|
||
|
#
|
||
|
# Bug#50511: Sometimes wrong handling of user variables containing NULL.
|
||
|
#
|
||
|
|
||
|
--disable_warnings
|
||
|
DROP TABLE IF EXISTS t1;
|
||
|
--enable_warnings
|
||
|
|
||
|
CREATE TABLE t1(f1 INT AUTO_INCREMENT, PRIMARY KEY(f1));
|
||
|
|
||
|
INSERT INTO t1 SET f1 = NULL ;
|
||
|
|
||
|
SET @aux = NULL ;
|
||
|
INSERT INTO t1 SET f1 = @aux ;
|
||
|
|
||
|
SET @aux1 = 0.123E-1;
|
||
|
SET @aux1 = NULL;
|
||
|
INSERT INTO t1 SET f1 = @aux1 ;
|
||
|
|
||
|
SELECT * FROM t1;
|
||
|
|
||
|
DROP TABLE t1;
|
||
|
|
||
|
CREATE TABLE t1(f1 VARCHAR(257) , f2 INT, PRIMARY KEY(f2));
|
||
|
CREATE TRIGGER trg1 BEFORE INSERT ON t1 FOR EACH ROW SET @aux = 1;
|
||
|
|
||
|
SET @aux = 1; # INT
|
||
|
SET @aux = NULL;
|
||
|
INSERT INTO test.t1 (f1, f2) VALUES (1, 1), (@aux, 2);
|
||
|
|
||
|
SET @aux = 'text'; # STRING
|
||
|
SET @aux = NULL;
|
||
|
INSERT INTO t1(f1, f2) VALUES (1, 3), (@aux, 4);
|
||
|
|
||
|
SELECT f1, f2 FROM t1 ORDER BY f2;
|
||
|
|
||
|
DROP TRIGGER trg1;
|
||
|
DROP TABLE t1;
|
||
|
|
||
|
|
||
|
--echo #
|
||
|
--echo # Bug #12408412: GROUP_CONCAT + ORDER BY + INPUT/OUTPUT
|
||
|
--echo # SAME USER VARIABLE = CRASH
|
||
|
--echo #
|
||
|
|
||
|
SET @bug12408412=1;
|
||
|
SELECT GROUP_CONCAT(@bug12408412 ORDER BY 1) INTO @bug12408412;
|
||
|
|
||
|
--echo End of 5.5 tests
|
||
|
|
||
|
#
|
||
|
# Bug #11764372 57197: EVEN MORE USER VARIABLE CRASHING FUN
|
||
|
#
|
||
|
|
||
|
CREATE TABLE t1(a int);
|
||
|
INSERT INTO t1 VALUES (1), (2);
|
||
|
SELECT DISTINCT @a:=MIN(t1.a) FROM t1, t1 AS t2
|
||
|
GROUP BY @b:=(SELECT COUNT(*) > t2.a);
|
||
|
DROP TABLE t1;
|
||
|
|
||
|
#
|
||
|
# Bug #11764371 57196: MORE FUN WITH ASSERTION: !TABLE->FILE ||
|
||
|
# TABLE->FILE->INITED == HANDLER::
|
||
|
#
|
||
|
|
||
|
CREATE TABLE t1(a INT) ENGINE=InnoDB;
|
||
|
INSERT INTO t1 VALUES (0);
|
||
|
SELECT DISTINCT POW(COUNT(*), @a:=(SELECT 1 FROM t1 LEFT JOIN t1 AS t2 ON @a))
|
||
|
AS b FROM t1 GROUP BY a;
|
||
|
SELECT @a;
|
||
|
DROP TABLE t1;
|
||
|
CREATE TABLE t1(f1 INT, f2 INT);
|
||
|
INSERT INTO t1 VALUES (1,2),(2,3),(3,1);
|
||
|
CREATE TABLE t2(a INT);
|
||
|
INSERT INTO t2 VALUES (1);
|
||
|
SET @var=NULL;
|
||
|
--source include/turn_off_only_full_group_by.inc
|
||
|
SELECT @var:=(SELECT f2 FROM t2 WHERE @var) FROM t1 GROUP BY f1 ORDER BY f2 DESC
|
||
|
LIMIT 1;
|
||
|
SELECT @var;
|
||
|
--source include/restore_sql_mode_after_turn_off_only_full_group_by.inc
|
||
|
DROP TABLE t1, t2;
|
||
|
|
||
|
#
|
||
|
# Bug#14058892: Extra rows returned when variable is used in subquery in
|
||
|
# ON clause of RIGHT JOIN
|
||
|
#
|
||
|
CREATE TABLE t1(a INT);
|
||
|
INSERT INTO t1 VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
|
||
|
|
||
|
CREATE TABLE t2(a INT);
|
||
|
INSERT INTO t2 VALUES (1), (3), (5), (7), (9);
|
||
|
|
||
|
CREATE TABLE t3(a INT);
|
||
|
INSERT INTO t3 VALUES (1), (4), (7), (10);
|
||
|
|
||
|
SET @var1 = 6;
|
||
|
|
||
|
ANALYZE TABLE t1,t2,t3;
|
||
|
|
||
|
let $query=
|
||
|
SELECT t1.a, t2.a, t3.a, (@var1:= @var1+0) AS var
|
||
|
FROM t1
|
||
|
LEFT JOIN t2 ON t1.a=t2.a AND t2.a < @var1
|
||
|
LEFT JOIN t3 ON t1.a=t3.a AND t3.a < @var1;
|
||
|
|
||
|
eval explain format=json $query;
|
||
|
|
||
|
--sorted_result
|
||
|
eval $query;
|
||
|
|
||
|
DROP TABLE t1, t2, t3;
|
||
|
|
||
|
#
|
||
|
# Starting with MySQL 5.7:
|
||
|
# Enforcing max length on variable names
|
||
|
#
|
||
|
|
||
|
# Length 64 is ok.
|
||
|
set @X234567890123456789012345678901234567890123456789012345678901234 = 12;
|
||
|
select @X234567890123456789012345678901234567890123456789012345678901234;
|
||
|
|
||
|
# Length 65 is illegal
|
||
|
-- error ER_ILLEGAL_USER_VAR
|
||
|
set @X2345678901234567890123456789012345678901234567890123456789012345 = 12;
|
||
|
|
||
|
# Length 0 is illegal
|
||
|
-- error ER_ILLEGAL_USER_VAR
|
||
|
set @``= "illegal";
|
||
|
|
||
|
# trailing spaces are illegal
|
||
|
-- error ER_ILLEGAL_USER_VAR
|
||
|
set @`endswithspace `= "illegal";
|
||
|
|
||
|
# No error reported, illegal identifier treated as non existent
|
||
|
select @X2345678901234567890123456789012345678901234567890123456789012345;
|
||
|
select @``;
|
||
|
select @`endswithspace `;
|
||
|
|
||
|
#
|
||
|
#Bug#18486509 ASSERTION FAILED: TABLE->KEY_READ == 0 IN CLOSE_THREAD_TABLE
|
||
|
#
|
||
|
CREATE TABLE t1(a INT,KEY(a))ENGINE=INNODB;
|
||
|
SELECT 1 NOT IN (SELECT 1 FROM t1 as t1 GROUP BY 1 LIKE (SELECT 1 FROM t1 as t2)) AS col;
|
||
|
SELECT 1 NOT IN (SELECT 1 FROM t1 as t1 ORDER BY 1 LIKE (SELECT 1 FROM t1 as t2)) AS col;
|
||
|
SET @c =(SELECT 1 NOT IN (SELECT 1 FROM t1 as t1 GROUP BY 1 LIKE (SELECT 1 FROM t1 as t2)) AS col);
|
||
|
SET @d =(SELECT 1 NOT IN (SELECT 1 FROM t1 as t1 ORDER BY 1 LIKE (SELECT 1 FROM t1 as t2)) AS col);
|
||
|
DROP TABLE t1;
|
||
|
|
||
|
--echo Bug#25727892: Refactor Item::const_item() as a non-virtual function
|
||
|
|
||
|
--echo Coverage for cached and non-cached user variables
|
||
|
|
||
|
CREATE TABLE t1(a INTEGER, b INTEGER);
|
||
|
INSERT INTO t1 VALUES (1,1), (1,2), (2,1);
|
||
|
|
||
|
|
||
|
|
||
|
let $query1=SELECT a FROM t1 WHERE a = @x;
|
||
|
let $query2=SELECT a FROM t1 WHERE a = @x AND (@x:= @x);
|
||
|
let $query3=SELECT a FROM t1 WHERE a = @x INTO @x;
|
||
|
|
||
|
ANALYZE TABLE t1;
|
||
|
|
||
|
eval explain $query1;
|
||
|
eval explain $query2;
|
||
|
eval explain $query3;
|
||
|
|
||
|
SET @x= 1;
|
||
|
|
||
|
eval $query1;
|
||
|
eval $query2;
|
||
|
--error ER_TOO_MANY_ROWS
|
||
|
eval $query3;
|
||
|
|
||
|
SET @x= 2;
|
||
|
eval $query3;
|
||
|
|
||
|
DROP TABLE t1;
|
||
|
|
||
|
--echo #
|
||
|
--echo # Bug#28960901: ASSERTION FAILED: (TLEN % 2) == 0
|
||
|
--echo #
|
||
|
--disable_ps_protocol
|
||
|
CREATE TABLE t1(a VARCHAR(10) CHARSET latin1, b VARCHAR(20) CHARSET utf16);
|
||
|
INSERT INTO t1 VALUES ('a', 'abcd');
|
||
|
SELECT (@x:=b) FROM t1;
|
||
|
SELECT * FROM t1 WHERE b = (SELECT (@x:=1) FROM t1) OR a = @x;
|
||
|
SELECT (@x:=a) FROM t1;
|
||
|
--error ER_INVALID_CHARACTER_STRING
|
||
|
SELECT * FROM t1 WHERE a = (SELECT (@x:=_utf16 0x1023) FROM t1) OR b = @x;
|
||
|
DROP TABLE t1;
|
||
|
--enable_ps_protocol
|
||
|
|
||
|
--echo #
|
||
|
--echo # Bug#29665165: REGRESSION: SOUNDS LIKE CRASHING TO ME
|
||
|
--echo #
|
||
|
SET @c := FROM_UNIXTIME(1537002029);
|
||
|
--error ER_INVALID_CHARACTER_STRING
|
||
|
DO ((@c := (_utf32' -'))) SOUNDS LIKE(@c);
|