Commit 5bff13bc authored by hf@deer.(none)'s avatar hf@deer.(none)

Merging

parents 84d9b862 eb67909b
...@@ -317,4 +317,5 @@ ...@@ -317,4 +317,5 @@
#define ER_UNKNOWN_TIME_ZONE 1298 #define ER_UNKNOWN_TIME_ZONE 1298
#define ER_WARN_INVALID_TIMESTAMP 1299 #define ER_WARN_INVALID_TIMESTAMP 1299
#define ER_INVALID_CHARACTER_STRING 1300 #define ER_INVALID_CHARACTER_STRING 1300
#define ER_ERROR_MESSAGES 301 #define ER_WARN_ALLOWED_PACKET_OVERFLOWED 1301
#define ER_ERROR_MESSAGES 302
...@@ -225,6 +225,8 @@ substring_index("www.tcx.se","",3) ...@@ -225,6 +225,8 @@ substring_index("www.tcx.se","",3)
select length(repeat("a",100000000)),length(repeat("a",1000*64)); select length(repeat("a",100000000)),length(repeat("a",1000*64));
length(repeat("a",100000000)) length(repeat("a",1000*64)) length(repeat("a",100000000)) length(repeat("a",1000*64))
NULL 64000 NULL 64000
Warnings:
Warning 1300 Data truncated by function 'repeat' do to max_allowed_packet
select position("0" in "baaa" in (1)),position("0" in "1" in (1,2,3)),position("sql" in ("mysql")); select position("0" in "baaa" in (1)),position("0" in "1" in (1,2,3)),position("sql" in ("mysql"));
position("0" in "baaa" in (1)) position("0" in "1" in (1,2,3)) position("sql" in ("mysql")) position("0" in "baaa" in (1)) position("0" in "1" in (1,2,3)) position("sql" in ("mysql"))
1 0 3 1 0 3
......
...@@ -8,6 +8,8 @@ len ...@@ -8,6 +8,8 @@ len
select repeat('a',2000); select repeat('a',2000);
repeat('a',2000) repeat('a',2000)
NULL NULL
Warnings:
Warning 1300 Data truncated by function 'repeat' do to max_allowed_packet
select @@net_buffer_length, @@max_allowed_packet; select @@net_buffer_length, @@max_allowed_packet;
@@net_buffer_length @@max_allowed_packet @@net_buffer_length @@max_allowed_packet
1024 1024 1024 1024
......
...@@ -446,7 +446,12 @@ String *Item_func_spatial_collection::val_str(String *str) ...@@ -446,7 +446,12 @@ String *Item_func_spatial_collection::val_str(String *str)
} }
} }
if (str->length() > current_thd->variables.max_allowed_packet) if (str->length() > current_thd->variables.max_allowed_packet)
{
push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
ER_WARN_ALLOWED_PACKET_OVERFLOWED,
ER(ER_WARN_ALLOWED_PACKET_OVERFLOWED), func_name());
goto err; goto err;
}
null_value = 0; null_value = 0;
return str; return str;
......
...@@ -266,7 +266,12 @@ String *Item_func_concat::val_str(String *str) ...@@ -266,7 +266,12 @@ String *Item_func_concat::val_str(String *str)
continue; continue;
if (res->length()+res2->length() > if (res->length()+res2->length() >
current_thd->variables.max_allowed_packet) current_thd->variables.max_allowed_packet)
goto null; // Error check {
push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
ER_WARN_ALLOWED_PACKET_OVERFLOWED,
ER(ER_WARN_ALLOWED_PACKET_OVERFLOWED), func_name());
goto null;
}
if (res->alloced_length() >= res->length()+res2->length()) if (res->alloced_length() >= res->length()+res2->length())
{ // Use old buffer { // Use old buffer
res->append(*res2); res->append(*res2);
...@@ -544,7 +549,12 @@ String *Item_func_concat_ws::val_str(String *str) ...@@ -544,7 +549,12 @@ String *Item_func_concat_ws::val_str(String *str)
if (res->length() + sep_str->length() + res2->length() > if (res->length() + sep_str->length() + res2->length() >
current_thd->variables.max_allowed_packet) current_thd->variables.max_allowed_packet)
goto null; // Error check {
push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
ER_WARN_ALLOWED_PACKET_OVERFLOWED,
ER(ER_WARN_ALLOWED_PACKET_OVERFLOWED), func_name());
goto null;
}
if (res->alloced_length() >= if (res->alloced_length() >=
res->length() + sep_str->length() + res2->length()) res->length() + sep_str->length() + res2->length())
{ // Use old buffer { // Use old buffer
...@@ -801,7 +811,14 @@ redo: ...@@ -801,7 +811,14 @@ redo:
offset= (int) (ptr-res->ptr()); offset= (int) (ptr-res->ptr());
if (res->length()-from_length + to_length > if (res->length()-from_length + to_length >
current_thd->variables.max_allowed_packet) current_thd->variables.max_allowed_packet)
{
push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
ER_WARN_ALLOWED_PACKET_OVERFLOWED,
ER(ER_WARN_ALLOWED_PACKET_OVERFLOWED),
func_name());
goto null; goto null;
}
if (!alloced) if (!alloced)
{ {
alloced=1; alloced=1;
...@@ -822,7 +839,12 @@ skip: ...@@ -822,7 +839,12 @@ skip:
{ {
if (res->length()-from_length + to_length > if (res->length()-from_length + to_length >
current_thd->variables.max_allowed_packet) current_thd->variables.max_allowed_packet)
{
push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
ER_WARN_ALLOWED_PACKET_OVERFLOWED,
ER(ER_WARN_ALLOWED_PACKET_OVERFLOWED), func_name());
goto null; goto null;
}
if (!alloced) if (!alloced)
{ {
alloced=1; alloced=1;
...@@ -882,7 +904,12 @@ String *Item_func_insert::val_str(String *str) ...@@ -882,7 +904,12 @@ String *Item_func_insert::val_str(String *str)
length=res->length()-start; length=res->length()-start;
if (res->length() - length + res2->length() > if (res->length() - length + res2->length() >
current_thd->variables.max_allowed_packet) current_thd->variables.max_allowed_packet)
goto null; // OOM check {
push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
ER_WARN_ALLOWED_PACKET_OVERFLOWED,
ER(ER_WARN_ALLOWED_PACKET_OVERFLOWED), func_name());
goto null;
}
res=copy_if_not_alloced(str,res,res->length()); res=copy_if_not_alloced(str,res,res->length());
res->replace(start,length,*res2); res->replace(start,length,*res2);
return res; return res;
...@@ -1934,7 +1961,12 @@ String *Item_func_repeat::val_str(String *str) ...@@ -1934,7 +1961,12 @@ String *Item_func_repeat::val_str(String *str)
length=res->length(); length=res->length();
// Safe length check // Safe length check
if (length > current_thd->variables.max_allowed_packet/count) if (length > current_thd->variables.max_allowed_packet/count)
goto err; // Probably an error {
push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
ER_WARN_ALLOWED_PACKET_OVERFLOWED,
ER(ER_WARN_ALLOWED_PACKET_OVERFLOWED), func_name());
goto err;
}
tot_length= length*(uint) count; tot_length= length*(uint) count;
if (!(res= alloc_buffer(res,str,&tmp_value,tot_length))) if (!(res= alloc_buffer(res,str,&tmp_value,tot_length)))
goto err; goto err;
...@@ -1999,8 +2031,14 @@ String *Item_func_rpad::val_str(String *str) ...@@ -1999,8 +2031,14 @@ String *Item_func_rpad::val_str(String *str)
return (res); return (res);
} }
pad_char_length= rpad->numchars(); pad_char_length= rpad->numchars();
if ((ulong) byte_count > current_thd->variables.max_allowed_packet || if ((ulong) byte_count > current_thd->variables.max_allowed_packet)
args[2]->null_value || !pad_char_length) {
push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
ER_WARN_ALLOWED_PACKET_OVERFLOWED,
ER(ER_WARN_ALLOWED_PACKET_OVERFLOWED), func_name());
goto err;
}
if(args[2]->null_value || !pad_char_length)
goto err; goto err;
res_byte_length= res->length(); /* Must be done before alloc_buffer */ res_byte_length= res->length(); /* Must be done before alloc_buffer */
if (!(res= alloc_buffer(res,str,&tmp_value,byte_count))) if (!(res= alloc_buffer(res,str,&tmp_value,byte_count)))
...@@ -2079,8 +2117,15 @@ String *Item_func_lpad::val_str(String *str) ...@@ -2079,8 +2117,15 @@ String *Item_func_lpad::val_str(String *str)
pad_char_length= pad->numchars(); pad_char_length= pad->numchars();
byte_count= count * collation.collation->mbmaxlen; byte_count= count * collation.collation->mbmaxlen;
if (byte_count > current_thd->variables.max_allowed_packet || if (byte_count > current_thd->variables.max_allowed_packet)
args[2]->null_value || !pad_char_length || str->alloc(byte_count)) {
push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
ER_WARN_ALLOWED_PACKET_OVERFLOWED,
ER(ER_WARN_ALLOWED_PACKET_OVERFLOWED), func_name());
goto err;
}
if (args[2]->null_value || !pad_char_length || str->alloc(byte_count))
goto err; goto err;
str->length(0); str->length(0);
...@@ -2368,7 +2413,9 @@ String *Item_load_file::val_str(String *str) ...@@ -2368,7 +2413,9 @@ String *Item_load_file::val_str(String *str)
} }
if (stat_info.st_size > (long) current_thd->variables.max_allowed_packet) if (stat_info.st_size > (long) current_thd->variables.max_allowed_packet)
{ {
/* my_error(ER_TOO_LONG_STRING, MYF(0), file_name->c_ptr()); */ push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
ER_WARN_ALLOWED_PACKET_OVERFLOWED,
ER(ER_WARN_ALLOWED_PACKET_OVERFLOWED), func_name());
goto err; goto err;
} }
if (tmp_value.alloc(stat_info.st_size)) if (tmp_value.alloc(stat_info.st_size))
......
...@@ -307,5 +307,4 @@ character-set=latin7 ...@@ -307,5 +307,4 @@ character-set=latin7
"Got error %d '%-.100s' from %s", "Got error %d '%-.100s' from %s",
"Got temporary error %d '%-.100s' from %s", "Got temporary error %d '%-.100s' from %s",
"Unknown or incorrect time zone: '%-.64s'", "Unknown or incorrect time zone: '%-.64s'",
"Invalid TIMESTAMP value in column '%s' at row %ld",
"Invalid %s character string: '%.64s'", "Invalid %s character string: '%.64s'",
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