mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge 10.0-base -> 10.0
This commit is contained in:
@ -52,7 +52,7 @@ typedef struct st_key_part {
|
||||
Field::imagetype image_type;
|
||||
} KEY_PART;
|
||||
|
||||
|
||||
class Explain_quick_select;
|
||||
/*
|
||||
A "MIN_TUPLE < tbl.key_tuple < MAX_TUPLE" interval.
|
||||
|
||||
@ -345,13 +345,8 @@ public:
|
||||
|
||||
void add_key_name(String *str, bool *first);
|
||||
|
||||
/*
|
||||
Append text representation of quick select structure (what and how is
|
||||
merged) to str. The result is added to "Extra" field in EXPLAIN output.
|
||||
This function is implemented only by quick selects that merge other quick
|
||||
selects output and/or can produce output suitable for merging.
|
||||
*/
|
||||
virtual void add_info_string(String *str) {}
|
||||
/* Save information about quick select's query plan */
|
||||
virtual Explain_quick_select* get_explain(MEM_ROOT *alloc)= 0;
|
||||
|
||||
/*
|
||||
Return 1 if any index used by this quick select
|
||||
@ -478,7 +473,7 @@ public:
|
||||
{ file->position(record); }
|
||||
int get_type() { return QS_TYPE_RANGE; }
|
||||
void add_keys_and_lengths(String *key_names, String *used_lengths);
|
||||
void add_info_string(String *str);
|
||||
Explain_quick_select *get_explain(MEM_ROOT *alloc);
|
||||
#ifndef DBUG_OFF
|
||||
void dbug_dump(int indent, bool verbose);
|
||||
#endif
|
||||
@ -615,6 +610,7 @@ public:
|
||||
#ifndef DBUG_OFF
|
||||
void dbug_dump(int indent, bool verbose);
|
||||
#endif
|
||||
Explain_quick_select *get_explain(MEM_ROOT *alloc);
|
||||
|
||||
bool push_quick_back(QUICK_RANGE_SELECT *quick_sel_range);
|
||||
|
||||
@ -663,7 +659,6 @@ public:
|
||||
int get_next();
|
||||
int get_type() { return QS_TYPE_INDEX_MERGE; }
|
||||
void add_keys_and_lengths(String *key_names, String *used_lengths);
|
||||
void add_info_string(String *str);
|
||||
};
|
||||
|
||||
class QUICK_INDEX_INTERSECT_SELECT : public QUICK_INDEX_SORT_SELECT
|
||||
@ -679,7 +674,7 @@ public:
|
||||
int get_next();
|
||||
int get_type() { return QS_TYPE_INDEX_INTERSECT; }
|
||||
void add_keys_and_lengths(String *key_names, String *used_lengths);
|
||||
void add_info_string(String *str);
|
||||
Explain_quick_select *get_explain(MEM_ROOT *alloc);
|
||||
};
|
||||
|
||||
|
||||
@ -717,7 +712,7 @@ public:
|
||||
bool unique_key_range() { return false; }
|
||||
int get_type() { return QS_TYPE_ROR_INTERSECT; }
|
||||
void add_keys_and_lengths(String *key_names, String *used_lengths);
|
||||
void add_info_string(String *str);
|
||||
Explain_quick_select *get_explain(MEM_ROOT *alloc);
|
||||
bool is_keys_used(const MY_BITMAP *fields);
|
||||
#ifndef DBUG_OFF
|
||||
void dbug_dump(int indent, bool verbose);
|
||||
@ -796,7 +791,7 @@ public:
|
||||
bool unique_key_range() { return false; }
|
||||
int get_type() { return QS_TYPE_ROR_UNION; }
|
||||
void add_keys_and_lengths(String *key_names, String *used_lengths);
|
||||
void add_info_string(String *str);
|
||||
Explain_quick_select *get_explain(MEM_ROOT *alloc);
|
||||
bool is_keys_used(const MY_BITMAP *fields);
|
||||
#ifndef DBUG_OFF
|
||||
void dbug_dump(int indent, bool verbose);
|
||||
@ -944,11 +939,8 @@ public:
|
||||
void dbug_dump(int indent, bool verbose);
|
||||
#endif
|
||||
bool is_agg_distinct() { return have_agg_distinct; }
|
||||
virtual void append_loose_scan_type(String *str)
|
||||
{
|
||||
if (is_index_scan)
|
||||
str->append(STRING_WITH_LEN(" (scanning)"));
|
||||
}
|
||||
bool loose_scan_is_scanning() { return is_index_scan; }
|
||||
Explain_quick_select *get_explain(MEM_ROOT *alloc);
|
||||
};
|
||||
|
||||
|
||||
@ -990,6 +982,8 @@ class SQL_SELECT :public Sql_alloc {
|
||||
key_map quick_keys; // Possible quick keys
|
||||
key_map needed_reg; // Possible quick keys after prev tables.
|
||||
table_map const_tables,read_tables;
|
||||
/* See PARAM::possible_keys */
|
||||
key_map possible_keys;
|
||||
bool free_cond; /* Currently not used and always FALSE */
|
||||
|
||||
SQL_SELECT();
|
||||
|
Reference in New Issue
Block a user