Commit fc7a1bfa authored by venu@myvenu.com's avatar venu@myvenu.com

Fix date,time,timestamp,year - binary protocol

parent 5f4a7c19
This diff is collapsed.
...@@ -3257,9 +3257,7 @@ int Field_year::store(longlong nr) ...@@ -3257,9 +3257,7 @@ int Field_year::store(longlong nr)
bool Field_year::send_binary(Protocol *protocol) bool Field_year::send_binary(Protocol *protocol)
{ {
ulonglong tmp= Field_year::val_int(); ulonglong tmp= Field_year::val_int();
TIME tm; return protocol->store_short(tmp);
tm.year= (uint32) tmp;
return protocol->store_date(&tm);
} }
double Field_year::val_real(void) double Field_year::val_real(void)
......
...@@ -852,7 +852,8 @@ bool Protocol_prep::store_short(longlong from) ...@@ -852,7 +852,8 @@ bool Protocol_prep::store_short(longlong from)
{ {
#ifndef DEBUG_OFF #ifndef DEBUG_OFF
DBUG_ASSERT(field_types == 0 || DBUG_ASSERT(field_types == 0 ||
field_types[field_pos] == MYSQL_TYPE_SHORT); field_types[field_pos] == MYSQL_TYPE_SHORT ||
field_types[field_pos] == MYSQL_TYPE_YEAR);
#endif #endif
field_pos++; field_pos++;
char *to= packet->prep_append(2, PACKET_BUFFET_EXTRA_ALLOC); char *to= packet->prep_append(2, PACKET_BUFFET_EXTRA_ALLOC);
...@@ -939,7 +940,6 @@ bool Protocol_prep::store(TIME *tm) ...@@ -939,7 +940,6 @@ bool Protocol_prep::store(TIME *tm)
{ {
#ifndef DEBUG_OFF #ifndef DEBUG_OFF
DBUG_ASSERT(field_types == 0 || DBUG_ASSERT(field_types == 0 ||
field_types[field_pos] == MYSQL_TYPE_YEAR ||
field_types[field_pos] == MYSQL_TYPE_DATETIME || field_types[field_pos] == MYSQL_TYPE_DATETIME ||
field_types[field_pos] == MYSQL_TYPE_DATE || field_types[field_pos] == MYSQL_TYPE_DATE ||
field_types[field_pos] == MYSQL_TYPE_TIMESTAMP); field_types[field_pos] == MYSQL_TYPE_TIMESTAMP);
...@@ -950,11 +950,11 @@ bool Protocol_prep::store(TIME *tm) ...@@ -950,11 +950,11 @@ bool Protocol_prep::store(TIME *tm)
pos= buff+1; pos= buff+1;
int2store(pos, tm->year); int2store(pos, tm->year);
int2store(pos+2, tm->month); pos[2]= (uchar) tm->month;
int2store(pos+3, tm->day); pos[3]= (uchar) tm->day;
int2store(pos+4, tm->hour); pos[4]= (uchar) tm->hour;
int2store(pos+5, tm->minute); pos[5]= (uchar) tm->minute;
int2store(pos+6, tm->second); pos[6]= (uchar) tm->second;
int4store(pos+7, tm->second_part); int4store(pos+7, tm->second_part);
if (tm->second_part) if (tm->second_part)
length=11; length=11;
...@@ -987,15 +987,15 @@ bool Protocol_prep::store_time(TIME *tm) ...@@ -987,15 +987,15 @@ bool Protocol_prep::store_time(TIME *tm)
field_pos++; field_pos++;
pos= buff+1; pos= buff+1;
pos[0]= tm->neg ? 1 : 0; pos[0]= tm->neg ? 1 : 0;
int4store(pos+1, tm->day); int4store(pos+1, tm->day);
int2store(pos+5, tm->hour); pos[5]= (uchar) tm->hour;
int2store(pos+7, tm->minute); pos[6]= (uchar) tm->minute;
int2store(pos+9, tm->second); pos[7]= (uchar) tm->second;
int4store(pos+11, tm->second_part); int4store(pos+8, tm->second_part);
if (tm->second_part) if (tm->second_part)
length=14; length=11;
else if (tm->hour || tm->minute || tm->second || tm->day) else if (tm->hour || tm->minute || tm->second || tm->day)
length=10; length=8;
else else
length=0; length=0;
buff[0]=(char) length; // Length is stored first buff[0]=(char) length; // Length is stored first
......
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