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

MySQL数据库

开发平台:

Visual C++

  1. # Description
  2. # -----------
  3. # Numeric floating point.
  4. --disable_warnings
  5. drop table if exists t1,t2;
  6. --enable_warnings
  7. --replace_result e-0 e- e+0 e+
  8. SELECT 10,10.0,10.,.1e+2,100.0e-1;
  9. --replace_result e-00 e-0 
  10. SELECT 6e-05, -6e-05, --6e-05, -6e-05+1.000000;
  11. SELECT 1e1,1.e1,1.0e1,1e+1,1.e+1,1.0e+1,1e-1,1.e-1,1.0e-1;
  12. SELECT 0.001e+1,0.001e-1, -0.001e+01,-0.001e-01;
  13. SELECT 123.23E+02,-123.23E-02,"123.23E+02"+0.0,"-123.23E-02"+0.0;
  14. SELECT 2147483647E+02,21474836.47E+06;
  15. create table t1 (f1 float(24),f2 float(52));
  16. # We mask out Privileges column because it differs for embedded server
  17. --replace_column 8 #
  18. show full columns from t1;
  19. insert into t1 values(10,10),(1e+5,1e+5),(1234567890,1234567890),(1e+10,1e+10),(1e+15,1e+15),(1e+20,1e+20),(1e+50,1e+50),(1e+150,1e+150);
  20. insert into t1 values(-10,-10),(1e-5,1e-5),(1e-10,1e-10),(1e-15,1e-15),(1e-20,1e-20),(1e-50,1e-50),(1e-150,1e-150);
  21. --replace_result e-0 e- e+0 e+
  22. select * from t1;
  23. drop table t1;
  24. create table t1 (datum double);
  25. insert into t1 values (0.5),(1.0),(1.5),(2.0),(2.5);
  26. select * from t1;
  27. select * from t1 where datum < 1.5;
  28. select * from t1 where datum > 1.5;
  29. select * from t1 where datum = 1.5;
  30. drop table t1;
  31. create table t1 (a  decimal(7,3) not null, key (a));
  32. insert into t1 values ("0"),("-0.00"),("-0.01"),("-0.002"),("1");
  33. select a from t1 order by a;
  34. select min(a) from t1;
  35. drop table t1;
  36. #
  37. # BUG#3612, BUG#4393, BUG#4356, BUG#4394
  38. #
  39. create table t1 (c1 double, c2 varchar(20));
  40. insert t1 values (121,"16");
  41. select c1 + c1 * (c2 / 100) as col from t1;
  42. create table t2 select c1 + c1 * (c2 / 100) as col1, round(c1, 5) as col2, round(c1, 35) as col3, sqrt(c1*1e-15) col4 from t1;
  43. # Floats are a bit different in PS
  44. --disable_ps_protocol
  45. select * from t2;
  46. --enable_ps_protocol
  47. show create table t2;
  48. drop table t1,t2;
  49. # Bug #1022: When a table contains a 'float' field, 
  50. # and one of the functions MAX, MIN, or AVG is used on that field,
  51. # the system crashes.
  52. create table t1 (a float);
  53. insert into t1 values (1);
  54. select max(a),min(a),avg(a) from t1;
  55. drop table t1;
  56. #
  57. # FLOAT/DOUBLE/DECIMAL handling
  58. #
  59. create table t1 (f float, f2 float(24), f3 float(6,2), d double, d2 float(53), d3 double(10,3), de decimal, de2 decimal(6), de3 decimal(5,2), n numeric, n2 numeric(8), n3 numeric(5,6));
  60. # We mask out Privileges column because it differs for embedded server
  61. --replace_column 8 #
  62. show full columns from t1;
  63. drop table t1;
  64. create table t1 (a  decimal(7,3) not null, key (a));
  65. insert into t1 values ("0"),("-0.00"),("-0.01"),("-0.002"),("1");
  66. select a from t1 order by a;
  67. select min(a) from t1;
  68. drop table t1;
  69. create table t1 (a float(200,100), b double(200,100));
  70. insert t1 values (1.0, 2.0);
  71. select * from t1;
  72. show create table t1;
  73. drop table t1;
  74. #
  75. # float in a char(1) field
  76. #
  77. create table t1 (c20 char);
  78. insert into t1 values (5000.0);
  79. insert into t1 values (0.5e4);
  80. drop table t1;
  81. # Errors
  82. --error 1063
  83. create table t1 (f float(54)); # Should give an error
  84. --disable_warnings
  85. drop table if exists t1;
  86. --enable_warnings
  87. # Don't allow 'double unsigned' to be set to a negative value (Bug #7700)
  88. create table t1 (d1 double, d2 double unsigned);
  89. insert into t1 set d1 = -1.0;
  90. update t1 set d2 = d1;
  91. select * from t1;
  92. drop table t1;
  93. # Ensure that maximum values as the result of number of decimals
  94. # being specified in table schema are enforced (Bug #7361)
  95. create table t1 (f float(4,3));
  96. insert into t1 values (-11.0),(-11),("-11"),(11.0),(11),("11");
  97. select * from t1;
  98. drop table if exists t1;
  99. create table t1 (f double(4,3));
  100. insert into t1 values (-11.0),(-11),("-11"),(11.0),(11),("11");
  101. select * from t1;
  102. drop table if exists t1;
  103. # Check conversion of floats to character field (Bug #7774)
  104. create table t1 (c char(20));
  105. insert into t1 values (5e-28);
  106. select * from t1;
  107. drop table t1;
  108. create table t1 (c char(6));
  109. insert into t1 values (2e5),(2e6),(2e-4),(2e-5);
  110. select * from t1;
  111. drop table t1;
  112. #
  113. # Test of comparison of integer with float-in-range (Bug #7840)
  114. # This is needed because some ODBC applications (like Foxpro) uses
  115. # floats for everything.
  116. #
  117. CREATE TABLE t1 (
  118.   reckey int unsigned NOT NULL,
  119.   recdesc varchar(50) NOT NULL,
  120.   PRIMARY KEY  (reckey)
  121. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  122. INSERT INTO t1 VALUES (108, 'Has 108 as key');
  123. INSERT INTO t1 VALUES (109, 'Has 109 as key');
  124. select * from t1 where reckey=108;
  125. select * from t1 where reckey=1.08E2;
  126. select * from t1 where reckey=109;
  127. select * from t1 where reckey=1.09E2;
  128. drop table t1;
  129. #
  130. # Bug #13372 (decimal union)
  131. #
  132. create table t1 (d double(10,1));
  133. create table t2 (d double(10,9));
  134. insert into t1 values ("100000000.0");
  135. insert into t2 values ("1.23456780");
  136. create table t3 select * from t2 union select * from t1;
  137. select * from t3;
  138. show create table t3;
  139. drop table t1, t2, t3;
  140. # End of 4.1 tests