small optimization in Field_time_hires.
Fix Field_time_hires::reset()
This commit is contained in:
parent
c3f665dc66
commit
fdfeb4bea3
13
sql/field.cc
13
sql/field.cc
@ -5364,11 +5364,15 @@ void Field_time::sql_type(String &res) const
|
|||||||
res.set_ascii(STRING_WITH_LEN("time"));
|
res.set_ascii(STRING_WITH_LEN("time"));
|
||||||
}
|
}
|
||||||
|
|
||||||
static const longlong t_shift= ((TIME_MAX_VALUE_SECONDS+1)*TIME_SECOND_PART_FACTOR);
|
int Field_time_hires::reset()
|
||||||
|
{
|
||||||
|
store_bigendian(zero_point, ptr, Field_time_hires::pack_length());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void Field_time_hires::store_TIME(MYSQL_TIME *ltime)
|
void Field_time_hires::store_TIME(MYSQL_TIME *ltime)
|
||||||
{
|
{
|
||||||
ulonglong packed= sec_part_shift(pack_time(ltime), dec) +
|
ulonglong packed= sec_part_shift(pack_time(ltime), dec) + zero_point;
|
||||||
sec_part_shift(t_shift, dec);
|
|
||||||
store_bigendian(packed, ptr, Field_time_hires::pack_length());
|
store_bigendian(packed, ptr, Field_time_hires::pack_length());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5425,8 +5429,7 @@ bool Field_time_hires::get_date(MYSQL_TIME *ltime, uint fuzzydate)
|
|||||||
uint32 len= pack_length();
|
uint32 len= pack_length();
|
||||||
longlong packed= read_bigendian(ptr, len);
|
longlong packed= read_bigendian(ptr, len);
|
||||||
|
|
||||||
if (packed)
|
packed= sec_part_unshift(packed - zero_point, dec);
|
||||||
packed= sec_part_unshift(packed - sec_part_shift(t_shift, dec), dec);
|
|
||||||
|
|
||||||
unpack_time(packed, ltime);
|
unpack_time(packed, ltime);
|
||||||
/*
|
/*
|
||||||
|
@ -1420,6 +1420,7 @@ public:
|
|||||||
|
|
||||||
class Field_time_hires :public Field_time {
|
class Field_time_hires :public Field_time {
|
||||||
uint dec;
|
uint dec;
|
||||||
|
longlong zero_point;
|
||||||
void store_TIME(MYSQL_TIME *ltime);
|
void store_TIME(MYSQL_TIME *ltime);
|
||||||
public:
|
public:
|
||||||
Field_time_hires(uchar *ptr_arg, uchar *null_ptr_arg, uchar null_bit_arg,
|
Field_time_hires(uchar *ptr_arg, uchar *null_ptr_arg, uchar null_bit_arg,
|
||||||
@ -1431,6 +1432,8 @@ public:
|
|||||||
{
|
{
|
||||||
DBUG_ASSERT(dec);
|
DBUG_ASSERT(dec);
|
||||||
DBUG_ASSERT(dec <= TIME_SECOND_PART_DIGITS);
|
DBUG_ASSERT(dec <= TIME_SECOND_PART_DIGITS);
|
||||||
|
zero_point= sec_part_shift(
|
||||||
|
((TIME_MAX_VALUE_SECONDS+1)*TIME_SECOND_PART_FACTOR), dec);
|
||||||
}
|
}
|
||||||
enum ha_base_keytype key_type() const { return HA_KEYTYPE_BINARY; }
|
enum ha_base_keytype key_type() const { return HA_KEYTYPE_BINARY; }
|
||||||
uint decimals() const { return dec; }
|
uint decimals() const { return dec; }
|
||||||
@ -1438,6 +1441,7 @@ public:
|
|||||||
longlong val_int(void);
|
longlong val_int(void);
|
||||||
double val_real(void);
|
double val_real(void);
|
||||||
String *val_str(String*,String *);
|
String *val_str(String*,String *);
|
||||||
|
int reset(void);
|
||||||
bool get_date(MYSQL_TIME *ltime, uint fuzzydate);
|
bool get_date(MYSQL_TIME *ltime, uint fuzzydate);
|
||||||
bool send_binary(Protocol *protocol);
|
bool send_binary(Protocol *protocol);
|
||||||
int cmp(const uchar *,const uchar *);
|
int cmp(const uchar *,const uchar *);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user