1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

Adding multi_range_read support to partitions

Other things:
- Cleanup of allocated bitmaps done in open(), which
  simplifies init_partition_bitmaps()
- Add needed defines in ha_spider.cc to enable new spider code
- Fixed some DBUG_PRINT() to be consistent with normal code
- Removed end space
- The changes in test cases partition_innodb, partition_range,
  partition_pruning etc are becasue partitions can now more exactly
  calculate the number of rows in a range.

Contains spider patches:
014,015,023,033,035,037,040,042,044,045,049,050,051,053,059
This commit is contained in:
Monty
2017-07-05 18:20:06 +03:00
parent d5268a610a
commit 8eeb689e9f
26 changed files with 2486 additions and 224 deletions

View File

@ -1047,6 +1047,10 @@ bool quick_range_seq_next(range_seq_t rseq, KEY_MULTI_RANGE *range);
class QUICK_RANGE_SELECT : public QUICK_SELECT_I
{
protected:
THD *thd;
bool no_alloc;
MEM_ROOT *parent_alloc;
/* true if we enabled key only reads */
handler *file;
@ -1085,6 +1089,9 @@ public:
QUICK_RANGE_SELECT(THD *thd, TABLE *table,uint index_arg,bool no_alloc,
MEM_ROOT *parent_alloc, bool *create_err);
~QUICK_RANGE_SELECT();
virtual QUICK_RANGE_SELECT *clone(bool *create_error)
{ return new QUICK_RANGE_SELECT(thd, head, index, no_alloc, parent_alloc,
create_error); }
void need_sorted_output();
int init();
@ -1155,6 +1162,12 @@ public:
:QUICK_RANGE_SELECT(thd, table, index_arg, no_alloc, parent_alloc,
create_err)
{};
virtual QUICK_RANGE_SELECT *clone(bool *create_error)
{
DBUG_ASSERT(0);
return new QUICK_RANGE_SELECT_GEOM(thd, head, index, no_alloc,
parent_alloc, create_error);
}
virtual int get_next();
};
@ -1584,6 +1597,8 @@ class QUICK_SELECT_DESC: public QUICK_RANGE_SELECT
{
public:
QUICK_SELECT_DESC(QUICK_RANGE_SELECT *q, uint used_key_parts);
virtual QUICK_RANGE_SELECT *clone(bool *create_error)
{ DBUG_ASSERT(0); return new QUICK_SELECT_DESC(this, used_key_parts); }
int get_next();
bool reverse_sorted() { return 1; }
int get_type() { return QS_TYPE_RANGE_DESC; }
@ -1658,6 +1673,8 @@ public:
QUICK_RANGE_SELECT (thd, table, key, 1, NULL, create_err)
{ (void) init(); }
~FT_SELECT() { file->ft_end(); }
virtual QUICK_RANGE_SELECT *clone(bool *create_error)
{ DBUG_ASSERT(0); return new FT_SELECT(thd, head, index, create_error); }
int init() { return file->ft_init(); }
int reset() { return 0; }
int get_next() { return file->ha_ft_read(record); }