Kouhei Sutou
null+****@clear*****
Thu Oct 4 10:30:31 JST 2012
Kouhei Sutou 2011-10-03 20:33:59 +0900 (Mon, 03 Oct 2011) New Revision: 05ae300ab9c974606aead717ad16b94a9a436ec0 https://github.com/mroonga/mroonga/commit/05ae300ab9c974606aead717ad16b94a9a436ec0 Log: [wrapper] support index_next and index_prev for spatial index. But they aren't used in the current tests. They are needed? Modified files: ha_mroonga.cc Modified: ha_mroonga.cc (+26 -16) =================================================================== --- ha_mroonga.cc 2011-10-03 20:28:50 +0900 (f1b8166) +++ ha_mroonga.cc 2011-10-03 20:33:59 +0900 (ddf4b6a) @@ -4467,17 +4467,22 @@ int ha_mroonga::wrapper_index_next(uchar *buf) { int error = 0; MRN_DBUG_ENTER_METHOD(); - MRN_SET_WRAP_SHARE_KEY(share, table->s); - MRN_SET_WRAP_TABLE_KEY(this, table); - if (fulltext_searching) - set_pk_bitmap(); + KEY key_info = table->key_info[active_index]; + if (mrn_is_geo_key(&key_info)) { + error = wrapper_get_next_record(buf); + } else { + MRN_SET_WRAP_SHARE_KEY(share, table->s); + MRN_SET_WRAP_TABLE_KEY(this, table); + if (fulltext_searching) + set_pk_bitmap(); #ifdef MRN_HANDLER_HAVE_HA_INDEX_NEXT - error = wrap_handler->ha_index_next(buf); + error = wrap_handler->ha_index_next(buf); #else - error = wrap_handler->index_next(buf); + error = wrap_handler->index_next(buf); #endif - MRN_SET_BASE_SHARE_KEY(share, table->s); - MRN_SET_BASE_TABLE_KEY(this, table); + MRN_SET_BASE_SHARE_KEY(share, table->s); + MRN_SET_BASE_TABLE_KEY(this, table); + } DBUG_RETURN(error); } @@ -4505,17 +4510,22 @@ int ha_mroonga::wrapper_index_prev(uchar *buf) { int error = 0; MRN_DBUG_ENTER_METHOD(); - MRN_SET_WRAP_SHARE_KEY(share, table->s); - MRN_SET_WRAP_TABLE_KEY(this, table); - if (fulltext_searching) - set_pk_bitmap(); + KEY key_info = table->key_info[active_index]; + if (mrn_is_geo_key(&key_info)) { + error = wrapper_get_next_record(buf); + } else { + MRN_SET_WRAP_SHARE_KEY(share, table->s); + MRN_SET_WRAP_TABLE_KEY(this, table); + if (fulltext_searching) + set_pk_bitmap(); #ifdef MRN_HANDLER_HAVE_HA_INDEX_NEXT - error = wrap_handler->ha_index_prev(buf); + error = wrap_handler->ha_index_prev(buf); #else - error = wrap_handler->index_prev(buf); + error = wrap_handler->index_prev(buf); #endif - MRN_SET_BASE_SHARE_KEY(share, table->s); - MRN_SET_BASE_TABLE_KEY(this, table); + MRN_SET_BASE_SHARE_KEY(share, table->s); + MRN_SET_BASE_TABLE_KEY(this, table); + } DBUG_RETURN(error); } -------------- next part -------------- HTML����������������������������...다운로드