mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-7474: Semi-Join's DuplicateWeedout strategy skipped ...
JOIN::cur_dups_producing_tables was not maintained correctly in the cases of greedy optimization (search_depth < n_tables). Moved it to POSITION structure where it will be maintained automatically. Removed POSITION::prefix_dups_producing_tables since its value can now be calculated.
This commit is contained in:
@ -813,7 +813,12 @@ typedef struct st_position :public Sql_alloc
|
||||
*/
|
||||
uint n_sj_tables;
|
||||
|
||||
table_map prefix_dups_producing_tables;
|
||||
/*
|
||||
Bitmap of semi-join inner tables that are in the join prefix and for
|
||||
which there's no provision for how to eliminate semi-join duplicates
|
||||
they produce.
|
||||
*/
|
||||
table_map dups_producing_tables;
|
||||
|
||||
table_map inner_tables_handled_with_other_sjs;
|
||||
|
||||
@ -1034,13 +1039,6 @@ public:
|
||||
*/
|
||||
table_map cur_sj_inner_tables;
|
||||
|
||||
/*
|
||||
Bitmap of semi-join inner tables that are in the join prefix and for
|
||||
which there's no provision for how to eliminate semi-join duplicates
|
||||
they produce.
|
||||
*/
|
||||
table_map cur_dups_producing_tables;
|
||||
|
||||
/* We also maintain a stack of join optimization states in * join->positions[] */
|
||||
/******* Join optimization state members end *******/
|
||||
|
||||
|
Reference in New Issue
Block a user