mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge
BitKeeper/etc/logging_ok: auto-union BUILD/autorun.sh: Auto merged BitKeeper/etc/config: Auto merged Makefile.am: Auto merged include/my_bitmap.h: Auto merged libmysqld/Makefile.am: Auto merged mysql-test/mysql-test-run.pl: Auto merged mysql-test/mysql-test-run.sh: Auto merged mysql-test/r/grant.result: Auto merged mysql-test/r/ps_6bdb.result: Auto merged mysql-test/r/ps_7ndb.result: Auto merged mysys/Makefile.am: Auto merged mysys/default.c: Auto merged scripts/mysql_create_system_tables.sh: Auto merged scripts/mysql_fix_privilege_tables.sql: Auto merged sql/Makefile.am: Auto merged sql/field.cc: Auto merged sql/field.h: Auto merged sql/ha_ndbcluster.h: Auto merged sql/handler.cc: Auto merged sql/handler.h: Auto merged sql/item.cc: Auto merged sql/log_event.cc: Auto merged sql/mysql_priv.h: Auto merged sql/opt_range.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_acl.h: Auto merged sql/sql_base.cc: Auto merged sql/sql_cache.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_delete.cc: Auto merged sql/sql_lex.cc: Auto merged sql/sql_parse.cc: Auto merged sql/sql_table.cc: Auto merged sql/sql_udf.cc: Auto merged sql/sql_yacc.yy: Auto merged storage/heap/Makefile.am: Auto merged storage/heap/hp_hash.c: Auto merged storage/innobase/btr/btr0btr.c: Auto merged storage/innobase/btr/btr0cur.c: Auto merged storage/innobase/configure.in: Auto merged storage/innobase/fil/fil0fil.c: Auto merged storage/innobase/ibuf/ibuf0ibuf.c: Auto merged storage/innobase/include/os0file.h: Auto merged storage/innobase/include/page0cur.h: Auto merged storage/innobase/include/row0mysql.h: Auto merged storage/innobase/include/srv0srv.h: Auto merged storage/innobase/include/trx0trx.h: Auto merged storage/innobase/include/trx0trx.ic: Auto merged storage/innobase/lock/lock0lock.c: Auto merged storage/innobase/log/log0recv.c: Auto merged storage/innobase/os/os0file.c: Auto merged storage/innobase/page/page0cur.c: Auto merged storage/innobase/page/page0page.c: Auto merged storage/innobase/rem/rem0rec.c: Auto merged storage/innobase/row/row0mysql.c: Auto merged storage/innobase/row/row0sel.c: Auto merged storage/innobase/row/row0upd.c: Auto merged storage/innobase/srv/srv0srv.c: Auto merged storage/innobase/trx/trx0trx.c: Auto merged storage/innobase/trx/trx0undo.c: Auto merged storage/myisam/Makefile.am: Auto merged storage/myisam/mi_create.c: Auto merged storage/myisam/mi_open.c: Auto merged storage/myisam/mi_packrec.c: Auto merged storage/myisam/mi_unique.c: Auto merged storage/myisam/myisampack.c: Auto merged storage/myisammrg/Makefile.am: Auto merged storage/ndb/include/mgmcommon/ConfigRetriever.hpp: Auto merged storage/ndb/include/transporter/TransporterDefinitions.hpp: Auto merged storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp: Auto merged storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp: Auto merged storage/ndb/src/mgmsrv/main.cpp: Auto merged storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp: Auto merged storage/ndb/test/ndbapi/create_tab.cpp: Auto merged storage/ndb/test/ndbapi/testBlobs.cpp: Auto merged strings/ctype-big5.c: Auto merged strings/ctype-ucs2.c: Auto merged support-files/mysql.spec.sh: Auto merged configure.in: merge mysql-test/t/disabled.def: merge mysys/my_bitmap.c: SCCS merged sql/ha_federated.cc: merge sql/ha_innodb.cc: merge sql/ha_ndbcluster.cc: merge sql/mysqld.cc: e merge sql/sql_insert.cc: merge sql/sql_lex.h: merge sql/sql_load.cc: merge sql/sql_select.cc: merge e C sql/sql_update.cc: merge sql/table.cc: merge
This commit is contained in:
48
sql/field.cc
48
sql/field.cc
@ -1445,6 +1445,7 @@ my_decimal *Field_str::val_decimal(my_decimal *decimal_value)
|
||||
|
||||
uint Field::fill_cache_field(CACHE_FIELD *copy)
|
||||
{
|
||||
uint store_length;
|
||||
copy->str=ptr;
|
||||
copy->length=pack_length();
|
||||
copy->blob_field=0;
|
||||
@ -1458,10 +1459,16 @@ uint Field::fill_cache_field(CACHE_FIELD *copy)
|
||||
else if (!zero_pack() &&
|
||||
(type() == MYSQL_TYPE_STRING && copy->length >= 4 &&
|
||||
copy->length < 256))
|
||||
{
|
||||
copy->strip=1; /* Remove end space */
|
||||
store_length= 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
copy->strip=0;
|
||||
return copy->length+(int) copy->strip;
|
||||
store_length= 0;
|
||||
}
|
||||
return copy->length+ store_length;
|
||||
}
|
||||
|
||||
|
||||
@ -2480,7 +2487,7 @@ int Field_new_decimal::store(longlong nr)
|
||||
int err;
|
||||
|
||||
if ((err= int2my_decimal(E_DEC_FATAL_ERROR & ~E_DEC_OVERFLOW,
|
||||
nr, false, &decimal_value)))
|
||||
nr, FALSE, &decimal_value)))
|
||||
{
|
||||
if (check_overflow(err))
|
||||
set_value_on_overflow(&decimal_value, decimal_value.sign());
|
||||
@ -3318,12 +3325,12 @@ int Field_long::store(const char *from,uint len,CHARSET_INFO *cs)
|
||||
}
|
||||
if (error)
|
||||
{
|
||||
error= 1;
|
||||
error= error != MY_ERRNO_EDOM ? 1 : 2;
|
||||
set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_OUT_OF_RANGE, 1);
|
||||
}
|
||||
else if (from+len != end && table->in_use->count_cuted_fields &&
|
||||
check_int(from,len,end,cs))
|
||||
error= 1;
|
||||
error= 2;
|
||||
|
||||
store_tmp= (long) tmp;
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
@ -3585,7 +3592,7 @@ int Field_longlong::store(const char *from,uint len,CHARSET_INFO *cs)
|
||||
}
|
||||
else if (from+len != end && table->in_use->count_cuted_fields &&
|
||||
check_int(from,len,end,cs))
|
||||
error= 1;
|
||||
error= 2;
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
if (table->s->db_low_byte_first)
|
||||
{
|
||||
@ -3807,7 +3814,7 @@ int Field_float::store(const char *from,uint len,CHARSET_INFO *cs)
|
||||
{
|
||||
set_warning(MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||
(error ? ER_WARN_DATA_OUT_OF_RANGE : WARN_DATA_TRUNCATED), 1);
|
||||
error= 1;
|
||||
error= error ? 1 : 2;
|
||||
}
|
||||
Field_float::store(nr);
|
||||
return error;
|
||||
@ -4094,7 +4101,7 @@ int Field_double::store(const char *from,uint len,CHARSET_INFO *cs)
|
||||
{
|
||||
set_warning(MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||
(error ? ER_WARN_DATA_OUT_OF_RANGE : WARN_DATA_TRUNCATED), 1);
|
||||
error= 1;
|
||||
error= error ? 1 : 2;
|
||||
}
|
||||
Field_double::store(nr);
|
||||
return error;
|
||||
@ -4496,6 +4503,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->s->db_low_byte_first)
|
||||
@ -4792,7 +4801,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, WARN_DATA_TRUNCATED,
|
||||
from, len, MYSQL_TIMESTAMP_TIME, 1);
|
||||
}
|
||||
@ -4814,6 +4823,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)
|
||||
@ -5150,7 +5161,7 @@ int Field_date::store(const char *from, uint len,CHARSET_INFO *cs)
|
||||
&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);
|
||||
@ -5354,7 +5365,7 @@ int Field_newdate::store(const char *from,uint len,CHARSET_INFO *cs)
|
||||
&error) <= MYSQL_TIMESTAMP_ERROR)
|
||||
{
|
||||
tmp=0L;
|
||||
error= 1;
|
||||
error= 2;
|
||||
}
|
||||
else
|
||||
tmp= l_time.day + l_time.month*32 + l_time.year*16*32;
|
||||
@ -5837,7 +5848,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;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -5861,7 +5872,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)
|
||||
{
|
||||
@ -6243,7 +6254,7 @@ int Field_varstring::store(const char *from,uint length,CHARSET_INFO *cs)
|
||||
table->in_use->abort_on_warning)
|
||||
error_code= ER_DATA_TOO_LONG;
|
||||
set_warning(level, error_code, 1);
|
||||
return 1;
|
||||
return 2;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -6819,11 +6830,16 @@ int Field_blob::store(const char *from,uint length,CHARSET_INFO *cs)
|
||||
¬_used)))
|
||||
{
|
||||
uint conv_errors;
|
||||
tmpstr.copy(from, length, cs, field_charset, &conv_errors);
|
||||
if (tmpstr.copy(from, length, cs, field_charset, &conv_errors))
|
||||
{
|
||||
/* Fatal OOM error */
|
||||
bzero(ptr,Field_blob::pack_length());
|
||||
return -1;
|
||||
}
|
||||
from= tmpstr.ptr();
|
||||
length= tmpstr.length();
|
||||
if (conv_errors)
|
||||
error= 1;
|
||||
error= 2;
|
||||
}
|
||||
|
||||
copy_length= max_data_length();
|
||||
@ -6838,7 +6854,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