diff options
Diffstat (limited to 'sql/protocol.cc')
-rw-r--r-- | sql/protocol.cc | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/sql/protocol.cc b/sql/protocol.cc index 0fe759cff67..d7a745d371d 100644 --- a/sql/protocol.cc +++ b/sql/protocol.cc @@ -833,12 +833,17 @@ bool Protocol_simple::store(TIME *tm) field_pos++; #endif char buff[40]; - String tmp((char*) buff,sizeof(buff),&my_charset_bin); - DATETIME_FORMAT *tmp_format= (&t_datetime_frm - (current_thd, DATETIME_FORMAT_TYPE).datetime_format); - make_datetime(&tmp, tm, 1, tm->second_part, - tmp_format->format, tmp_format->format_length, 1); - return net_store_data((char*) tmp.ptr(), tmp.length()); + uint length; + length= my_sprintf(buff,(buff, "%04d-%02d-%02d %02d:%02d:%02d", + (int) tm->year, + (int) tm->month, + (int) tm->day, + (int) tm->hour, + (int) tm->minute, + (int) tm->second)); + if (tm->second_part) + length+= my_sprintf(buff+length,(buff+length, ".%06d", (int)tm->second_part)); + return net_store_data((char*) buff, length); } @@ -851,10 +856,7 @@ bool Protocol_simple::store_date(TIME *tm) #endif char buff[40]; String tmp((char*) buff,sizeof(buff),&my_charset_bin); - DATETIME_FORMAT *tmp_format= (&t_datetime_frm - (current_thd, DATE_FORMAT_TYPE).datetime_format); - make_datetime(&tmp, tm, 1, 0, - tmp_format->format, tmp_format->format_length, 1); + make_date((DATE_TIME_FORMAT *) 0, tm, &tmp); return net_store_data((char*) tmp.ptr(), tmp.length()); } @@ -873,14 +875,16 @@ bool Protocol_simple::store_time(TIME *tm) field_pos++; #endif char buff[40]; - String tmp((char*) buff,sizeof(buff),&my_charset_bin); - DATETIME_FORMAT *tmp_format= (&t_datetime_frm - (current_thd, TIME_FORMAT_TYPE).datetime_format); + uint length; uint day= (tm->year || tm->month) ? 0 : tm->day; - tm->hour= (long) day*24L+(long) tm->hour; - make_datetime(&tmp, tm, 0, tm->second_part, - tmp_format->format, tmp_format->format_length, 1); - return net_store_data((char*) tmp.ptr(), tmp.length()); + length= my_sprintf(buff,(buff, "%s%02ld:%02d:%02d", + tm->neg ? "-" : "", + (long) day*24L+(long) tm->hour, + (int) tm->minute, + (int) tm->second)); + if (tm->second_part) + length+= my_sprintf(buff+length,(buff+length, ".%06d", (int)tm->second_part)); + return net_store_data((char*) buff, length); } |