diff options
author | unknown <rburnett@bk-internal.mysql.com> | 2006-08-17 22:30:32 +0200 |
---|---|---|
committer | unknown <rburnett@bk-internal.mysql.com> | 2006-08-17 22:30:32 +0200 |
commit | eda1afe22209c838475abca464f11755f6e73df0 (patch) | |
tree | d2d9102e20068e358bfb5117ae4b4f668c489147 /sql/item_create.cc | |
parent | 62af392e62de554b8943697fe42962e56a9f4aaa (diff) | |
parent | 703717c705594592be0bce8b160aeec0ec1d51ba (diff) | |
download | mariadb-git-eda1afe22209c838475abca464f11755f6e73df0.tar.gz |
Merge bk-internal.mysql.com:/data0/bk/mysql-5.1
into bk-internal.mysql.com:/data0/bk/mysql-5.1-kt
mysql-test/r/type_newdecimal.result:
Auto merged
mysql-test/t/type_newdecimal.test:
Auto merged
Diffstat (limited to 'sql/item_create.cc')
-rw-r--r-- | sql/item_create.cc | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/sql/item_create.cc b/sql/item_create.cc index e02ba384717..3a93ec6e516 100644 --- a/sql/item_create.cc +++ b/sql/item_create.cc @@ -454,6 +454,8 @@ Item *create_func_cast(Item *a, Cast_target cast_type, int len, int dec, CHARSET_INFO *cs) { Item *res; + int tmp_len; + LINT_INIT(res); switch (cast_type) { case ITEM_CAST_BINARY: res= new Item_func_binary(a); break; @@ -463,7 +465,13 @@ Item *create_func_cast(Item *a, Cast_target cast_type, int len, int dec, case ITEM_CAST_TIME: res= new Item_time_typecast(a); break; case ITEM_CAST_DATETIME: res= new Item_datetime_typecast(a); break; case ITEM_CAST_DECIMAL: - res= new Item_decimal_typecast(a, (len > 0) ? len : 10, dec); + tmp_len= (len>0) ? len : 10; + if (tmp_len < dec) + { + my_error(ER_M_BIGGER_THAN_D, MYF(0), ""); + return 0; + } + res= new Item_decimal_typecast(a, tmp_len, dec); break; case ITEM_CAST_CHAR: res= new Item_char_typecast(a, len, cs ? cs : |