Commit f28538e8 authored by Alexey Kopytov's avatar Alexey Kopytov

Merge from mysql-5.0-bugteam to mysql-5.1-bugteam.

parents 7faad2a1 7aa1074c
...@@ -250,6 +250,15 @@ inline double ulonglong2double(ulonglong value) ...@@ -250,6 +250,15 @@ inline double ulonglong2double(ulonglong value)
#define my_off_t2double(A) ulonglong2double(A) #define my_off_t2double(A) ulonglong2double(A)
#endif /* _WIN64 */ #endif /* _WIN64 */
inline ulonglong double2ulonglong(double d)
{
double t= d - (double) 0x8000000000000000ULL;
if (t >= 0)
return ((ulonglong) t) + 0x8000000000000000ULL;
return (ulonglong) d;
}
#if SIZEOF_OFF_T > 4 #if SIZEOF_OFF_T > 4
#define lseek(A,B,C) _lseeki64((A),(longlong) (B),(C)) #define lseek(A,B,C) _lseeki64((A),(longlong) (B),(C))
#define tell(A) _telli64(A) #define tell(A) _telli64(A)
......
...@@ -789,6 +789,9 @@ typedef SOCKET_SIZE_TYPE size_socket; ...@@ -789,6 +789,9 @@ typedef SOCKET_SIZE_TYPE size_socket;
#define ulonglong2double(A) ((double) (ulonglong) (A)) #define ulonglong2double(A) ((double) (ulonglong) (A))
#define my_off_t2double(A) ((double) (my_off_t) (A)) #define my_off_t2double(A) ((double) (my_off_t) (A))
#endif #endif
#ifndef double2ulonglong
#define double2ulonglong(A) ((ulonglong) (double) (A))
#endif
#endif #endif
#ifndef offsetof #ifndef offsetof
......
...@@ -392,4 +392,17 @@ f1 + 0e0 ...@@ -392,4 +392,17 @@ f1 + 0e0
1.0000000150475e+30 1.0000000150475e+30
-1.0000000150475e+30 -1.0000000150475e+30
drop table t1; drop table t1;
create table t1(d double, u bigint unsigned);
insert into t1(d) values (9.2233720368547777e+18),
(9.223372036854779e18),
(9.22337203685479e18),
(1.84e19);
update t1 set u = d;
select * from t1;
d u
9.22337203685478e+18 9223372036854775808
9.22337203685478e+18 9223372036854779904
9.22337203685479e+18 9223372036854790144
1.84e+19 18400000000000000000
drop table t1;
End of 5.0 tests End of 5.0 tests
...@@ -252,4 +252,21 @@ insert into t1 values (2e30), (-2e30); ...@@ -252,4 +252,21 @@ insert into t1 values (2e30), (-2e30);
select f1 + 0e0 from t1; select f1 + 0e0 from t1;
drop table t1; drop table t1;
#
# Bug #27483: Casting 'scientific notation type' to 'unsigned bigint' fails on
# windows.
#
create table t1(d double, u bigint unsigned);
insert into t1(d) values (9.2233720368547777e+18),
(9.223372036854779e18),
(9.22337203685479e18),
(1.84e19);
update t1 set u = d;
select * from t1;
drop table t1;
--echo End of 5.0 tests --echo End of 5.0 tests
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment