diff options
author | unknown <evgen@moonbone.local> | 2006-06-14 23:54:08 +0400 |
---|---|---|
committer | unknown <evgen@moonbone.local> | 2006-06-14 23:54:08 +0400 |
commit | 9936533be9359176ae7f196ef3291c5ee0df2e97 (patch) | |
tree | 9f2d34990366073803ede28b005fe7965ee7d736 /sql/field.cc | |
parent | b395f9c29e0c01e8e37d6c62f5fc54d9118da2a3 (diff) | |
parent | 15462dd90a3fe1129d795aa99eb8a8c6f15154e5 (diff) | |
download | mariadb-git-9936533be9359176ae7f196ef3291c5ee0df2e97.tar.gz |
Manually merged
mysql-test/r/cast.result:
Auto merged
mysql-test/t/func_time.test:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/item_timefunc.cc:
Auto merged
sql/item_timefunc.h:
Auto merged
sql/opt_sum.cc:
Auto merged
sql/structs.h:
Auto merged
Diffstat (limited to 'sql/field.cc')
-rw-r--r-- | sql/field.cc | 43 |
1 files changed, 38 insertions, 5 deletions
diff --git a/sql/field.cc b/sql/field.cc index a920d6d91b1..64f888eb24d 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -9037,7 +9037,11 @@ bool Field::set_warning(MYSQL_ERROR::enum_warning_level level, uint code, int cuted_increment) { - THD *thd= table->in_use; + /* + If this field was created only for type conversion purposes it + will have table == NULL. + */ + THD *thd= table ? table->in_use : current_thd; if (thd->count_cuted_fields) { thd->cuted_fields+= cuted_increment; @@ -9074,7 +9078,8 @@ Field::set_datetime_warning(MYSQL_ERROR::enum_warning_level level, uint code, { if (table->in_use->really_abort_on_warning() || set_warning(level, code, cuted_increment)) - make_truncated_value_warning(table->in_use, str, str_length, ts_type, + make_truncated_value_warning(table ? table->in_use : current_thd, + str, str_length, ts_type, field_name); } @@ -9106,8 +9111,8 @@ Field::set_datetime_warning(MYSQL_ERROR::enum_warning_level level, uint code, { char str_nr[22]; char *str_end= longlong10_to_str(nr, str_nr, -10); - make_truncated_value_warning(table->in_use, str_nr, - (uint) (str_end - str_nr), + make_truncated_value_warning(table ? table->in_use : current_thd, + str_nr, (uint) (str_end - str_nr), ts_type, field_name); } } @@ -9139,7 +9144,35 @@ Field::set_datetime_warning(MYSQL_ERROR::enum_warning_level level, uint code, /* DBL_DIG is enough to print '-[digits].E+###' */ char str_nr[DBL_DIG + 8]; uint str_len= my_sprintf(str_nr, (str_nr, "%g", nr)); - make_truncated_value_warning(table->in_use, str_nr, str_len, ts_type, + make_truncated_value_warning(table ? table->in_use : current_thd, + str_nr, str_len, ts_type, field_name); } } + +/* + maximum possible display length for blob + + SYNOPSIS + Field_blob::max_length() + + RETURN + length +*/ +uint32 Field_blob::max_length() +{ + switch (packlength) + { + case 1: + return 255 * field_charset->mbmaxlen; + case 2: + return 65535 * field_charset->mbmaxlen; + case 3: + return 16777215 * field_charset->mbmaxlen; + case 4: + return (uint32) 4294967295U; + default: + DBUG_ASSERT(0); // we should never go here + return 0; + } +} |