mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
func_str.result, func_str.test:
Added a test case for bug #10124. sql_select.h, item_subselect.cc, sql_select.cc: Fixed bug #10124. The copy method of the store_key classes can return STORE_KEY_OK=0, STORE_KEY_FATAL=1, STORE_KEY_CONV=2 now. field.cc: Fixed bug #10124. When ussuing a warning the store methods return 2 instead of 1 now. sql/field.cc: Fixed bug #10124. When ussuing a warning the store methods return 2 instead of 1 now. sql/sql_select.cc: Fixed bug #10124. The copy method of the store_key classes can return STORE_KEY_OK=0, STORE_KEY_FATAL=1, STORE_KEY_CONV=2 now. sql/item_subselect.cc: Fixed bug #10124. The copy method of the store_key classes can return STORE_KEY_OK=0, STORE_KEY_FATAL=1, STORE_KEY_CONV=2 now. sql/sql_select.h: Fixed bug #10124. The copy method of the store_key classes can return STORE_KEY_OK=0, STORE_KEY_FATAL=1, STORE_KEY_CONV=2 now. mysql-test/t/func_str.test: Added a test case for bug #10124. mysql-test/r/func_str.result: Added a test case for bug #10124.
This commit is contained in:
41
sql/field.cc
41
sql/field.cc
@ -2473,7 +2473,10 @@ int Field_long::store(const char *from,uint len,CHARSET_INFO *cs)
|
||||
if (error ||
|
||||
(from+len != end && table->in_use->count_cuted_fields &&
|
||||
!test_if_int(from,len,end,cs)))
|
||||
error= 1;
|
||||
{
|
||||
if (error != 1)
|
||||
error= 2;
|
||||
}
|
||||
#if SIZEOF_LONG > 4
|
||||
if (unsigned_flag)
|
||||
{
|
||||
@ -2501,10 +2504,7 @@ int Field_long::store(const char *from,uint len,CHARSET_INFO *cs)
|
||||
}
|
||||
#endif
|
||||
if (error)
|
||||
{
|
||||
set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
|
||||
error= 1;
|
||||
}
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
if (table->db_low_byte_first)
|
||||
{
|
||||
@ -2770,8 +2770,11 @@ int Field_longlong::store(const char *from,uint len,CHARSET_INFO *cs)
|
||||
(from+len != end && table->in_use->count_cuted_fields &&
|
||||
!test_if_int(from,len,end,cs)))
|
||||
{
|
||||
set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
|
||||
error= 1;
|
||||
if (error != 1)
|
||||
{
|
||||
set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
|
||||
error= 2;
|
||||
}
|
||||
}
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
if (table->db_low_byte_first)
|
||||
@ -2991,7 +2994,7 @@ int Field_float::store(const char *from,uint len,CHARSET_INFO *cs)
|
||||
double nr= my_strntod(cs,(char*) from,len,&end,&error);
|
||||
if (error || ((uint) (end-from) != len && table->in_use->count_cuted_fields))
|
||||
{
|
||||
error= 1;
|
||||
error= 2;
|
||||
set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
|
||||
}
|
||||
Field_float::store(nr);
|
||||
@ -3277,7 +3280,7 @@ int Field_double::store(const char *from,uint len,CHARSET_INFO *cs)
|
||||
double nr= my_strntod(cs,(char*) from, len, &end, &error);
|
||||
if (error || ((uint) (end-from) != len && table->in_use->count_cuted_fields))
|
||||
{
|
||||
error= 1;
|
||||
error= 2;
|
||||
set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
|
||||
}
|
||||
Field_double::store(nr);
|
||||
@ -3659,6 +3662,8 @@ int Field_timestamp::store(const char *from,uint len,CHARSET_INFO *cs)
|
||||
error= 1;
|
||||
}
|
||||
}
|
||||
if (error > 1)
|
||||
error= 2;
|
||||
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
if (table->db_low_byte_first)
|
||||
@ -3947,7 +3952,7 @@ int Field_time::store(const char *from,uint len,CHARSET_INFO *cs)
|
||||
if (str_to_time(from, len, <ime, &error))
|
||||
{
|
||||
tmp=0L;
|
||||
error= 1;
|
||||
error= 2;
|
||||
set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED,
|
||||
from, len, MYSQL_TIMESTAMP_TIME, 1);
|
||||
}
|
||||
@ -3969,6 +3974,8 @@ int Field_time::store(const char *from,uint len,CHARSET_INFO *cs)
|
||||
from, len, MYSQL_TIMESTAMP_TIME, !error);
|
||||
error= 1;
|
||||
}
|
||||
if (error > 1)
|
||||
error= 2;
|
||||
}
|
||||
|
||||
if (ltime.neg)
|
||||
@ -4298,7 +4305,7 @@ int Field_date::store(const char *from, uint len,CHARSET_INFO *cs)
|
||||
if (str_to_datetime(from, len, &l_time, 1, &error) <= MYSQL_TIMESTAMP_ERROR)
|
||||
{
|
||||
tmp=0;
|
||||
error= 1;
|
||||
error= 2;
|
||||
}
|
||||
else
|
||||
tmp=(uint32) l_time.year*10000L + (uint32) (l_time.month*100+l_time.day);
|
||||
@ -4489,7 +4496,7 @@ int Field_newdate::store(const char *from,uint len,CHARSET_INFO *cs)
|
||||
if (str_to_datetime(from, len, &l_time, 1, &error) <= MYSQL_TIMESTAMP_ERROR)
|
||||
{
|
||||
tmp=0L;
|
||||
error= 1;
|
||||
error= 2;
|
||||
}
|
||||
else
|
||||
tmp= l_time.day + l_time.month*32 + l_time.year*16*32;
|
||||
@ -4931,7 +4938,7 @@ int Field_string::store(const char *from,uint length,CHARSET_INFO *cs)
|
||||
from= tmpstr.ptr();
|
||||
length= tmpstr.length();
|
||||
if (conv_errors)
|
||||
error= 1;
|
||||
error= 2;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -4955,7 +4962,7 @@ int Field_string::store(const char *from,uint length,CHARSET_INFO *cs)
|
||||
from+= field_charset->cset->scan(field_charset, from, end,
|
||||
MY_SEQ_SPACES);
|
||||
if (from != end)
|
||||
error= 1;
|
||||
error= 2;
|
||||
}
|
||||
if (error)
|
||||
set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
|
||||
@ -5210,12 +5217,12 @@ int Field_varstring::store(const char *from,uint length,CHARSET_INFO *cs)
|
||||
from= tmpstr.ptr();
|
||||
length= tmpstr.length();
|
||||
if (conv_errors)
|
||||
error= 1;
|
||||
error= 2;
|
||||
}
|
||||
if (length > field_length)
|
||||
{
|
||||
length=field_length;
|
||||
error= 1;
|
||||
error= 2;
|
||||
}
|
||||
if (error)
|
||||
set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
|
||||
@ -5568,7 +5575,7 @@ int Field_blob::store(const char *from,uint length,CHARSET_INFO *cs)
|
||||
from= tmpstr.ptr();
|
||||
length= tmpstr.length();
|
||||
if (conv_errors)
|
||||
error= 1;
|
||||
error= 2;
|
||||
}
|
||||
|
||||
copy_length= max_data_length();
|
||||
@ -5583,7 +5590,7 @@ int Field_blob::store(const char *from,uint length,CHARSET_INFO *cs)
|
||||
copy_length,
|
||||
&well_formed_error);
|
||||
if (copy_length < length)
|
||||
error= 1;
|
||||
error= 2;
|
||||
Field_blob::store_length(copy_length);
|
||||
if (was_conversion || table->copy_blobs || copy_length <= MAX_FIELD_WIDTH)
|
||||
{ // Must make a copy
|
||||
|
Reference in New Issue
Block a user