mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
5.5-merge
This commit is contained in:
@ -288,6 +288,7 @@ public:
|
||||
|
||||
virtual bool reverse_sorted() = 0;
|
||||
virtual bool unique_key_range() { return false; }
|
||||
virtual bool clustered_pk_range() { return false; }
|
||||
|
||||
/*
|
||||
Request that this quick select produces sorted output. Not all quick
|
||||
@ -350,6 +351,13 @@ public:
|
||||
*/
|
||||
virtual bool is_keys_used(const MY_BITMAP *fields);
|
||||
|
||||
/**
|
||||
Simple sanity check that the quick select has been set up
|
||||
correctly. Function is overridden by quick selects that merge
|
||||
indices.
|
||||
*/
|
||||
virtual bool is_valid() { return index != MAX_KEY; };
|
||||
|
||||
/*
|
||||
rowid of last row retrieved by this quick select. This is used only when
|
||||
doing ROR-index_merge selects
|
||||
@ -595,6 +603,24 @@ public:
|
||||
THD *thd;
|
||||
int read_keys_and_merge();
|
||||
|
||||
bool clustered_pk_range() { return test(pk_quick_select); }
|
||||
|
||||
virtual bool is_valid()
|
||||
{
|
||||
List_iterator_fast<QUICK_RANGE_SELECT> it(quick_selects);
|
||||
QUICK_RANGE_SELECT *quick;
|
||||
bool valid= true;
|
||||
while ((quick= it++))
|
||||
{
|
||||
if (!quick->is_valid())
|
||||
{
|
||||
valid= false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return valid;
|
||||
}
|
||||
|
||||
/* used to get rows collected in Unique */
|
||||
READ_RECORD read_record;
|
||||
};
|
||||
@ -648,6 +674,22 @@ public:
|
||||
*/
|
||||
List<QUICK_RANGE_SELECT> quick_selects;
|
||||
|
||||
virtual bool is_valid()
|
||||
{
|
||||
List_iterator_fast<QUICK_RANGE_SELECT> it(quick_selects);
|
||||
QUICK_RANGE_SELECT *quick;
|
||||
bool valid= true;
|
||||
while ((quick= it++))
|
||||
{
|
||||
if (!quick->is_valid())
|
||||
{
|
||||
valid= false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return valid;
|
||||
}
|
||||
|
||||
/*
|
||||
Merged quick select that uses Clustered PK, if there is one. This quick
|
||||
select is not used for row retrieval, it is used for row retrieval.
|
||||
@ -699,6 +741,22 @@ public:
|
||||
|
||||
List<QUICK_SELECT_I> quick_selects; /* Merged quick selects */
|
||||
|
||||
virtual bool is_valid()
|
||||
{
|
||||
List_iterator_fast<QUICK_SELECT_I> it(quick_selects);
|
||||
QUICK_SELECT_I *quick;
|
||||
bool valid= true;
|
||||
while ((quick= it++))
|
||||
{
|
||||
if (!quick->is_valid())
|
||||
{
|
||||
valid= false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return valid;
|
||||
}
|
||||
|
||||
QUEUE queue; /* Priority queue for merge operation */
|
||||
MEM_ROOT alloc; /* Memory pool for this and merged quick selects data. */
|
||||
|
||||
|
Reference in New Issue
Block a user