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

MySQL数据库

开发平台:

Visual C++

  1. #
  2. # test of safe selects
  3. #
  4. --disable_warnings
  5. drop table if exists t1;
  6. --enable_warnings
  7. SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=4, SQL_MAX_JOIN_SIZE=9;
  8. create table t1 (a int auto_increment primary key, b char(20));
  9. insert into t1 values(1,"test");
  10. SELECT SQL_BUFFER_RESULT * from t1;
  11. update t1 set b="a" where a=1;
  12. delete from t1 where a=1;
  13. insert into t1 values(1,"test"),(2,"test2");
  14. SELECT SQL_BUFFER_RESULT * from t1;
  15. update t1 set b="a" where a=1;
  16. select 1 from t1,t1 as t2,t1 as t3;
  17. # The following should give errors:
  18. --error 1175
  19. update t1 set b="a";
  20. --error 1175
  21. update t1 set b="a" where b="test";
  22. --error 1175
  23. delete from t1;
  24. --error 1175
  25. delete from t1 where b="test";
  26. --error 1175
  27. delete from t1 where a+0=1;
  28. --error 1104
  29. select 1 from t1,t1 as t2,t1 as t3,t1 as t4,t1 as t5;
  30. # The following should be ok:
  31. update t1 set b="a" limit 1;
  32. update t1 set b="a" where b="b" limit 2; 
  33. delete from t1 where b="test" limit 1;
  34. delete from t1 where a+0=1 limit 2;
  35. # Test SQL_BIG_SELECTS
  36. alter table t1 add key b (b);
  37. SET MAX_JOIN_SIZE=2;
  38. SELECT @@MAX_JOIN_SIZE, @@SQL_BIG_SELECTS;
  39. insert into t1 values (null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a");
  40. --error 1104
  41. SELECT * from t1 order by a;
  42. SET SQL_BIG_SELECTS=1;
  43. SELECT * from t1 order by a;
  44. SET MAX_JOIN_SIZE=2;
  45. --error 1104
  46. SELECT * from t1;
  47. SET MAX_JOIN_SIZE=DEFAULT;
  48. SELECT * from t1;
  49. #
  50. # Test MAX_SEEKS_FOR_KEY
  51. #
  52. SELECT @@MAX_SEEKS_FOR_KEY;
  53. analyze table t1;
  54. insert into t1 values (null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a");
  55. explain select STRAIGHT_JOIN * from t1,t1 as t2 where t1.b=t2.b;
  56. set MAX_SEEKS_FOR_KEY=1;
  57. explain select STRAIGHT_JOIN * from t1,t1 as t2 where t1.b=t2.b;
  58. SET MAX_SEEKS_FOR_KEY=DEFAULT;
  59. drop table t1;
  60. # BUG#8726
  61. create table t1 (a int);
  62. insert into t1 values (1),(2),(3),(4),(5);
  63. insert into t1 select * from t1;
  64. insert into t1 select * from t1;
  65. insert into t1 select * from t1;
  66. set local  max_join_size=8;
  67. --error 1104
  68. select * from (select * from t1) x;
  69. set local  max_join_size=1;
  70. --error 1104
  71. select * from (select * from t1 a, t1 b) x;
  72. set local  max_join_size=1;
  73. --error 1104
  74. select * from (select 1 union select 2 union select 3) x;
  75. drop table t1;
  76. SET SQL_SAFE_UPDATES=0,SQL_SELECT_LIMIT=DEFAULT, SQL_MAX_JOIN_SIZE=DEFAULT;
  77. # End of 4.1 tests