summaryrefslogtreecommitdiff
path: root/sql/item_func.h
diff options
context:
space:
mode:
authorChaithra Gopalareddy <chaithra.gopalareddy@oracle.com>2013-01-31 07:06:30 +0530
committerChaithra Gopalareddy <chaithra.gopalareddy@oracle.com>2013-01-31 07:06:30 +0530
commitdbd25312fea9cabf6542fb938d9b163114cab0fd (patch)
tree1f2823b8fb0a8f32272d481872e4c058ae82e5d0 /sql/item_func.h
parentd92a7cb76a6d7c9b53334152abfa8ee93e8fd171 (diff)
parente1ee9581cb4a4cac085d0ad6eedadb73de187deb (diff)
downloadmariadb-git-dbd25312fea9cabf6542fb938d9b163114cab0fd.tar.gz
Bug#14096619: UNABLE TO RESTORE DATABASE DUMP
Backport of fix for Bug#13581962 mysql-test/r/cast.result: Added test result for Bug#13581962,Bug#14096619 mysql-test/r/ctype_utf8mb4.result: Added test result for Bug#13581962,Bug#14096619 mysql-test/t/cast.test: Added test case for Bug#13581962,Bug#14096619 mysql-test/t/ctype_utf8mb4.test: Added test case for Bug#13581962,Bug#14096619 sql/item_func.h: limit max length by MY_INT64_NUM_DECIMAL_DIGITS
Diffstat (limited to 'sql/item_func.h')
-rw-r--r--sql/item_func.h19
1 files changed, 11 insertions, 8 deletions
diff --git a/sql/item_func.h b/sql/item_func.h
index b897dcfaaaa..49e99f7194b 100644
--- a/sql/item_func.h
+++ b/sql/item_func.h
@@ -480,12 +480,18 @@ public:
class Item_func_signed :public Item_int_func
{
public:
- Item_func_signed(Item *a) :Item_int_func(a) {}
+ Item_func_signed(Item *a) :Item_int_func(a)
+ {
+ unsigned_flag= 0;
+ }
const char *func_name() const { return "cast_as_signed"; }
longlong val_int();
longlong val_int_from_str(int *error);
void fix_length_and_dec()
- { fix_char_length(args[0]->max_char_length()); unsigned_flag=0; }
+ {
+ fix_char_length(min(args[0]->max_char_length(),
+ MY_INT64_NUM_DECIMAL_DIGITS));
+ }
virtual void print(String *str, enum_query_type query_type);
uint decimal_precision() const { return args[0]->decimal_precision(); }
};
@@ -494,14 +500,11 @@ public:
class Item_func_unsigned :public Item_func_signed
{
public:
- Item_func_unsigned(Item *a) :Item_func_signed(a) {}
- const char *func_name() const { return "cast_as_unsigned"; }
- void fix_length_and_dec()
+ Item_func_unsigned(Item *a) :Item_func_signed(a)
{
- fix_char_length(min(args[0]->max_char_length(),
- DECIMAL_MAX_PRECISION + 2));
- unsigned_flag=1;
+ unsigned_flag= 1;
}
+ const char *func_name() const { return "cast_as_unsigned"; }
longlong val_int();
virtual void print(String *str, enum_query_type query_type);
};