null+****@clear*****
null+****@clear*****
2012年 2月 5日 (日) 15:21:59 JST
Kouhei Sutou 2012-02-05 15:21:59 +0900 (Sun, 05 Feb 2012)
New Revision: 2f133061d2cc7589f6ebe6c74753ecf42f6bbb74
Log:
[mariadb] support fractiona seconds but it may be costful.
Modified files:
ha_mroonga.cc
Modified: ha_mroonga.cc (+19 -1)
===================================================================
--- ha_mroonga.cc 2012-02-05 14:47:49 +0900 (657458b)
+++ ha_mroonga.cc 2012-02-05 15:21:59 +0900 (772ee5e)
@@ -7876,13 +7876,31 @@ int ha_mroonga::storage_encode_key_time(Field *field, const uchar *key,
{
MRN_DBUG_ENTER_METHOD();
int error = 0;
+ long long int time;
+#ifdef MRN_MARIADB_P
+ // TODO: remove me when MariaDB becomes based on MySQL 5.6.
+ // This implementation may be costful.
+ Field_time_hires *time_hires_field = (Field_time_hires *)field;
+ Field_time_hires unpacker((uchar *)key,
+ (uchar *)(key - 1),
+ time_hires_field->null_bit,
+ time_hires_field->unireg_check,
+ time_hires_field->field_name,
+ time_hires_field->decimals(),
+ time_hires_field->charset());
+ MYSQL_TIME mysql_time;
+ uint fuzzy_date = 0;
+ unpacker.get_date(&mysql_time, fuzzy_date);
+ time = mrn_mysql_time_to_grn_time(&mysql_time);
+#else
int mysql_time = (int)sint3korr(key);
int sec =
mysql_time / 10000 * 60 * 60 +
mysql_time / 100 % 100 * 60 +
mysql_time % 60;
int usec = 0;
- long long int time = GRN_TIME_PACK(sec, usec);
+ time = GRN_TIME_PACK(sec, usec);
+#endif
memcpy(buf, &time, 8);
*size = 8;
DBUG_RETURN(error);