Changeset: bb887803c742 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bb887803c742 Modified Files: sql/server/rel_optimizer.c Branch: default Log Message:
Fixing bad merge from Oct2020 diffs (41 lines): diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -5364,19 +5364,6 @@ find_projection_for_join2semi(sql_rel *r if (is_project(rel->op) && !is_union(rel->op)) { if (rel->card < CARD_AGGR) /* const or groupby without group by exps */ return true; - - if (is_groupby(rel->op)) { /* if just groupby columns are projected, it will be distinct */ - bool all_groupby_columns = true; - - if (list_empty(rel->r)) /* global aggregate */ - return true; - for (node *n = rel->exps->h; n && all_groupby_columns; n = n->next) { - sql_exp *e = n->data; - all_groupby_columns &= (e->type == e_column && (find_prop(e->p, PROP_HASHCOL) || exps_find_exp(rel->r, e))); - } - if (all_groupby_columns) - return true; - } if (list_length(rel->exps) == 1) { sql_exp *e = rel->exps->h->data; /* a single group by column in the projection list from a group by relation is guaranteed to be unique, but not an aggregate */ @@ -5385,7 +5372,8 @@ find_projection_for_join2semi(sql_rel *r sql_exp *found = NULL; bool underjoin = false; - if (is_groupby(rel->op) || need_distinct(rel) || find_prop(e->p, PROP_HASHCOL)) + /* if just one groupby column is projected, it will be distinct */ + if ((is_groupby(rel->op) && list_length(rel->r) == 1 && exps_find_exp(rel->r, e)) || need_distinct(rel) || find_prop(e->p, PROP_HASHCOL)) return true; if ((found = rel_find_exp_and_corresponding_rel(rel->l, e, &res, &underjoin)) && !underjoin) { /* grouping column on inner relation */ @@ -5408,6 +5396,7 @@ find_projection_for_join2semi(sql_rel *r return false; } + static sql_rel * find_candidate_join2semi(sql_rel *rel, bool *swap) { _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list