Commit 3c8b2ad5 authored by Sergey Petrunya's avatar Sergey Petrunya

Merge in MRR interface fixes.

parents e0686002 99c33a58
...@@ -543,11 +543,13 @@ typedef struct st_key_range ...@@ -543,11 +543,13 @@ typedef struct st_key_range
enum ha_rkey_function flag; enum ha_rkey_function flag;
} key_range; } key_range;
typedef void *range_id_t;
typedef struct st_key_multi_range typedef struct st_key_multi_range
{ {
key_range start_key; key_range start_key;
key_range end_key; key_range end_key;
char *ptr; /* Free to use by caller (ptr to row etc) */ range_id_t ptr; /* Free to use by caller (ptr to row etc) */
uint range_flag; /* key range flags see above */ uint range_flag; /* key range flags see above */
} KEY_MULTI_RANGE; } KEY_MULTI_RANGE;
......
...@@ -1218,7 +1218,7 @@ typedef struct st_range_seq_if ...@@ -1218,7 +1218,7 @@ typedef struct st_range_seq_if
out from the stream of records returned by multi_range_read_next() out from the stream of records returned by multi_range_read_next()
0 - The record shall be left in the stream 0 - The record shall be left in the stream
*/ */
bool (*skip_record) (range_seq_t seq, char *range_info, uchar *rowid); bool (*skip_record) (range_seq_t seq, range_id_t range_info, uchar *rowid);
/* /*
Check if the record combination matches the index condition Check if the record combination matches the index condition
...@@ -1231,10 +1231,10 @@ typedef struct st_range_seq_if ...@@ -1231,10 +1231,10 @@ typedef struct st_range_seq_if
0 - The record combination satisfies the index condition 0 - The record combination satisfies the index condition
1 - Otherwise 1 - Otherwise
*/ */
bool (*skip_index_tuple) (range_seq_t seq, char *range_info); bool (*skip_index_tuple) (range_seq_t seq, range_id_t range_info);
} RANGE_SEQ_IF; } RANGE_SEQ_IF;
typedef bool (*SKIP_INDEX_TUPLE_FUNC) (range_seq_t seq, char *range_info); typedef bool (*SKIP_INDEX_TUPLE_FUNC) (range_seq_t seq, range_id_t range_info);
class COST_VECT class COST_VECT
{ {
...@@ -1870,7 +1870,7 @@ class handler :public Sql_alloc ...@@ -1870,7 +1870,7 @@ class handler :public Sql_alloc
virtual int multi_range_read_init(RANGE_SEQ_IF *seq, void *seq_init_param, virtual int multi_range_read_init(RANGE_SEQ_IF *seq, void *seq_init_param,
uint n_ranges, uint mode, uint n_ranges, uint mode,
HANDLER_BUFFER *buf); HANDLER_BUFFER *buf);
virtual int multi_range_read_next(char **range_info); virtual int multi_range_read_next(range_id_t *range_info);
virtual int read_range_first(const key_range *start_key, virtual int read_range_first(const key_range *start_key,
const key_range *end_key, const key_range *end_key,
bool eq_range, bool sorted); bool eq_range, bool sorted);
......
...@@ -227,7 +227,7 @@ handler::multi_range_read_init(RANGE_SEQ_IF *seq_funcs, void *seq_init_param, ...@@ -227,7 +227,7 @@ handler::multi_range_read_init(RANGE_SEQ_IF *seq_funcs, void *seq_init_param,
@retval other Error code @retval other Error code
*/ */
int handler::multi_range_read_next(char **range_info) int handler::multi_range_read_next(range_id_t *range_info)
{ {
int result= HA_ERR_END_OF_FILE; int result= HA_ERR_END_OF_FILE;
bool range_res; bool range_res;
...@@ -306,7 +306,7 @@ int Mrr_simple_index_reader::init(handler *h_arg, RANGE_SEQ_IF *seq_funcs, ...@@ -306,7 +306,7 @@ int Mrr_simple_index_reader::init(handler *h_arg, RANGE_SEQ_IF *seq_funcs,
} }
int Mrr_simple_index_reader::get_next(char **range_info) int Mrr_simple_index_reader::get_next(range_id_t *range_info)
{ {
int res; int res;
while (!(res= file->handler::multi_range_read_next(range_info))) while (!(res= file->handler::multi_range_read_next(range_info)))
...@@ -338,7 +338,7 @@ int Mrr_simple_index_reader::get_next(char **range_info) ...@@ -338,7 +338,7 @@ int Mrr_simple_index_reader::get_next(char **range_info)
@retval Other Some other error; Error is printed @retval Other Some other error; Error is printed
*/ */
int Mrr_ordered_index_reader::get_next(char **range_info) int Mrr_ordered_index_reader::get_next(range_id_t *range_info)
{ {
int res; int res;
DBUG_ENTER("Mrr_ordered_index_reader::get_next"); DBUG_ENTER("Mrr_ordered_index_reader::get_next");
...@@ -481,7 +481,7 @@ int Mrr_ordered_index_reader::refill_buffer(bool initial) ...@@ -481,7 +481,7 @@ int Mrr_ordered_index_reader::refill_buffer(bool initial)
buf_manager->reset_buffer_sizes(buf_manager->arg); buf_manager->reset_buffer_sizes(buf_manager->arg);
key_buffer->reset(); key_buffer->reset();
key_buffer->setup_writing(keypar.key_size_in_keybuf, key_buffer->setup_writing(keypar.key_size_in_keybuf,
is_mrr_assoc? sizeof(char*) : 0); is_mrr_assoc? sizeof(range_id_t) : 0);
while (key_buffer->can_write() && while (key_buffer->can_write() &&
!(source_exhausted= mrr_funcs.next(mrr_iter, &cur_range))) !(source_exhausted= mrr_funcs.next(mrr_iter, &cur_range)))
...@@ -610,7 +610,7 @@ void Mrr_index_reader::position() ...@@ -610,7 +610,7 @@ void Mrr_index_reader::position()
int Mrr_ordered_rndpos_reader::refill_from_index_reader() int Mrr_ordered_rndpos_reader::refill_from_index_reader()
{ {
char *range_info; range_id_t range_info;
int res; int res;
DBUG_ENTER("Mrr_ordered_rndpos_reader::refill_from_index_reader"); DBUG_ENTER("Mrr_ordered_rndpos_reader::refill_from_index_reader");
...@@ -618,7 +618,7 @@ int Mrr_ordered_rndpos_reader::refill_from_index_reader() ...@@ -618,7 +618,7 @@ int Mrr_ordered_rndpos_reader::refill_from_index_reader()
index_rowid= index_reader->get_rowid_ptr(); index_rowid= index_reader->get_rowid_ptr();
rowid_buffer->reset(); rowid_buffer->reset();
rowid_buffer->setup_writing(file->ref_length, rowid_buffer->setup_writing(file->ref_length,
is_mrr_assoc? sizeof(char*) : 0); is_mrr_assoc? sizeof(range_id_t) : 0);
last_identical_rowid= NULL; last_identical_rowid= NULL;
...@@ -648,7 +648,7 @@ int Mrr_ordered_rndpos_reader::refill_from_index_reader() ...@@ -648,7 +648,7 @@ int Mrr_ordered_rndpos_reader::refill_from_index_reader()
rowid_buffer->sort((qsort2_cmp)rowid_cmp_reverse, (void*)file); rowid_buffer->sort((qsort2_cmp)rowid_cmp_reverse, (void*)file);
rowid_buffer->setup_reading(file->ref_length, rowid_buffer->setup_reading(file->ref_length,
is_mrr_assoc ? sizeof(char*) : 0); is_mrr_assoc ? sizeof(range_id_t) : 0);
DBUG_RETURN(rowid_buffer->is_empty()? HA_ERR_END_OF_FILE : 0); DBUG_RETURN(rowid_buffer->is_empty()? HA_ERR_END_OF_FILE : 0);
} }
...@@ -661,7 +661,7 @@ int Mrr_ordered_rndpos_reader::refill_from_index_reader() ...@@ -661,7 +661,7 @@ int Mrr_ordered_rndpos_reader::refill_from_index_reader()
with the same rowid value. with the same rowid value.
*/ */
int Mrr_ordered_rndpos_reader::get_next(char **range_info) int Mrr_ordered_rndpos_reader::get_next(range_id_t *range_info)
{ {
int res; int res;
...@@ -684,8 +684,8 @@ int Mrr_ordered_rndpos_reader::get_next(char **range_info) ...@@ -684,8 +684,8 @@ int Mrr_ordered_rndpos_reader::get_next(char **range_info)
if (!is_mrr_assoc) if (!is_mrr_assoc)
return 0; return 0;
memcpy(range_info, rowid_buffer->read_ptr2, sizeof(uchar*)); memcpy(range_info, rowid_buffer->read_ptr2, sizeof(range_id_t));
if (!index_reader->skip_record((char*)*range_info, rowid_buffer->read_ptr1)) if (!index_reader->skip_record(*range_info, rowid_buffer->read_ptr1))
return 0; return 0;
} }
...@@ -701,7 +701,7 @@ int Mrr_ordered_rndpos_reader::get_next(char **range_info) ...@@ -701,7 +701,7 @@ int Mrr_ordered_rndpos_reader::get_next(char **range_info)
if (is_mrr_assoc) if (is_mrr_assoc)
{ {
memcpy(range_info, rowid_buffer->read_ptr2, sizeof(uchar*)); memcpy(range_info, rowid_buffer->read_ptr2, sizeof(range_id_t));
if (index_reader->skip_record(*range_info, rowid_buffer->read_ptr1)) if (index_reader->skip_record(*range_info, rowid_buffer->read_ptr1))
continue; continue;
} }
...@@ -899,7 +899,7 @@ int DsMrr_impl::dsmrr_init(handler *h_arg, RANGE_SEQ_IF *seq_funcs, ...@@ -899,7 +899,7 @@ int DsMrr_impl::dsmrr_init(handler *h_arg, RANGE_SEQ_IF *seq_funcs,
/* index strategy doesn't need buffer, give all space to rowids*/ /* index strategy doesn't need buffer, give all space to rowids*/
rowid_buffer.set_buffer_space(full_buf, full_buf_end); rowid_buffer.set_buffer_space(full_buf, full_buf_end);
if (!rowid_buffer.have_space_for(primary_file->ref_length + if (!rowid_buffer.have_space_for(primary_file->ref_length +
(int)is_mrr_assoc * sizeof(char*))) (int)is_mrr_assoc * sizeof(range_id_t)))
goto use_default_impl; goto use_default_impl;
} }
...@@ -1139,7 +1139,7 @@ bool DsMrr_impl::setup_buffer_sharing(uint key_size_in_keybuf, ...@@ -1139,7 +1139,7 @@ bool DsMrr_impl::setup_buffer_sharing(uint key_size_in_keybuf,
key_part_map key_tuple_map) key_part_map key_tuple_map)
{ {
long key_buff_elem_size= key_size_in_keybuf + long key_buff_elem_size= key_size_in_keybuf +
(int)is_mrr_assoc * sizeof(void*); (int)is_mrr_assoc * sizeof(range_id_t);
KEY *key_info= &primary_file->get_table()->key_info[keyno]; KEY *key_info= &primary_file->get_table()->key_info[keyno];
/* /*
...@@ -1147,7 +1147,7 @@ bool DsMrr_impl::setup_buffer_sharing(uint key_size_in_keybuf, ...@@ -1147,7 +1147,7 @@ bool DsMrr_impl::setup_buffer_sharing(uint key_size_in_keybuf,
for keys and another part for rowids. for keys and another part for rowids.
*/ */
ulonglong rowid_buf_elem_size= primary_file->ref_length + ulonglong rowid_buf_elem_size= primary_file->ref_length +
(int)is_mrr_assoc * sizeof(char*); (int)is_mrr_assoc * sizeof(range_id_t);
/* /*
Use rec_per_key statistics as a basis to find out how many rowids Use rec_per_key statistics as a basis to find out how many rowids
...@@ -1284,7 +1284,7 @@ int Key_value_records_iterator::init(Mrr_ordered_index_reader *owner_arg) ...@@ -1284,7 +1284,7 @@ int Key_value_records_iterator::init(Mrr_ordered_index_reader *owner_arg)
} }
int Key_value_records_iterator::get_next(char **range_info) int Key_value_records_iterator::get_next(range_id_t *range_info)
{ {
int res; int res;
...@@ -1310,7 +1310,7 @@ int Key_value_records_iterator::get_next(char **range_info) ...@@ -1310,7 +1310,7 @@ int Key_value_records_iterator::get_next(char **range_info)
} }
identical_key_it.read(); /* This gets us next range_id */ identical_key_it.read(); /* This gets us next range_id */
memcpy(range_info, identical_key_it.read_ptr2, sizeof(char*)); memcpy(range_info, identical_key_it.read_ptr2, sizeof(range_id_t));
if (!last_identical_key_ptr || if (!last_identical_key_ptr ||
(identical_key_it.read_ptr1 == last_identical_key_ptr)) (identical_key_it.read_ptr1 == last_identical_key_ptr))
...@@ -1339,7 +1339,7 @@ void Key_value_records_iterator::move_to_next_key_value() ...@@ -1339,7 +1339,7 @@ void Key_value_records_iterator::move_to_next_key_value()
Calling convention is like multi_range_read_next() has. Calling convention is like multi_range_read_next() has.
*/ */
int DsMrr_impl::dsmrr_next(char **range_info) int DsMrr_impl::dsmrr_next(range_id_t *range_info)
{ {
int res; int res;
if (strategy_exhausted) if (strategy_exhausted)
......
...@@ -135,7 +135,7 @@ class Key_value_records_iterator ...@@ -135,7 +135,7 @@ class Key_value_records_iterator
public: public:
int init(Mrr_ordered_index_reader *owner_arg); int init(Mrr_ordered_index_reader *owner_arg);
int get_next(char **range_info); int get_next(range_id_t *range_info);
void move_to_next_key_value(); void move_to_next_key_value();
}; };
...@@ -186,7 +186,7 @@ typedef struct st_buffer_manager ...@@ -186,7 +186,7 @@ typedef struct st_buffer_manager
class Mrr_reader class Mrr_reader
{ {
public: public:
virtual int get_next(char **range_info) = 0; virtual int get_next(range_id_t *range_info) = 0;
virtual int refill_buffer(bool initial) = 0; virtual int refill_buffer(bool initial) = 0;
virtual ~Mrr_reader() {}; /* just to remove compiler warning */ virtual ~Mrr_reader() {}; /* just to remove compiler warning */
}; };
...@@ -211,7 +211,7 @@ class Mrr_index_reader : public Mrr_reader ...@@ -211,7 +211,7 @@ class Mrr_index_reader : public Mrr_reader
virtual uchar *get_rowid_ptr() = 0; virtual uchar *get_rowid_ptr() = 0;
/* Get the rowid (call this after get_next() call) */ /* Get the rowid (call this after get_next() call) */
virtual void position(); virtual void position();
virtual bool skip_record(char *range_id, uchar *rowid) = 0; virtual bool skip_record(range_id_t range_id, uchar *rowid) = 0;
virtual void interrupt_read() {} virtual void interrupt_read() {}
virtual void resume_read() {} virtual void resume_read() {}
...@@ -232,10 +232,10 @@ class Mrr_simple_index_reader : public Mrr_index_reader ...@@ -232,10 +232,10 @@ class Mrr_simple_index_reader : public Mrr_index_reader
uint mode, Key_parameters *key_par, uint mode, Key_parameters *key_par,
Lifo_buffer *key_buffer, Lifo_buffer *key_buffer,
Buffer_manager *buf_manager_arg); Buffer_manager *buf_manager_arg);
int get_next(char **range_info); int get_next(range_id_t *range_info);
int refill_buffer(bool initial) { return initial? 0: HA_ERR_END_OF_FILE; } int refill_buffer(bool initial) { return initial? 0: HA_ERR_END_OF_FILE; }
uchar *get_rowid_ptr() { return file->ref; } uchar *get_rowid_ptr() { return file->ref; }
bool skip_record(char *range_id, uchar *rowid) bool skip_record(range_id_t range_id, uchar *rowid)
{ {
return (file->mrr_funcs.skip_record && return (file->mrr_funcs.skip_record &&
file->mrr_funcs.skip_record(file->mrr_iter, range_id, rowid)); file->mrr_funcs.skip_record(file->mrr_iter, range_id, rowid));
...@@ -255,17 +255,17 @@ class Mrr_ordered_index_reader : public Mrr_index_reader ...@@ -255,17 +255,17 @@ class Mrr_ordered_index_reader : public Mrr_index_reader
uint mode, Key_parameters *key_par, uint mode, Key_parameters *key_par,
Lifo_buffer *key_buffer, Lifo_buffer *key_buffer,
Buffer_manager *buf_manager_arg); Buffer_manager *buf_manager_arg);
int get_next(char **range_info); int get_next(range_id_t *range_info);
int refill_buffer(bool initial); int refill_buffer(bool initial);
uchar *get_rowid_ptr() { return file->ref; } uchar *get_rowid_ptr() { return file->ref; }
bool skip_record(char *range_info, uchar *rowid) bool skip_record(range_id_t range_info, uchar *rowid)
{ {
return (mrr_funcs.skip_record && return (mrr_funcs.skip_record &&
mrr_funcs.skip_record(mrr_iter, range_info, rowid)); mrr_funcs.skip_record(mrr_iter, range_info, rowid));
} }
bool skip_index_tuple(char *range_info) bool skip_index_tuple(range_id_t range_info)
{ {
return (mrr_funcs.skip_index_tuple && return (mrr_funcs.skip_index_tuple &&
mrr_funcs.skip_index_tuple(mrr_iter, range_info)); mrr_funcs.skip_index_tuple(mrr_iter, range_info));
...@@ -343,7 +343,7 @@ class Mrr_ordered_rndpos_reader : public Mrr_reader ...@@ -343,7 +343,7 @@ class Mrr_ordered_rndpos_reader : public Mrr_reader
public: public:
int init(handler *file, Mrr_index_reader *index_reader, uint mode, int init(handler *file, Mrr_index_reader *index_reader, uint mode,
Lifo_buffer *buf); Lifo_buffer *buf);
int get_next(char **range_info); int get_next(range_id_t *range_info);
int refill_buffer(bool initial); int refill_buffer(bool initial);
private: private:
handler *file; /* Handler to use */ handler *file; /* Handler to use */
...@@ -540,7 +540,7 @@ class DsMrr_impl ...@@ -540,7 +540,7 @@ class DsMrr_impl
void *seq_init_param, uint n_ranges, uint mode, void *seq_init_param, uint n_ranges, uint mode,
HANDLER_BUFFER *buf); HANDLER_BUFFER *buf);
void dsmrr_close(); void dsmrr_close();
int dsmrr_next(char **range_info); int dsmrr_next(range_id_t *range_info);
ha_rows dsmrr_info(uint keyno, uint n_ranges, uint keys, uint key_parts, ha_rows dsmrr_info(uint keyno, uint n_ranges, uint keys, uint key_parts,
uint *bufsz, uint *flags, COST_VECT *cost); uint *bufsz, uint *flags, COST_VECT *cost);
......
...@@ -10519,7 +10519,7 @@ int QUICK_RANGE_SELECT::reset() ...@@ -10519,7 +10519,7 @@ int QUICK_RANGE_SELECT::reset()
int QUICK_RANGE_SELECT::get_next() int QUICK_RANGE_SELECT::get_next()
{ {
char *dummy; range_id_t dummy;
DBUG_ENTER("QUICK_RANGE_SELECT::get_next"); DBUG_ENTER("QUICK_RANGE_SELECT::get_next");
if (in_ror_merged_scan) if (in_ror_merged_scan)
{ {
......
...@@ -3712,7 +3712,9 @@ int JOIN_TAB_SCAN_MRR::open() ...@@ -3712,7 +3712,9 @@ int JOIN_TAB_SCAN_MRR::open()
int JOIN_TAB_SCAN_MRR::next() int JOIN_TAB_SCAN_MRR::next()
{ {
char **ptr= (char **) cache->get_curr_association_ptr(); char **ptr= (char **) cache->get_curr_association_ptr();
int rc= join_tab->table->file->multi_range_read_next(ptr) ? -1 : 0;
DBUG_ASSERT(sizeof(range_id_t) == sizeof(*ptr));
int rc= join_tab->table->file->multi_range_read_next((range_id_t*)ptr) ? -1 : 0;
if (!rc) if (!rc)
{ {
/* /*
...@@ -3836,7 +3838,7 @@ bool bka_range_seq_next(range_seq_t rseq, KEY_MULTI_RANGE *range) ...@@ -3836,7 +3838,7 @@ bool bka_range_seq_next(range_seq_t rseq, KEY_MULTI_RANGE *range)
*/ */
static static
bool bka_range_seq_skip_record(range_seq_t rseq, char *range_info, uchar *rowid) bool bka_range_seq_skip_record(range_seq_t rseq, range_id_t range_info, uchar *rowid)
{ {
DBUG_ENTER("bka_range_seq_skip_record"); DBUG_ENTER("bka_range_seq_skip_record");
JOIN_CACHE_BKA *cache= (JOIN_CACHE_BKA *) rseq; JOIN_CACHE_BKA *cache= (JOIN_CACHE_BKA *) rseq;
...@@ -3867,7 +3869,7 @@ bool bka_range_seq_skip_record(range_seq_t rseq, char *range_info, uchar *rowid) ...@@ -3867,7 +3869,7 @@ bool bka_range_seq_skip_record(range_seq_t rseq, char *range_info, uchar *rowid)
*/ */
static static
bool bka_skip_index_tuple(range_seq_t rseq, char *range_info) bool bka_skip_index_tuple(range_seq_t rseq, range_id_t range_info)
{ {
DBUG_ENTER("bka_skip_index_tuple"); DBUG_ENTER("bka_skip_index_tuple");
JOIN_CACHE_BKA *cache= (JOIN_CACHE_BKA *) rseq; JOIN_CACHE_BKA *cache= (JOIN_CACHE_BKA *) rseq;
...@@ -4203,7 +4205,7 @@ uint JOIN_CACHE_BKA::get_next_key(uchar ** key) ...@@ -4203,7 +4205,7 @@ uint JOIN_CACHE_BKA::get_next_key(uchar ** key)
0 otherwise 0 otherwise
*/ */
bool JOIN_CACHE_BKA::skip_index_tuple(char *range_info) bool JOIN_CACHE_BKA::skip_index_tuple(range_id_t range_info)
{ {
DBUG_ENTER("JOIN_CACHE_BKA::skip_index_tuple"); DBUG_ENTER("JOIN_CACHE_BKA::skip_index_tuple");
get_record_by_pos((uchar*)range_info); get_record_by_pos((uchar*)range_info);
...@@ -4311,7 +4313,7 @@ bool bkah_range_seq_next(range_seq_t rseq, KEY_MULTI_RANGE *range) ...@@ -4311,7 +4313,7 @@ bool bkah_range_seq_next(range_seq_t rseq, KEY_MULTI_RANGE *range)
*/ */
static static
bool bkah_range_seq_skip_record(range_seq_t rseq, char *range_info, bool bkah_range_seq_skip_record(range_seq_t rseq, range_id_t range_info,
uchar *rowid) uchar *rowid)
{ {
DBUG_ENTER("bkah_range_seq_skip_record"); DBUG_ENTER("bkah_range_seq_skip_record");
...@@ -4342,7 +4344,7 @@ bool bkah_range_seq_skip_record(range_seq_t rseq, char *range_info, ...@@ -4342,7 +4344,7 @@ bool bkah_range_seq_skip_record(range_seq_t rseq, char *range_info,
*/ */
static static
bool bkah_skip_index_tuple(range_seq_t rseq, char *range_info) bool bkah_skip_index_tuple(range_seq_t rseq, range_id_t range_info)
{ {
DBUG_ENTER("bka_unique_skip_index_tuple"); DBUG_ENTER("bka_unique_skip_index_tuple");
JOIN_CACHE_BKAH *cache= (JOIN_CACHE_BKAH *) rseq; JOIN_CACHE_BKAH *cache= (JOIN_CACHE_BKAH *) rseq;
...@@ -4456,7 +4458,7 @@ int JOIN_CACHE_BKAH::init() ...@@ -4456,7 +4458,7 @@ int JOIN_CACHE_BKAH::init()
*/ */
bool JOIN_CACHE_BKAH::skip_index_tuple(char *range_info) bool JOIN_CACHE_BKAH::skip_index_tuple(range_id_t range_info)
{ {
uchar *last_rec_ref_ptr= get_next_rec_ref((uchar*) range_info); uchar *last_rec_ref_ptr= get_next_rec_ref((uchar*) range_info);
uchar *next_rec_ref_ptr= last_rec_ref_ptr; uchar *next_rec_ref_ptr= last_rec_ref_ptr;
......
...@@ -1313,7 +1313,7 @@ class JOIN_CACHE_BKA :public JOIN_CACHE ...@@ -1313,7 +1313,7 @@ class JOIN_CACHE_BKA :public JOIN_CACHE
uint get_next_key(uchar **key); uint get_next_key(uchar **key);
/* Check index condition of the joined table for a record from BKA cache */ /* Check index condition of the joined table for a record from BKA cache */
bool skip_index_tuple(char *range_info); bool skip_index_tuple(range_id_t range_info);
}; };
...@@ -1403,5 +1403,5 @@ class JOIN_CACHE_BKAH :public JOIN_CACHE_BNLH ...@@ -1403,5 +1403,5 @@ class JOIN_CACHE_BKAH :public JOIN_CACHE_BNLH
enum Join_algorithm get_join_alg() { return BKAH_JOIN_ALG; } enum Join_algorithm get_join_alg() { return BKAH_JOIN_ALG; }
/* Check index condition of the joined table for a record from BKAH cache */ /* Check index condition of the joined table for a record from BKAH cache */
bool skip_index_tuple(char *range_info); bool skip_index_tuple(range_id_t range_info);
}; };
...@@ -3633,7 +3633,7 @@ int ha_maria::multi_range_read_init(RANGE_SEQ_IF *seq, void *seq_init_param, ...@@ -3633,7 +3633,7 @@ int ha_maria::multi_range_read_init(RANGE_SEQ_IF *seq, void *seq_init_param,
return ds_mrr.dsmrr_init(this, seq, seq_init_param, n_ranges, mode, buf); return ds_mrr.dsmrr_init(this, seq, seq_init_param, n_ranges, mode, buf);
} }
int ha_maria::multi_range_read_next(char **range_info) int ha_maria::multi_range_read_next(range_id_t *range_info)
{ {
return ds_mrr.dsmrr_next(range_info); return ds_mrr.dsmrr_next(range_info);
} }
......
...@@ -178,7 +178,7 @@ class ha_maria :public handler ...@@ -178,7 +178,7 @@ class ha_maria :public handler
*/ */
int multi_range_read_init(RANGE_SEQ_IF *seq, void *seq_init_param, int multi_range_read_init(RANGE_SEQ_IF *seq, void *seq_init_param,
uint n_ranges, uint mode, HANDLER_BUFFER *buf); uint n_ranges, uint mode, HANDLER_BUFFER *buf);
int multi_range_read_next(char **range_info); int multi_range_read_next(range_id_t *range_info);
ha_rows multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq, ha_rows multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq,
void *seq_init_param, void *seq_init_param,
uint n_ranges, uint *bufsz, uint n_ranges, uint *bufsz,
......
...@@ -2245,7 +2245,7 @@ int ha_myisam::multi_range_read_init(RANGE_SEQ_IF *seq, void *seq_init_param, ...@@ -2245,7 +2245,7 @@ int ha_myisam::multi_range_read_init(RANGE_SEQ_IF *seq, void *seq_init_param,
return ds_mrr.dsmrr_init(this, seq, seq_init_param, n_ranges, mode, buf); return ds_mrr.dsmrr_init(this, seq, seq_init_param, n_ranges, mode, buf);
} }
int ha_myisam::multi_range_read_next(char **range_info) int ha_myisam::multi_range_read_next(range_id_t *range_info)
{ {
return ds_mrr.dsmrr_next(range_info); return ds_mrr.dsmrr_next(range_info);
} }
......
...@@ -162,7 +162,7 @@ class ha_myisam: public handler ...@@ -162,7 +162,7 @@ class ha_myisam: public handler
*/ */
int multi_range_read_init(RANGE_SEQ_IF *seq, void *seq_init_param, int multi_range_read_init(RANGE_SEQ_IF *seq, void *seq_init_param,
uint n_ranges, uint mode, HANDLER_BUFFER *buf); uint n_ranges, uint mode, HANDLER_BUFFER *buf);
int multi_range_read_next(char **range_info); int multi_range_read_next(range_id_t *range_info);
ha_rows multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq, ha_rows multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq,
void *seq_init_param, void *seq_init_param,
uint n_ranges, uint *bufsz, uint n_ranges, uint *bufsz,
......
...@@ -12052,7 +12052,7 @@ int ha_innobase::multi_range_read_init(RANGE_SEQ_IF *seq, void *seq_init_param, ...@@ -12052,7 +12052,7 @@ int ha_innobase::multi_range_read_init(RANGE_SEQ_IF *seq, void *seq_init_param,
return ds_mrr.dsmrr_init(this, seq, seq_init_param, n_ranges, mode, buf); return ds_mrr.dsmrr_init(this, seq, seq_init_param, n_ranges, mode, buf);
} }
int ha_innobase::multi_range_read_next(char **range_info) int ha_innobase::multi_range_read_next(range_id_t *range_info)
{ {
return ds_mrr.dsmrr_next(range_info); return ds_mrr.dsmrr_next(range_info);
} }
......
...@@ -229,7 +229,7 @@ class ha_innobase: public handler ...@@ -229,7 +229,7 @@ class ha_innobase: public handler
*/ */
int multi_range_read_init(RANGE_SEQ_IF *seq, void *seq_init_param, int multi_range_read_init(RANGE_SEQ_IF *seq, void *seq_init_param,
uint n_ranges, uint mode, HANDLER_BUFFER *buf); uint n_ranges, uint mode, HANDLER_BUFFER *buf);
int multi_range_read_next(char **range_info); int multi_range_read_next(range_id_t *range_info);
ha_rows multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq, ha_rows multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq,
void *seq_init_param, void *seq_init_param,
uint n_ranges, uint *bufsz, uint n_ranges, uint *bufsz,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment