summaryrefslogtreecommitdiff
path: root/sql/field.cc
diff options
context:
space:
mode:
authorwax@mysql.com <>2005-02-08 18:51:42 +0500
committerwax@mysql.com <>2005-02-08 18:51:42 +0500
commit7d1af16c2aa3436f714fda2045af46ae5776d60f (patch)
treea0d98abfc1c068202b5a8081ba0c2ee7529e5171 /sql/field.cc
parentca2f539273279f4881db88e9aaadc6f0f680c5b6 (diff)
parentbd50066cfe1c8020e15c503baff5b47bf27704d3 (diff)
downloadmariadb-git-7d1af16c2aa3436f714fda2045af46ae5776d60f.tar.gz
Merge mysql.com:/home/wax/mysql/mysql-4.1
into mysql.com:/home/wax/mysql/mysql-4.1test2
Diffstat (limited to 'sql/field.cc')
-rw-r--r--sql/field.cc47
1 files changed, 45 insertions, 2 deletions
diff --git a/sql/field.cc b/sql/field.cc
index 7357bc06f11..e2f75034e52 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -245,6 +245,7 @@ static Field::field_cast_enum field_cast_date[]=
Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP};
static Field::field_cast_enum field_cast_newdate[]=
{Field::FIELD_CAST_NEWDATE,
+ Field::FIELD_CAST_DATE,
Field::FIELD_CAST_DATETIME,
Field::FIELD_CAST_STRING, Field::FIELD_CAST_VARSTRING,
Field::FIELD_CAST_BLOB, Field::FIELD_CAST_STOP};
@@ -3511,9 +3512,17 @@ void Field_time::sql_type(String &res) const
int Field_year::store(const char *from, uint len,CHARSET_INFO *cs)
{
- int not_used; // We can ignore result from str2int
+ int err;
char *end;
- long nr= my_strntol(cs, from, len, 10, &end, &not_used);
+ long nr= my_strntol(cs, from, len, 10, &end, &err);
+
+ if (err)
+ {
+ if (table->in_use->count_cuted_fields)
+ set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_WARN_DATA_TRUNCATED, 1);
+ *ptr= 0;
+ return 0;
+ }
if (nr < 0 || nr >= 100 && nr <= 1900 || nr > 2155)
{
@@ -6024,6 +6033,40 @@ Field *make_field(char *ptr, uint32 field_length,
}
+/*
+ Check if field_type is appropriate field type
+ to create field for tmp table using
+ item->tmp_table_field() method
+
+ SYNOPSIS
+ field_types_to_be_kept()
+ field_type - field type
+
+ NOTE
+ it is used in function get_holder_example_field()
+ from item.cc
+
+ RETURN
+ 1 - can use item->tmp_table_field() method
+ 0 - can not use item->tmp_table_field() method
+
+*/
+
+bool field_types_to_be_kept(enum_field_types field_type)
+{
+ switch (field_type)
+ {
+ case FIELD_TYPE_DATE:
+ case FIELD_TYPE_NEWDATE:
+ case FIELD_TYPE_TIME:
+ case FIELD_TYPE_DATETIME:
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+
/* Create a field suitable for create of table */
create_field::create_field(Field *old_field,Field *orig_field)