summaryrefslogtreecommitdiff
path: root/sql/item_create.cc
diff options
context:
space:
mode:
authorunknown <ibabaev@bk-internal.mysql.com>2007-05-12 23:42:36 +0200
committerunknown <ibabaev@bk-internal.mysql.com>2007-05-12 23:42:36 +0200
commitde34385a565a07536f314813e02f63aec1d0f369 (patch)
tree59d9e31c78caca8be26a8746fa5e83ac54aabb1a /sql/item_create.cc
parent0f6e518a3ba975d84ef192ee295bf330368855b3 (diff)
parent3d501aece0f68183d0a74aa37d0938ccd91733ac (diff)
downloadmariadb-git-clone-5.0.42-build.tar.gz
Merge bk-internal.mysql.com:/data0/bk/mysql-5.0clone-5.0.42-build
into bk-internal.mysql.com:/data0/bk/mysql-5.0-opt
Diffstat (limited to 'sql/item_create.cc')
-rw-r--r--sql/item_create.cc16
1 files changed, 11 insertions, 5 deletions
diff --git a/sql/item_create.cc b/sql/item_create.cc
index c1a81da0285..c4008d36aae 100644
--- a/sql/item_create.cc
+++ b/sql/item_create.cc
@@ -445,11 +445,13 @@ Item *create_load_file(Item* a)
}
-Item *create_func_cast(Item *a, Cast_target cast_type, int len, int dec,
+Item *create_func_cast(Item *a, Cast_target cast_type,
+ const char *c_len, const char *c_dec,
CHARSET_INFO *cs)
{
Item *res;
- int tmp_len;
+ ulong len;
+ uint dec;
LINT_INIT(res);
switch (cast_type) {
@@ -460,15 +462,18 @@ 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:
- tmp_len= (len>0) ? len : 10;
- if (tmp_len < dec)
+ len= c_len ? atoi(c_len) : 0;
+ dec= c_dec ? atoi(c_dec) : 0;
+ my_decimal_trim(&len, &dec);
+ if (len < dec)
{
my_error(ER_M_BIGGER_THAN_D, MYF(0), "");
return 0;
}
- res= new Item_decimal_typecast(a, tmp_len, dec ? dec : 2);
+ res= new Item_decimal_typecast(a, len, dec);
break;
case ITEM_CAST_CHAR:
+ len= c_len ? atoi(c_len) : -1;
res= new Item_char_typecast(a, len, cs ? cs :
current_thd->variables.collation_connection);
break;
@@ -476,6 +481,7 @@ Item *create_func_cast(Item *a, Cast_target cast_type, int len, int dec,
return res;
}
+
Item *create_func_is_free_lock(Item* a)
{
current_thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT);