Commit 082ac987 authored by Chaithra Gopalareddy's avatar Chaithra Gopalareddy

Bug#14096619: UNABLE TO RESTORE DATABASE DUMP

Backport of Bug#13581962
parent 08b0d549
...@@ -477,4 +477,22 @@ WHERE CAST(a as BINARY)=x'62736D697468' ...@@ -477,4 +477,22 @@ WHERE CAST(a as BINARY)=x'62736D697468'
AND CAST(a AS BINARY)=x'65736D697468'; AND CAST(a AS BINARY)=x'65736D697468';
a a
DROP TABLE t1; DROP TABLE t1;
#
# Bug#13581962 HIGH MEMORY USAGE ATTEMPT, THEN CRASH WITH
# LONGTEXT, UNION, USER VARIABLE
# Bug#14096619 UNABLE TO RESTORE DATABASE DUMP
#
CREATE TABLE t1 AS SELECT CONCAT(CAST(REPEAT('9', 1000) AS SIGNED)),
CONCAT(CAST(REPEAT('9', 1000) AS UNSIGNED));
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'
Warning 1292 Truncated incorrect INTEGER value: '99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999'
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`CONCAT(CAST(REPEAT('9', 1000) AS SIGNED))` varbinary(21) NOT NULL DEFAULT '',
`CONCAT(CAST(REPEAT('9', 1000) AS UNSIGNED))` varbinary(21) NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
# End of test for Bug#13581962, Bug#14096619
End of 5.1 tests End of 5.1 tests
...@@ -309,4 +309,17 @@ WHERE CAST(a as BINARY)=x'62736D697468' ...@@ -309,4 +309,17 @@ WHERE CAST(a as BINARY)=x'62736D697468'
DROP TABLE t1; DROP TABLE t1;
--echo #
--echo # Bug#13581962 HIGH MEMORY USAGE ATTEMPT, THEN CRASH WITH
--echo # LONGTEXT, UNION, USER VARIABLE
--echo # Bug#14096619 UNABLE TO RESTORE DATABASE DUMP
--echo #
CREATE TABLE t1 AS SELECT CONCAT(CAST(REPEAT('9', 1000) AS SIGNED)),
CONCAT(CAST(REPEAT('9', 1000) AS UNSIGNED));
SHOW CREATE TABLE t1;
DROP TABLE t1;
--echo # End of test for Bug#13581962, Bug#14096619
--echo End of 5.1 tests --echo End of 5.1 tests
...@@ -403,12 +403,17 @@ public: ...@@ -403,12 +403,17 @@ public:
class Item_func_signed :public Item_int_func class Item_func_signed :public Item_int_func
{ {
public: 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"; } const char *func_name() const { return "cast_as_signed"; }
longlong val_int(); longlong val_int();
longlong val_int_from_str(int *error); longlong val_int_from_str(int *error);
void fix_length_and_dec() void fix_length_and_dec()
{ max_length=args[0]->max_length; unsigned_flag=0; } {
max_length= min(args[0]->max_length,MY_INT64_NUM_DECIMAL_DIGITS);
}
virtual void print(String *str, enum_query_type query_type); virtual void print(String *str, enum_query_type query_type);
uint decimal_precision() const { return args[0]->decimal_precision(); } uint decimal_precision() const { return args[0]->decimal_precision(); }
}; };
...@@ -417,13 +422,11 @@ public: ...@@ -417,13 +422,11 @@ public:
class Item_func_unsigned :public Item_func_signed class Item_func_unsigned :public Item_func_signed
{ {
public: public:
Item_func_unsigned(Item *a) :Item_func_signed(a) {} Item_func_unsigned(Item *a) :Item_func_signed(a)
const char *func_name() const { return "cast_as_unsigned"; }
void fix_length_and_dec()
{ {
max_length= min(args[0]->max_length, DECIMAL_MAX_PRECISION + 2); unsigned_flag= 1;
unsigned_flag=1;
} }
const char *func_name() const { return "cast_as_unsigned"; }
longlong val_int(); longlong val_int();
virtual void print(String *str, enum_query_type query_type); virtual void print(String *str, enum_query_type query_type);
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment