Commit fef194fc authored by monty@mashka.mysql.fi's avatar monty@mashka.mysql.fi

Fix for --new option (Timestamp in YYYY-MM-DD HH:MM:SS format)

parent d57c2019
...@@ -2421,6 +2421,14 @@ void Field_double::sql_type(String &res) const ...@@ -2421,6 +2421,14 @@ void Field_double::sql_type(String &res) const
** by handler.cc. The form->timestamp points at the automatic timestamp. ** by handler.cc. The form->timestamp points at the automatic timestamp.
****************************************************************************/ ****************************************************************************/
enum Item_result Field_timestamp::result_type() const
{
return (!current_thd->variables.new_mode &&
(field_length == 8 || field_length == 14) ? INT_RESULT :
STRING_RESULT);
}
Field_timestamp::Field_timestamp(char *ptr_arg, uint32 len_arg, Field_timestamp::Field_timestamp(char *ptr_arg, uint32 len_arg,
enum utype unireg_check_arg, enum utype unireg_check_arg,
const char *field_name_arg, const char *field_name_arg,
...@@ -2783,6 +2791,23 @@ void Field_timestamp::set_time() ...@@ -2783,6 +2791,23 @@ void Field_timestamp::set_time()
longstore(ptr,tmp); longstore(ptr,tmp);
} }
/*
This is an exact copy of Field_num except that 'length' is depending
on --new mode
*/
void Field_timestamp::make_field(Send_field *field)
{
field->table_name=table_name;
field->col_name=field_name;
/* If --new, then we are using "YYYY-MM-DD HH:MM:SS" format */
field->length= current_thd->variables.new_mode ? 19 : field_length;
field->type=type();
field->flags=table->maybe_null ? (flags & ~NOT_NULL_FLAG) : flags;
field->decimals=dec;
}
/**************************************************************************** /****************************************************************************
** time type ** time type
** In string context: HH:MM:SS ** In string context: HH:MM:SS
......
...@@ -541,7 +541,7 @@ class Field_timestamp :public Field_num { ...@@ -541,7 +541,7 @@ class Field_timestamp :public Field_num {
Field_timestamp(char *ptr_arg, uint32 len_arg, Field_timestamp(char *ptr_arg, uint32 len_arg,
enum utype unireg_check_arg, const char *field_name_arg, enum utype unireg_check_arg, const char *field_name_arg,
struct st_table *table_arg); struct st_table *table_arg);
enum Item_result result_type () const { return field_length == 8 || field_length == 14 ? INT_RESULT : STRING_RESULT; } enum Item_result result_type () const;
enum_field_types type() const { return FIELD_TYPE_TIMESTAMP;} enum_field_types type() const { return FIELD_TYPE_TIMESTAMP;}
enum ha_base_keytype key_type() const { return HA_KEYTYPE_ULONG_INT; } enum ha_base_keytype key_type() const { return HA_KEYTYPE_ULONG_INT; }
void store(const char *to,uint length); void store(const char *to,uint length);
...@@ -575,6 +575,7 @@ class Field_timestamp :public Field_num { ...@@ -575,6 +575,7 @@ class Field_timestamp :public Field_num {
void fill_and_store(char *from,uint len); void fill_and_store(char *from,uint len);
bool get_date(TIME *ltime,bool fuzzydate); bool get_date(TIME *ltime,bool fuzzydate);
bool get_time(TIME *ltime); bool get_time(TIME *ltime);
void make_field(Send_field *field);
}; };
......
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