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

Reply via email to