diff options
author | Alexander Barkov <bar@mariadb.org> | 2017-10-06 13:25:20 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2017-10-06 13:29:29 +0400 |
commit | a659291e8543704ed7ee116758ca87a57e5c092f (patch) | |
tree | 82759ed83d995d38872807b180013c268c052262 /sql | |
parent | 3557de68d14eb3d5f8808933a4f52b6ca8f9a005 (diff) | |
download | mariadb-git-a659291e8543704ed7ee116758ca87a57e5c092f.tar.gz |
MDEV-11586 UNION of FLOAT type results in erroneous precision
Fixing the asymmetry in the array field_types_merge_rules[][]
which caused data loss when mixing FLOAT + BIGINT in UNIONs
or hybrid functions:
1. FLOAT + INT = DOUBLE
2. FLOAT + BIGINT = FLOAT
3. INT + FLOAT = DOUBLE
4. BIGINT + FLOAT = DOUBLE
Now FLOAT + BIGINT (as in #2) also produces DOUBLE, like the cases #1,#3,#4 do.
Diffstat (limited to 'sql')
-rw-r--r-- | sql/field.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sql/field.cc b/sql/field.cc index 3a16f408fa3..c9cf3c3dcb2 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -231,7 +231,7 @@ static enum_field_types field_types_merge_rules [FIELDTYPE_NUM][FIELDTYPE_NUM]= //MYSQL_TYPE_NULL MYSQL_TYPE_TIMESTAMP MYSQL_TYPE_FLOAT, MYSQL_TYPE_VARCHAR, //MYSQL_TYPE_LONGLONG MYSQL_TYPE_INT24 - MYSQL_TYPE_FLOAT, MYSQL_TYPE_FLOAT, + MYSQL_TYPE_DOUBLE, MYSQL_TYPE_FLOAT, //MYSQL_TYPE_DATE MYSQL_TYPE_TIME MYSQL_TYPE_VARCHAR, MYSQL_TYPE_VARCHAR, //MYSQL_TYPE_DATETIME MYSQL_TYPE_YEAR |