summaryrefslogtreecommitdiff
path: root/sql/item_create.cc
diff options
context:
space:
mode:
authorunknown <rburnett@bk-internal.mysql.com>2006-08-17 22:30:32 +0200
committerunknown <rburnett@bk-internal.mysql.com>2006-08-17 22:30:32 +0200
commiteda1afe22209c838475abca464f11755f6e73df0 (patch)
treed2d9102e20068e358bfb5117ae4b4f668c489147 /sql/item_create.cc
parent62af392e62de554b8943697fe42962e56a9f4aaa (diff)
parent703717c705594592be0bce8b160aeec0ec1d51ba (diff)
downloadmariadb-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.cc10
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 :