Loading mysql-test/r/type_newdecimal.result +5 −0 Original line number Diff line number Diff line Loading @@ -1420,3 +1420,8 @@ f1 20101112000000.000014 101112.000000 drop table t1; select cast(19999999999999999999 as unsigned); cast(19999999999999999999 as unsigned) 18446744073709551615 Warnings: Error 1292 Truncated incorrect DECIMAL value: '' mysql-test/t/type_newdecimal.test +5 −1 Original line number Diff line number Diff line Loading @@ -1109,10 +1109,14 @@ select i, count(distinct j) from t1 group by i; select i+0.0 as i2, count(distinct j) from t1 group by i2; drop table t1; create table t1(f1 decimal(20,6)); insert into t1 values (CAST('10:11:12' AS date) + interval 14 microsecond); insert into t1 values (CAST('10:11:12' AS time)); select * from t1; drop table t1; # # Bug #8663 (cant use bigint as input to CAST) # select cast(19999999999999999999 as unsigned); sql/item_func.cc +8 −1 Original line number Diff line number Diff line Loading @@ -964,7 +964,14 @@ longlong Item_func_unsigned::val_int() longlong value; int error; if (args[0]->cast_to_int_type() != STRING_RESULT) if (args[0]->cast_to_int_type() == DECIMAL_RESULT) { my_decimal tmp, *dec= args[0]->val_decimal(&tmp); if (!(null_value= args[0]->null_value)) my_decimal2int(E_DEC_FATAL_ERROR, dec, 1, &value); return value; } else if (args[0]->cast_to_int_type() != STRING_RESULT) { value= args[0]->val_int(); null_value= args[0]->null_value; Loading strings/decimal.c +1 −1 Original line number Diff line number Diff line Loading @@ -1036,7 +1036,7 @@ int decimal2ulonglong(decimal_t *from, ulonglong *to) x=x*DIG_BASE + *buf++; if (unlikely(y > ((ulonglong) ULONGLONG_MAX/DIG_BASE) || x < y)) { *to=y; *to=ULONGLONG_MAX; return E_DEC_OVERFLOW; } } Loading Loading
mysql-test/r/type_newdecimal.result +5 −0 Original line number Diff line number Diff line Loading @@ -1420,3 +1420,8 @@ f1 20101112000000.000014 101112.000000 drop table t1; select cast(19999999999999999999 as unsigned); cast(19999999999999999999 as unsigned) 18446744073709551615 Warnings: Error 1292 Truncated incorrect DECIMAL value: ''
mysql-test/t/type_newdecimal.test +5 −1 Original line number Diff line number Diff line Loading @@ -1109,10 +1109,14 @@ select i, count(distinct j) from t1 group by i; select i+0.0 as i2, count(distinct j) from t1 group by i2; drop table t1; create table t1(f1 decimal(20,6)); insert into t1 values (CAST('10:11:12' AS date) + interval 14 microsecond); insert into t1 values (CAST('10:11:12' AS time)); select * from t1; drop table t1; # # Bug #8663 (cant use bigint as input to CAST) # select cast(19999999999999999999 as unsigned);
sql/item_func.cc +8 −1 Original line number Diff line number Diff line Loading @@ -964,7 +964,14 @@ longlong Item_func_unsigned::val_int() longlong value; int error; if (args[0]->cast_to_int_type() != STRING_RESULT) if (args[0]->cast_to_int_type() == DECIMAL_RESULT) { my_decimal tmp, *dec= args[0]->val_decimal(&tmp); if (!(null_value= args[0]->null_value)) my_decimal2int(E_DEC_FATAL_ERROR, dec, 1, &value); return value; } else if (args[0]->cast_to_int_type() != STRING_RESULT) { value= args[0]->val_int(); null_value= args[0]->null_value; Loading
strings/decimal.c +1 −1 Original line number Diff line number Diff line Loading @@ -1036,7 +1036,7 @@ int decimal2ulonglong(decimal_t *from, ulonglong *to) x=x*DIG_BASE + *buf++; if (unlikely(y > ((ulonglong) ULONGLONG_MAX/DIG_BASE) || x < y)) { *to=y; *to=ULONGLONG_MAX; return E_DEC_OVERFLOW; } } Loading