user_var.test
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. # Initialise
  2. --disable_warnings
  3. drop table if exists t1,t2;
  4. --enable_warnings
  5. --error 1054
  6. set @a := foo;
  7. set @a := connection_id() + 3;
  8. select @a - connection_id();
  9. set @b := 1;
  10. select @b;
  11. # Check using and setting variables with SELECT DISTINCT
  12. CREATE TABLE t1 ( i int not null, v int not null,index (i));
  13. insert into t1 values (1,1),(1,3),(2,1); 
  14. create table t2 (i int not null, unique (i));
  15. insert into t2 select distinct i from t1;
  16. select * from t2; 
  17. 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;
  18. explain select * from t1 where i=@vv1;
  19. explain select * from t1 where @vv1:=@vv1+1 and i=@vv1;
  20. explain select @vv1:=i from t1 where i=@vv1;
  21. explain select * from t1 where i=@vv1;
  22. drop table t1,t2;
  23. # Check types of variables
  24. set @a=0,@b=0;
  25. select @a:=10,   @b:=1,   @a > @b, @a < @b;
  26. # Note that here a and b will be avaluated as number
  27. select @a:="10", @b:="1", @a > @b, @a < @b;
  28. # Note that here a and b will be avaluated as strings
  29. select @a:=10,   @b:=2,   @a > @b, @a < @b;
  30. select @a:="10", @b:="2", @a > @b, @a < @b;
  31. # Fixed bug #1194
  32. select @a:=1;
  33. select @a, @a:=1;
  34. create table t1 (id int, d double, c char(10));
  35. insert into t1 values (1,2.0, "test");
  36. select @c:=0;
  37. update t1 SET id=(@c:=@c+1);
  38. select @c;
  39. select @c:=0;
  40. update t1 set id=(@c:=@c+1);
  41. select @c;
  42. select @c:=0;
  43. select @c:=@c+1;
  44. select @d,(@d:=id),@d from t1;
  45. select @e,(@e:=d),@e from t1;
  46. select @f,(@f:=c),@f from t1;
  47. set @g=1;
  48. select @g,(@g:=c),@g from t1;
  49. select @c, @d, @e, @f;
  50. select @d:=id, @e:=id, @f:=id, @g:=@id from t1;
  51. select @c, @d, @e, @f, @g;
  52. drop table t1;
  53. # just for fun :)
  54. 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;
  55. #
  56. # bug#1739
  57. # Item_func_set_user_var sets update_query_id, Item_func_get_user_var checks it
  58. #
  59. create table t1 (i int not null);
  60. insert t1 values (1),(2),(2),(3),(3),(3);
  61. select @a:=0; select @a, @a:=@a+count(*), count(*), @a from t1 group by i;
  62. select @a:=0; select @a+0, @a:=@a+0+count(*), count(*), @a+0 from t1 group by i;
  63. drop table t1;
  64. #
  65. # Bug #2244: User variables didn't copy collation and derivation
  66. # attributes from values they were initialized to.
  67. #
  68. set @a=_latin2'test';
  69. select charset(@a),collation(@a),coercibility(@a);
  70. select @a=_latin2'TEST';
  71. select @a=_latin2'TEST' collate latin2_bin;
  72. set @a=_latin2'test' collate latin2_general_ci;
  73. select charset(@a),collation(@a),coercibility(@a);
  74. select @a=_latin2'TEST';
  75. select @a=_latin2'TEST' collate latin2_bin;
  76. #
  77. # Check the same invoking Item_set_user_var
  78. #
  79. select charset(@a:=_latin2'test');
  80. select collation(@a:=_latin2'test');
  81. select coercibility(@a:=_latin2'test');
  82. select collation(@a:=_latin2'test' collate latin2_bin);
  83. select coercibility(@a:=_latin2'test' collate latin2_bin);
  84. select (@a:=_latin2'test' collate latin2_bin) = _latin2'TEST';
  85. select charset(@a),collation(@a),coercibility(@a);
  86. select (@a:=_latin2'test' collate latin2_bin) = _latin2'TEST' collate latin2_general_ci;
  87. #
  88. # Bug #6321 strange error:
  89. #   string function FIELD(<uservariable content NULL>, ...)
  90. #
  91. set @var= NULL ;
  92. select FIELD( @var,'1it','Hit') as my_column;
  93. #
  94. # Bug#9425 A user variable doesn't always have implicit coercibility
  95. #
  96. select @v, coercibility(@v);
  97. set @v1=null, @v2=1, @v3=1.1, @v4=now();
  98. select coercibility(@v1),coercibility(@v2),coercibility(@v3),coercibility(@v4);
  99. #
  100. # Bug #9286  SESSION/GLOBAL should be disallowed for user variables
  101. #
  102. --error 1064
  103. set session @honk=99;
  104. --error 1105
  105. set one_shot @honk=99;
  106. #
  107. # Bug #10724  @@local not preserved in column name of select
  108. #
  109. # The value doesn't actually matter, we just care about the column name
  110. --replace_column 1 #
  111. select @@local.max_allowed_packet;
  112. --replace_column 1 #
  113. select @@session.max_allowed_packet;
  114. --replace_column 1 #
  115. select @@global.max_allowed_packet;
  116. --replace_column 1 #
  117. select @@max_allowed_packet;
  118. --replace_column 1 #
  119. select @@Max_Allowed_Packet;
  120. --replace_column 1 #
  121. select @@version;
  122. --replace_column 1 #
  123. select @@global.version;
  124. --replace_column 1 #
  125. select @@session.VERSION;
  126. # End of 4.1 tests