Tetsuro IKEDA
null+****@clear*****
Thu Oct 4 10:29:30 JST 2012
Tetsuro IKEDA 2009-06-01 15:02:11 +0900 (Mon, 01 Jun 2009) New Revision: 8724c50835cbb0783bc8de3f561dd5a605537e64 https://github.com/mroonga/mroonga/commit/8724c50835cbb0783bc8de3f561dd5a605537e64 Log: fix index_read for VARCHAR. Modified files: src/ha_groonga.cc Modified: src/ha_groonga.cc (+19 -3) =================================================================== --- src/ha_groonga.cc 2009-06-01 14:48:59 +0900 (f38cd37) +++ src/ha_groonga.cc 2009-06-01 15:02:11 +0900 (99d41c2) @@ -341,6 +341,7 @@ int ha_groonga::rnd_next(uchar *buf) } else { GRN_BULK_REWIND(&obj); grn_obj_get_value(mrn_ctx_tls, (*grn_field)->obj, gid, &obj); + /* TODO: refactoring. following can be share with index_read */ int *tmp_int; char *tmp_char; switch((*mysql_field)->type()) { @@ -514,9 +515,24 @@ int ha_groonga::index_read(uchar *buf, const uchar *key, MRN_LOG(GRN_LOG_DEBUG, "-> grn_obj_get_value: gid=%d, obj=%p", gid, (*grn_field)->obj); grn_obj_get_value(mrn_ctx_tls, (*grn_field)->obj, gid, &wrapper); - int *res; - res = (int*) GRN_BULK_HEAD(&wrapper); - (*mysql_field)->store(*res); + int *tmp_int; + char *tmp_char; + switch((*mysql_field)->type()) { + case (MYSQL_TYPE_LONG) : + tmp_int = (int*) GRN_BULK_HEAD(&wrapper); + MRN_LOG(GRN_LOG_DEBUG, "-> grn_obj_get_value: gid=%d, obj=%p, val=%d", + gid, (*grn_field)->obj, *tmp_int); + (*mysql_field)->set_notnull(); + (*mysql_field)->store(*tmp_int); + break; + case (MYSQL_TYPE_VARCHAR) : + tmp_char = (char*) GRN_BULK_HEAD(&wrapper); + MRN_LOG(GRN_LOG_DEBUG, "-> grn_obj_get_value: gid=%d, obj=%p, val=%s", + gid, (*grn_field)->obj, tmp_char); + (*mysql_field)->set_notnull(); + (*mysql_field)->store(tmp_char,strlen(tmp_char), system_charset_info); + break; + } } grn_obj_close(mrn_ctx_tls, &wrapper); -------------- next part -------------- HTML����������������������������...Download