Tetsuro IKEDA
null+****@clear*****
Thu Oct 4 10:20:19 JST 2012
Tetsuro IKEDA 2010-03-30 18:47:17 +0900 (Tue, 30 Mar 2010) New Revision: a5a6f03720ffd387ab03fe2b20e320b692c5adb3 https://github.com/mroonga/mroonga/commit/a5a6f03720ffd387ab03fe2b20e320b692c5adb3 Log: upgrade impl of TIME data type. Modified files: ha_mroonga.cc Modified: ha_mroonga.cc (+29 -2) =================================================================== --- ha_mroonga.cc 2010-03-30 16:37:14 +0900 (5ab7ae1) +++ ha_mroonga.cc 2010-03-30 18:47:17 +0900 (2278094) @@ -501,8 +501,21 @@ int ha_mroonga::rnd_next(uchar *buf) case (MYSQL_TYPE_DOUBLE) : (*field)->store(GRN_FLOAT_VALUE(value)); break; - case (MYSQL_TYPE_DATE) : case (MYSQL_TYPE_TIME) : + { + long long int hh, mm, ss, hhmmss, gval; + gval = GRN_TIME_VALUE(value); + gval /= (1000000); + ss = gval % 60; + gval /= 60; + mm = gval % 60; + gval /= 60; + hh = gval; + hhmmss = hh * 10000 + mm * 100 + ss; + (*field)->store((int) hhmmss); + break; + } + case (MYSQL_TYPE_DATE) : case (MYSQL_TYPE_YEAR) : case (MYSQL_TYPE_DATETIME) : (*field)->store(GRN_TIME_VALUE(value)); @@ -625,9 +638,23 @@ int ha_mroonga::write_row(uchar *buf) GRN_FLOAT_SET(ctx, record->value[j], (*field)->val_real()); break; } - case MYSQL_TYPE_DATE: case MYSQL_TYPE_TIME: + { + long long int hh, mm, ss, mval, gval; + mval = (*field)->val_int(); + ss = mval % 100; + mm = mval / 100 % 100; + hh = mval / 10000; + gval = (hh * 60 * 60 + mm * 60 + ss) * 1000000; + GRN_TIME_SET(ctx, record->value[j], gval); + break; + } case MYSQL_TYPE_YEAR: + { + long long int yyyy, mval, gval; + yyyy = (*field)->val_int(); + } + case MYSQL_TYPE_DATE: case MYSQL_TYPE_DATETIME: { GRN_TIME_SET(ctx, record->value[j], (*field)->val_int()); -------------- next part -------------- HTML����������������������������...Download