int _myrg_init_queue(MYRG_INFO *info,int inx,enum ha_rkey_function search_flag) { int error=0; QUEUE *q= &(info->by_key); if (inx < (int) info->keys) { if (!is_queue_inited(q)) { if (init_queue(q,info->tables, 0, (myisam_readnext_vec[search_flag] == SEARCH_SMALLER), queue_key_cmp, info->open_tables->table->s->keyinfo[inx].seg)) error=my_errno; } else { if (reinit_queue(q,info->tables, 0, (myisam_readnext_vec[search_flag] == SEARCH_SMALLER), queue_key_cmp, info->open_tables->table->s->keyinfo[inx].seg)) error=my_errno; } } return error; }
int _myrg_init_queue(MYRG_INFO *info,int inx,enum ha_rkey_function search_flag) { int error=0; QUEUE *q= &(info->by_key); if (inx < (int) info->keys) { if (!is_queue_inited(q)) { if (init_queue(q,info->tables, 0, (myisam_readnext_vec[search_flag] == SEARCH_SMALLER), queue_key_cmp, info->open_tables->table->s->keyinfo[inx].seg)) error=my_errno; } else { if (reinit_queue(q,info->tables, 0, (myisam_readnext_vec[search_flag] == SEARCH_SMALLER), queue_key_cmp, info->open_tables->table->s->keyinfo[inx].seg)) error=my_errno; } } else { /* inx may be bigger than info->keys if there are no underlying tables defined. In this case we should return empty result. As we check for underlying tables conformance when we open a table, we may not enter this branch with underlying table that has less keys than merge table have. */ DBUG_ASSERT(!info->tables); error= my_errno= HA_ERR_END_OF_FILE; } return error; }