Changeset: a32b0ae62e31 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/a32b0ae62e31 Modified Files: sql/server/rel_optimizer.c Branch: default Log Message:
Merge with Jan2022 branch. diffs (56 lines): diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -88,7 +88,7 @@ monetdb_configure_misc() # Some custom target will need these setting. include(monetdb-custom-targets) -if(NOT ${CMAKE_INSTALL_PREFIX} STREQUAL "/usr") +if(NOT ${CMAKE_INSTALL_PREFIX} STREQUAL "/usr" AND NOT ${CPACK_PACKAGING_INSTALL_PREFIX} STREQUAL "/") SET(CMAKE_SKIP_BUILD_RPATH FALSE) SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}") 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 @@ -4326,19 +4326,18 @@ gen_push_groupby_down(mvc *sql, sql_rel gbe = sa_list(sql->sa); /* push groupby to right, group on join exps */ if (j->exps) for (n = j->exps->h; n; n = n->next) { - sql_exp *ce = n->data, *e; + sql_exp *ce = n->data, *l = ce->l, *r = ce->r, *e; /* get left/right hand of e_cmp */ assert(ce->type == e_cmp); - if (ce->flag != cmp_equal) + if (ce->flag == cmp_equal && is_alias(l->type) && is_alias(r->type) && + (((e = rel_find_exp(cr, l)) && rel_find_exp(cl, r)) || + ((e = rel_find_exp(cr, r)) && rel_find_exp(cl, l)))) { + e = exp_ref(sql, e); + list_append(gbe, e); + } else { return rel; - e = rel_find_exp(cr, ce->l); - if (!e) - e = rel_find_exp(cr, ce->r); - if (!e) - return rel; - e = exp_ref(sql, e); - list_append(gbe, e); + } } if (!left) cr = j->r = rel_groupby(sql, cr, gbe); diff --git a/sql/test/SQLancer/Tests/sqlancer17.test b/sql/test/SQLancer/Tests/sqlancer17.test --- a/sql/test/SQLancer/Tests/sqlancer17.test +++ b/sql/test/SQLancer/Tests/sqlancer17.test @@ -502,3 +502,9 @@ query T nosort VALUES (CASE WHEN 5 = ANY(SELECT -1) THEN 2 END) ---- NULL + +query I nosort +SELECT 1 FROM (SELECT 1, TRUE) vx(vc0, vc2) INNER JOIN (SELECT 1) AS sub0(c0) +ON vx.vc0 <= ALL(SELECT 1) OR vx.vc2 WHERE 0.5 < ALL(SELECT 0.6 WHERE vx.vc2) +---- +1 _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list