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

MySQL数据库

开发平台:

Visual C++

  1. #
  2. # Initialize
  3. --disable_warnings
  4. drop table if exists t1;
  5. --enable_warnings
  6. #
  7. # Test of reading of bigint values
  8. #
  9. select 0,256,00000000000000065536,2147483647,-2147483648,2147483648,+4294967296;
  10. select 9223372036854775807,-009223372036854775808;
  11. select +9999999999999999999,-9999999999999999999;
  12. select cast(9223372036854775808 as unsigned)+1;
  13. select 9223372036854775808+1;
  14. select -(0-3),round(-(0-3)), round(9999999999999999999);
  15. select 1,11,101,1001,10001,100001,1000001,10000001,100000001,1000000001,10000000001,100000000001,1000000000001,10000000000001,100000000000001,1000000000000001,10000000000000001,100000000000000001,1000000000000000001,10000000000000000001;
  16. select -1,-11,-101,-1001,-10001,-100001,-1000001,-10000001,-100000001,-1000000001,-10000000001,-100000000001,-1000000000001,-10000000000001,-100000000000001,-1000000000000001,-10000000000000001,-100000000000000001,-1000000000000000001,-10000000000000000001;
  17. select conv(1,10,16),conv((1<<2)-1,10,16),conv((1<<10)-2,10,16),conv((1<<16)-3,10,16),conv((1<<25)-4,10,16),conv((1<<31)-5,10,16),conv((1<<36)-6,10,16),conv((1<<47)-7,10,16),conv((1<<48)-8,10,16),conv((1<<55)-9,10,16),conv((1<<56)-10,10,16),conv((1<<63)-11,10,16);
  18. #
  19. # In 3.23 we have to disable the test of column to bigint as
  20. # this fails on AIX powerpc (the resolution for double is not good enough)
  21. # This will work on 4.0 as we then have internal handling of bigint variables.
  22. #
  23. create table t1 (a bigint unsigned not null, primary key(a));
  24. insert into t1 values (18446744073709551615), (0xFFFFFFFFFFFFFFFE), (18446744073709551613), (18446744073709551612);
  25. select * from t1;
  26. select * from t1 where a=18446744073709551615;
  27. # select * from t1 where a='18446744073709551615';
  28. delete from t1 where a=18446744073709551615;
  29. select * from t1;
  30. drop table t1;
  31. create table t1 ( a int not null default 1, big bigint );
  32. insert into t1 (big) values (-1),(12345678901234567),(9223372036854775807),(18446744073709551615);
  33. select min(big),max(big),max(big)-1 from t1;
  34. select min(big),max(big),max(big)-1 from t1 group by a;
  35. alter table t1 modify big bigint unsigned not null;
  36. select min(big),max(big),max(big)-1 from t1;
  37. select min(big),max(big),max(big)-1 from t1 group by a;
  38. alter table t1 add key (big);
  39. select min(big),max(big),max(big)-1 from t1;
  40. select min(big),max(big),max(big)-1 from t1 group by a;
  41. alter table t1 modify big bigint not null;
  42. select min(big),max(big),max(big)-1 from t1;
  43. select min(big),max(big),max(big)-1 from t1 group by a;
  44. drop table t1;
  45. #
  46. # Test problem with big values fir auto_increment
  47. #
  48. create table t1 (id bigint auto_increment primary key, a int) auto_increment=9999999999;
  49. insert into t1 values (null,1);
  50. select * from t1;
  51. select * from t1 limit 9999999999;
  52. drop table t1;
  53. #
  54. # Item_uint::save_to_field()
  55. # BUG#1845
  56. # This can't be fixed in MySQL 4.0 without loosing precisions for bigints
  57. #
  58. CREATE TABLE t1 ( quantity decimal(60,0));
  59. insert into t1 values (10000000000000000000);
  60. insert into t1 values (10000000000000000000.0);
  61. insert into t1 values ('10000000000000000000');
  62. select * from t1;
  63. drop table t1;
  64. # atof() behaviour is different of different systems. to be fixed in 4.1
  65. SELECT '0x8000000000000001'+0;
  66. # Test for BUG#8562: joins over BIGINT UNSIGNED value + constant propagation
  67. create table t1 (
  68.  value64  bigint unsigned  not null,
  69.  value32  integer          not null,
  70.  primary key(value64, value32)
  71. );
  72. create table t2 (
  73.  value64  bigint unsigned  not null,
  74.  value32  integer          not null,
  75.  primary key(value64, value32)
  76. );
  77. insert into t1 values(17156792991891826145, 1);
  78. insert into t1 values( 9223372036854775807, 2);
  79. insert into t2 values(17156792991891826145, 3);
  80. insert into t2 values( 9223372036854775807, 4);
  81. select * from t1;
  82. select * from t2;
  83. select * from t1, t2 where t1.value64=17156792991891826145 and
  84. t2.value64=17156792991891826145;
  85. select * from t1, t2 where t1.value64=17156792991891826145 and
  86. t2.value64=t1.value64;
  87. select * from t1, t2 where t1.value64= 9223372036854775807 and
  88. t2.value64=9223372036854775807;
  89. select * from t1, t2 where t1.value64= 9223372036854775807 and
  90. t2.value64=t1.value64;
  91. drop table t1, t2;
  92. # End of 4.1 tests