1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

Merge 10.5 into 10.6

This commit is contained in:
Marko Mäkelä
2024-06-24 13:09:47 +03:00
333 changed files with 6721 additions and 6118 deletions

View File

@@ -741,7 +741,6 @@ public:
{
return
thd->killed ||
thd->is_fatal_error ||
thd->is_error() ||
alloced_sel_args > thd->variables.optimizer_max_sel_args;
}
@@ -1167,28 +1166,28 @@ public:
{ return new QUICK_RANGE_SELECT(thd, head, index, no_alloc, parent_alloc,
create_error); }
void need_sorted_output();
int init();
int reset(void);
int get_next();
void range_end();
void need_sorted_output() override;
int init() override;
int reset(void) override;
int get_next() override;
void range_end() override;
int get_next_prefix(uint prefix_length, uint group_key_parts,
uchar *cur_prefix);
bool reverse_sorted() { return 0; }
bool unique_key_range();
int init_ror_merged_scan(bool reuse_handler, MEM_ROOT *alloc);
void save_last_pos()
bool reverse_sorted() override { return 0; }
bool unique_key_range() override;
int init_ror_merged_scan(bool reuse_handler, MEM_ROOT *alloc) override;
void save_last_pos() override
{ file->position(record); }
int get_type() { return QS_TYPE_RANGE; }
void add_keys_and_lengths(String *key_names, String *used_lengths);
Explain_quick_select *get_explain(MEM_ROOT *alloc);
int get_type() override { return QS_TYPE_RANGE; }
void add_keys_and_lengths(String *key_names, String *used_lengths) override;
Explain_quick_select *get_explain(MEM_ROOT *alloc) override;
#ifndef DBUG_OFF
void dbug_dump(int indent, bool verbose);
void dbug_dump(int indent, bool verbose) override;
#endif
virtual void replace_handler(handler *new_file) { file= new_file; }
QUICK_SELECT_I *make_reverse(uint used_key_parts_arg);
void replace_handler(handler *new_file) override { file= new_file; }
QUICK_SELECT_I *make_reverse(uint used_key_parts_arg) override;
virtual void add_used_key_part_to_set();
void add_used_key_part_to_set() override;
private:
/* Default copy ctor used by QUICK_SELECT_DESC */
@@ -1236,13 +1235,13 @@ public:
:QUICK_RANGE_SELECT(thd, table, index_arg, no_alloc, parent_alloc,
create_err)
{};
virtual QUICK_RANGE_SELECT *clone(bool *create_error)
QUICK_RANGE_SELECT *clone(bool *create_error) override
{
DBUG_ASSERT(0);
return new QUICK_RANGE_SELECT_GEOM(thd, head, index, no_alloc,
parent_alloc, create_error);
}
virtual int get_next();
int get_next() override;
};
@@ -1318,16 +1317,16 @@ public:
QUICK_INDEX_SORT_SELECT(THD *thd, TABLE *table);
~QUICK_INDEX_SORT_SELECT();
int init();
void need_sorted_output() { DBUG_ASSERT(0); /* Can't do it */ }
int reset(void);
bool reverse_sorted() { return false; }
bool unique_key_range() { return false; }
bool is_keys_used(const MY_BITMAP *fields);
int init() override;
void need_sorted_output() override { DBUG_ASSERT(0); /* Can't do it */ }
int reset(void) override;
bool reverse_sorted() override { return false; }
bool unique_key_range() override { return false; }
bool is_keys_used(const MY_BITMAP *fields) override;
#ifndef DBUG_OFF
void dbug_dump(int indent, bool verbose);
void dbug_dump(int indent, bool verbose) override;
#endif
Explain_quick_select *get_explain(MEM_ROOT *alloc);
Explain_quick_select *get_explain(MEM_ROOT *alloc) override;
bool push_quick_back(QUICK_RANGE_SELECT *quick_sel_range);
@@ -1339,7 +1338,7 @@ public:
MEM_ROOT alloc;
THD *thd;
virtual bool is_valid()
bool is_valid() override
{
List_iterator_fast<QUICK_RANGE_SELECT> it(quick_selects);
QUICK_RANGE_SELECT *quick;
@@ -1358,7 +1357,7 @@ public:
/* used to get rows collected in Unique */
READ_RECORD read_record;
virtual void add_used_key_part_to_set();
void add_used_key_part_to_set() override;
};
@@ -1369,31 +1368,31 @@ private:
/* true if this select is currently doing a clustered PK scan */
bool doing_pk_scan;
protected:
int read_keys_and_merge();
int read_keys_and_merge() override;
public:
QUICK_INDEX_MERGE_SELECT(THD *thd_arg, TABLE *table)
:QUICK_INDEX_SORT_SELECT(thd_arg, table) {}
int get_next();
int get_type() { return QS_TYPE_INDEX_MERGE; }
void add_keys_and_lengths(String *key_names, String *used_lengths);
int get_next() override;
int get_type() override { return QS_TYPE_INDEX_MERGE; }
void add_keys_and_lengths(String *key_names, String *used_lengths) override;
};
class QUICK_INDEX_INTERSECT_SELECT : public QUICK_INDEX_SORT_SELECT
{
protected:
int read_keys_and_merge();
int read_keys_and_merge() override;
public:
QUICK_INDEX_INTERSECT_SELECT(THD *thd_arg, TABLE *table)
:QUICK_INDEX_SORT_SELECT(thd_arg, table) {}
key_map filtered_scans;
int get_next();
int get_type() { return QS_TYPE_INDEX_INTERSECT; }
void add_keys_and_lengths(String *key_names, String *used_lengths);
Explain_quick_select *get_explain(MEM_ROOT *alloc);
int get_next() override;
int get_type() override { return QS_TYPE_INDEX_INTERSECT; }
void add_keys_and_lengths(String *key_names, String *used_lengths) override;
Explain_quick_select *get_explain(MEM_ROOT *alloc) override;
};
@@ -1423,21 +1422,21 @@ public:
MEM_ROOT *parent_alloc);
~QUICK_ROR_INTERSECT_SELECT();
int init();
void need_sorted_output() { DBUG_ASSERT(0); /* Can't do it */ }
int reset(void);
int get_next();
bool reverse_sorted() { return false; }
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);
Explain_quick_select *get_explain(MEM_ROOT *alloc);
bool is_keys_used(const MY_BITMAP *fields);
void add_used_key_part_to_set();
int init() override;
void need_sorted_output() override { DBUG_ASSERT(0); /* Can't do it */ }
int reset(void) override;
int get_next() override;
bool reverse_sorted() override { return false; }
bool unique_key_range() override { return false; }
int get_type() override { return QS_TYPE_ROR_INTERSECT; }
void add_keys_and_lengths(String *key_names, String *used_lengths) override;
Explain_quick_select *get_explain(MEM_ROOT *alloc) override;
bool is_keys_used(const MY_BITMAP *fields) override;
void add_used_key_part_to_set() override;
#ifndef DBUG_OFF
void dbug_dump(int indent, bool verbose);
void dbug_dump(int indent, bool verbose) override;
#endif
int init_ror_merged_scan(bool reuse_handler, MEM_ROOT *alloc);
int init_ror_merged_scan(bool reuse_handler, MEM_ROOT *alloc) override;
bool push_quick_back(MEM_ROOT *alloc, QUICK_RANGE_SELECT *quick_sel_range);
class QUICK_SELECT_WITH_RECORD : public Sql_alloc
@@ -1454,7 +1453,7 @@ public:
*/
List<QUICK_SELECT_WITH_RECORD> quick_selects;
virtual bool is_valid()
bool is_valid() override
{
List_iterator_fast<QUICK_SELECT_WITH_RECORD> it(quick_selects);
QUICK_SELECT_WITH_RECORD *quick;
@@ -1503,26 +1502,26 @@ public:
QUICK_ROR_UNION_SELECT(THD *thd, TABLE *table);
~QUICK_ROR_UNION_SELECT();
int init();
void need_sorted_output() { DBUG_ASSERT(0); /* Can't do it */ }
int reset(void);
int get_next();
bool reverse_sorted() { return false; }
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);
Explain_quick_select *get_explain(MEM_ROOT *alloc);
bool is_keys_used(const MY_BITMAP *fields);
void add_used_key_part_to_set();
int init() override;
void need_sorted_output() override { DBUG_ASSERT(0); /* Can't do it */ }
int reset(void) override;
int get_next() override;
bool reverse_sorted() override { return false; }
bool unique_key_range() override { return false; }
int get_type() override { return QS_TYPE_ROR_UNION; }
void add_keys_and_lengths(String *key_names, String *used_lengths) override;
Explain_quick_select *get_explain(MEM_ROOT *alloc) override;
bool is_keys_used(const MY_BITMAP *fields) override;
void add_used_key_part_to_set() override;
#ifndef DBUG_OFF
void dbug_dump(int indent, bool verbose);
void dbug_dump(int indent, bool verbose) override;
#endif
bool push_quick_back(QUICK_SELECT_I *quick_sel_range);
List<QUICK_SELECT_I> quick_selects; /* Merged quick selects */
virtual bool is_valid()
bool is_valid() override
{
List_iterator_fast<QUICK_SELECT_I> it(quick_selects);
QUICK_SELECT_I *quick;
@@ -1648,21 +1647,21 @@ public:
void update_key_stat();
void adjust_prefix_ranges();
bool alloc_buffers();
int init();
void need_sorted_output() { /* always do it */ }
int reset();
int get_next();
bool reverse_sorted() { return false; }
bool unique_key_range() { return false; }
int get_type() { return QS_TYPE_GROUP_MIN_MAX; }
void add_keys_and_lengths(String *key_names, String *used_lengths);
void add_used_key_part_to_set();
int init() override;
void need_sorted_output() override { /* always do it */ }
int reset() override;
int get_next() override;
bool reverse_sorted() override { return false; }
bool unique_key_range() override { return false; }
int get_type() override { return QS_TYPE_GROUP_MIN_MAX; }
void add_keys_and_lengths(String *key_names, String *used_lengths) override;
void add_used_key_part_to_set() override;
#ifndef DBUG_OFF
void dbug_dump(int indent, bool verbose);
void dbug_dump(int indent, bool verbose) override;
#endif
bool is_agg_distinct() { return have_agg_distinct; }
bool loose_scan_is_scanning() { return is_index_scan; }
Explain_quick_select *get_explain(MEM_ROOT *alloc);
Explain_quick_select *get_explain(MEM_ROOT *alloc) override;
};
@@ -1670,18 +1669,18 @@ 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)
QUICK_RANGE_SELECT *clone(bool *create_error) override
{ 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; }
QUICK_SELECT_I *make_reverse(uint used_key_parts_arg)
int get_next() override;
bool reverse_sorted() override { return 1; }
int get_type() override { return QS_TYPE_RANGE_DESC; }
QUICK_SELECT_I *make_reverse(uint used_key_parts_arg) override
{
return this; // is already reverse sorted
}
private:
bool range_reads_after_key(QUICK_RANGE *range);
int reset(void) { rev_it.rewind(); return QUICK_RANGE_SELECT::reset(); }
int reset(void) override { rev_it.rewind(); return QUICK_RANGE_SELECT::reset(); }
List<QUICK_RANGE> rev_ranges;
List_iterator<QUICK_RANGE> rev_it;
uint used_key_parts;
@@ -1802,12 +1801,12 @@ 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)
QUICK_RANGE_SELECT *clone(bool *create_error) override
{ 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); }
int get_type() { return QS_TYPE_FULLTEXT; }
int init() override { return file->ft_init(); }
int reset() override { return 0; }
int get_next() override { return file->ha_ft_read(record); }
int get_type() override { return QS_TYPE_FULLTEXT; }
};
FT_SELECT *get_ft_select(THD *thd, TABLE *table, uint key);