mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
ce99d4430f
BitKeeper/etc/logging_ok: auto-union client/mysql.cc: Auto merged extra/my_print_defaults.c: Auto merged include/m_string.h: Auto merged mysql-test/mysql-test-run.sh: Auto merged mysql-test/r/ctype_utf8.result: Auto merged mysql-test/r/user_var.result: Auto merged mysql-test/t/user_var.test: Auto merged scripts/make_binary_distribution.sh: Auto merged sql/item_func.cc: Auto merged sql/sql_yacc.yy: Auto merged strings/ctype-simple.c: Auto merged strings/ctype-ucs2.c: Auto merged strings/ctype-utf8.c: Auto merged libmysql/libmysql.c: ul mysql-test/r/ps_1general.result: Merge mysql-test/t/derived.test: Merge mysql-test/t/ps_1general.test: Merge mysql-test/t/type_float.test: Merge sql/field.cc: ul sql/item.cc: ul sql/item.h: ul sql/item_func.h: ul sql/item_strfunc.cc: ul sql/item_sum.cc: ul sql/item_sum.h: ul sql/procedure.h: ul sql/sql_derived.cc: Trivial merge sql/sql_parse.cc: ul sql/sql_update.cc: Trivial merge strings/strtod.c: Use updated code from 4.1 This is bascily same code as we had before or 5.0, execpt that we now have higher accuracy for floating points value that are integers (like 123.45E+02)
125 lines
3.8 KiB
Text
125 lines
3.8 KiB
Text
# 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;
|
|
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;
|
|
drop table t1;
|
|
|
|
#
|
|
# Bug #2244: User variables didn't 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;
|
|
|
|
# Check that user variables are binlogged correctly (BUG#3875)
|
|
create table t1 (a varchar(50));
|
|
reset master;
|
|
SET TIMESTAMP=10000;
|
|
SET @`a b`='hello';
|
|
INSERT INTO t1 VALUES(@`a b`);
|
|
set @var1= "';aaa";
|
|
SET @var2=char(ascii('a'));
|
|
insert into t1 values (@var1),(@var2);
|
|
show binlog events from 96;
|
|
# more important than SHOW BINLOG EVENTS, mysqlbinlog (where we
|
|
# absolutely need variables names to be quoted and strings to be
|
|
# escaped).
|
|
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
|
|
--exec $MYSQL_BINLOG --short-form $MYSQL_TEST_DIR/var/log/master-bin.000001
|
|
drop table t1;
|
|
|
|
|
|
#
|
|
# Bug #6321 strange error:
|
|
# string function FIELD(<uservariable content NULL>, ...)
|
|
#
|
|
set @var= NULL ;
|
|
select FIELD( @var,'1it','Hit') as my_column;
|