diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2023-05-08 18:31:16 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2023-05-08 18:31:16 +0300 |
commit | 408970e97990c24067dc0f6b65491e805bceb04f (patch) | |
tree | 104cae3b160dc51d497cd4ec51c91badcf8456f7 | |
parent | 50cdf0b5ea8aa4b2b3f20ed8285debbff655cab9 (diff) | |
download | mariadb-git-408970e97990c24067dc0f6b65491e805bceb04f.tar.gz |
MDEV-30812 fixup: GCC 12.2.0 -Wmaybe-uninitialized
best_access_path(): Simplify the logic for computing "fanout".
This fixes up commit 4329ec5d3b109cb0bcbee151b5800dc7b19d1945
-rw-r--r-- | sql/sql_select.cc | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/sql/sql_select.cc b/sql/sql_select.cc index cff8b623d64..c050df17440 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -8526,25 +8526,26 @@ best_access_path(JOIN *join, fanout= hash_join_fanout(join, s, remaining_tables, rnd_records, hj_start_key, &stats_found); join_sel= 1.0; // Don't do the "10% heuristic" + if (stats_found) + goto fanout_computed; } - if (!stats_found) - { - /* - No OPTIMIZER_SWITCH_HASH_JOIN_CARDINALITY or no field statistics - found. - - Take into account if there is non constant constraints used with - earlier tables in the where expression. - If yes, this will set fanout to rnd_records/4. - We estimate that there will be HASH_FANOUT (10%) - hash matches / row. - */ - if (found_constraint && !force_estimate) - rnd_records= use_found_constraint(rnd_records); - fanout= rnd_records; - join_sel= 0.1; - } + /* + No OPTIMIZER_SWITCH_HASH_JOIN_CARDINALITY or no field statistics + found. + + Take into account if there is non constant constraints used with + earlier tables in the where expression. + If yes, this will set fanout to rnd_records/4. + We estimate that there will be HASH_FANOUT (10%) + hash matches / row. + */ + if (found_constraint && !force_estimate) + rnd_records= use_found_constraint(rnd_records); + fanout= rnd_records; + join_sel= 0.1; + + fanout_computed: tmp= s->quick ? s->quick->read_time : s->scan_time(); double cmp_time= (s->records - rnd_records)/TIME_FOR_COMPARE; tmp= COST_ADD(tmp, cmp_time); |