summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Elkin <aelkin@mysql.com>2008-12-08 16:29:13 +0200
committerAndrei Elkin <aelkin@mysql.com>2008-12-08 16:29:13 +0200
commitf3d347cfba52f69a3125b27066a7357be0ffc05b (patch)
tree0de385e74b751c121550638b36dfafcdd918a4c5
parent6d717c21e7588e38812537ce11e636d3e4a5cd6b (diff)
parent72ba535c37fd1ec4a41491262731ab37a982c1b8 (diff)
downloadmariadb-git-f3d347cfba52f69a3125b27066a7357be0ffc05b.tar.gz
merge 5.0->5.0-bugteam for a local tree containing bug#33420 Test 'rpl_packet' fails randomly.
-rw-r--r--.bzr-mysql/default.conf2
-rw-r--r--include/config-win.h9
-rw-r--r--include/my_global.h3
-rw-r--r--mysql-test/r/type_float.result13
-rw-r--r--mysql-test/t/type_float.test17
5 files changed, 43 insertions, 1 deletions
diff --git a/.bzr-mysql/default.conf b/.bzr-mysql/default.conf
index f79c1cd6319..557df1b1ffe 100644
--- a/.bzr-mysql/default.conf
+++ b/.bzr-mysql/default.conf
@@ -1,4 +1,4 @@
[MYSQL]
post_commit_to = "commits@lists.mysql.com"
post_push_to = "commits@lists.mysql.com"
-tree_name = "mysql-5.0"
+tree_name = "mysql-5.0-bugteam"
diff --git a/include/config-win.h b/include/config-win.h
index 2628095a181..eba699159c7 100644
--- a/include/config-win.h
+++ b/include/config-win.h
@@ -245,6 +245,15 @@ inline double ulonglong2double(ulonglong value)
#define my_off_t2double(A) ulonglong2double(A)
#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
#define lseek(A,B,C) _lseeki64((A),(longlong) (B),(C))
#define tell(A) _telli64(A)
diff --git a/include/my_global.h b/include/my_global.h
index e474b620d27..845ae042a42 100644
--- a/include/my_global.h
+++ b/include/my_global.h
@@ -713,6 +713,9 @@ typedef SOCKET_SIZE_TYPE size_socket;
#define ulonglong2double(A) ((double) (ulonglong) (A))
#define my_off_t2double(A) ((double) (my_off_t) (A))
#endif
+#ifndef double2ulonglong
+#define double2ulonglong(A) ((ulonglong) (double) (A))
+#endif
#endif
#ifndef offsetof
diff --git a/mysql-test/r/type_float.result b/mysql-test/r/type_float.result
index f1075604ca9..e7f17bd75a7 100644
--- a/mysql-test/r/type_float.result
+++ b/mysql-test/r/type_float.result
@@ -392,4 +392,17 @@ f1 + 0e0
1.0000000150475e+30
-1.0000000150475e+30
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
diff --git a/mysql-test/t/type_float.test b/mysql-test/t/type_float.test
index 9aa8c00d24a..b23755b44fb 100644
--- a/mysql-test/t/type_float.test
+++ b/mysql-test/t/type_float.test
@@ -252,4 +252,21 @@ insert into t1 values (2e30), (-2e30);
select f1 + 0e0 from 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