1
0
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:
Sergei Petrunia
2015-03-17 13:26:33 +03:00
parent 5a3bf84468
commit c020d362b6
8 changed files with 341 additions and 16 deletions

View File

@ -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 *******/