1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +03:00

Backport of WL #2934: Make/find library for doing float/double

to string conversions and vice versa" 
Initial import of the dtoa.c code and custom wrappers around it 
to allow its usage from the server code. 
 
Conversion of FLOAT/DOUBLE values to DECIMAL ones or strings 
and vice versa has been significantly reworked. As the new 
algoritms are more precise than the older ones, results of such 
conversions may not always match those obtained from older 
server versions. This in turn may break compatibility for some 
applications. 
 
This patch also fixes the following bugs: 
- bug #12860 "Difference in zero padding of exponent between 
Unix and Windows" 
- bug #21497 "DOUBLE truncated to unusable value" 
- bug #26788 "mysqld (debug) aborts when inserting specific 
numbers into char fields" 
- bug #24541 "Data truncated..." on decimal type columns 
without any good reason"
This commit is contained in:
Alexey Kopytov
2009-12-22 19:23:13 +03:00
parent d4f23f0cf6
commit 12f364ece7
58 changed files with 3526 additions and 1159 deletions

View File

@ -2568,10 +2568,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
c7 9.22337e+18
c8 9.22337203685478e+18
c9 9.22337203685478e+18
c10 9.22337203685478e+18
c7 9.22337e18
c8 9.223372036854776e18
c9 9.223372036854776e18
c10 9.223372036854776e18
c12 9999.9999
execute my_delete ;
set @arg00= '9223372036854775807' ;
@ -2591,10 +2591,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
c7 9.22337e+18
c8 9.22337203685478e+18
c9 9.22337203685478e+18
c10 9.22337203685478e+18
c7 9.22337e18
c8 9.223372036854776e18
c9 9.223372036854776e18
c10 9.223372036854776e18
c12 9999.9999
execute my_delete ;
set @arg00= -9223372036854775808 ;
@ -2614,10 +2614,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
c7 -9.22337e+18
c8 -9.22337203685478e+18
c9 -9.22337203685478e+18
c10 -9.22337203685478e+18
c7 -9.22337e18
c8 -9.223372036854776e18
c9 -9.223372036854776e18
c10 -9.223372036854776e18
c12 -9999.9999
execute my_delete ;
set @arg00= '-9223372036854775808' ;
@ -2637,10 +2637,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
c7 -9.22337e+18
c8 -9.22337203685478e+18
c9 -9.22337203685478e+18
c10 -9.22337203685478e+18
c7 -9.22337e18
c8 -9.223372036854776e18
c9 -9.223372036854776e18
c10 -9.223372036854776e18
c12 -9999.9999
execute my_delete ;
set @arg00= 1.11111111111111111111e+50 ;
@ -2662,10 +2662,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
c7 3.40282e+38
c8 1.11111111111111e+50
c9 1.11111111111111e+50
c10 1.11111111111111e+50
c7 3.40282e38
c8 1.111111111111111e50
c9 1.111111111111111e50
c10 1.111111111111111e50
c12 9999.9999
execute my_delete ;
set @arg00= '1.11111111111111111111e+50' ;
@ -2687,10 +2687,10 @@ c3 8388607
c4 2147483647
c5 2147483647
c6 9223372036854775807
c7 3.40282e+38
c8 1.11111111111111e+50
c9 1.11111111111111e+50
c10 1.11111111111111e+50
c7 3.40282e38
c8 1.111111111111111e50
c9 1.111111111111111e50
c10 1.111111111111111e50
c12 9999.9999
execute my_delete ;
set @arg00= -1.11111111111111111111e+50 ;
@ -2712,10 +2712,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
c7 -3.40282e+38
c8 -1.11111111111111e+50
c9 -1.11111111111111e+50
c10 -1.11111111111111e+50
c7 -3.40282e38
c8 -1.111111111111111e50
c9 -1.111111111111111e50
c10 -1.111111111111111e50
c12 -9999.9999
execute my_delete ;
set @arg00= '-1.11111111111111111111e+50' ;
@ -2737,10 +2737,10 @@ c3 -8388608
c4 -2147483648
c5 -2147483648
c6 -9223372036854775808
c7 -3.40282e+38
c8 -1.11111111111111e+50
c9 -1.11111111111111e+50
c10 -1.11111111111111e+50
c7 -3.40282e38
c8 -1.111111111111111e50
c9 -1.111111111111111e50
c10 -1.111111111111111e50
c12 -9999.9999
execute my_delete ;
test_sequence
@ -2805,10 +2805,10 @@ c1 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30
51 5 51.0 51.0 51.0 51.0 51.0 51.0 51.0 51.0 51.0 51.0
52 5 52.0 52.0 52.0 52.0 52.0 52.0 52.0 52.0 52.0 52.0
53 5 53.0 53.0 53.0 53.0 53.0 53.0 53.0 53.0 53.0 53.0
54 5 54 54 54.00 54.00 54.00 54.00 54.00 54.00 54.00 54.00
55 5 55 55 55 55 55 55 55 55 55 55
56 6 56 56 56.00 56.00 56.00 56.00 56.00 56.00 56.00 56.00
57 6 57 57 57.00 57.00 57.00 57.00 57.00 57.00 57.00 57.00
54 5 54 54 54 54 54 54 54 54 54 54
55 6 55 55 55 55 55 55 55 55 55 55
56 6 56 56 56 56 56 56 56 56 56 56
57 6 57 57 57 57 57 57 57 57 57 57
60 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
61 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
62 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
@ -3022,7 +3022,7 @@ c1 c13 c14 c15 c16 c17
42 0000-00-00 0000-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
43 0000-00-00 0000-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
50 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
51 2010-00-00 2010-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
51 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
52 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
53 2001-00-00 2001-00-00 00:00:00 0000-00-00 00:00:00 838:59:59 0000
60 NULL NULL 1991-01-01 01:01:01 NULL NULL