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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list