Changeset: a7ef571991e7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/a7ef571991e7
Added Files:
sql/test/BugTracker-2025/Tests/7635_name_propagation_missing.test
Modified Files:
sql/server/rel_rewriter.c
sql/test/BugTracker-2025/Tests/All
Branch: default
Log Message:
propaget aliases when simplifing expressions, fixes bug #7635. Added test for
bug #7635.
diffs (58 lines):
diff --git a/sql/server/rel_rewriter.c b/sql/server/rel_rewriter.c
--- a/sql/server/rel_rewriter.c
+++ b/sql/server/rel_rewriter.c
@@ -217,14 +217,19 @@ rewrite_simplify_exp(visitor *v, sql_rel
}
if (is_compare(e->type) && e->flag == cmp_equal && !is_semantics(e)) {
/* predicate_func = TRUE */
sql_exp *l = e->l, *r = e->r;
- if (is_func(l->type) && exp_is_true(r) &&
(is_anyequal_func(((sql_subfunc*)l->f)) ||
is_exists_func(((sql_subfunc*)l->f))))
+ if (is_func(l->type) && exp_is_true(r) &&
(is_anyequal_func(((sql_subfunc*)l->f)) ||
is_exists_func(((sql_subfunc*)l->f)))) {
+ if (exp_name(e))
+ exp_prop_alias(v->sql->sa, l, e);
return l;
+ }
if (is_func(l->type) && exp_is_false(r) && exp_is_not_null(r)
&& (is_anyequal_func(((sql_subfunc*)l->f)) ||
is_exists_func(((sql_subfunc*)l->f)))) {
sql_subfunc *sf = l->f;
if (is_anyequal_func(sf))
- return exp_in_func(v->sql,
((list*)l->l)->h->data, ((list*)l->l)->h->next->data, !is_anyequal(sf), 0);
- if (is_exists_func(sf))
- return exp_exists(v->sql,
((list*)l->l)->h->data, !is_exists(sf));
+ l = exp_in_func(v->sql, ((list*)l->l)->h->data,
((list*)l->l)->h->next->data, !is_anyequal(sf), 0);
+ else if (is_exists_func(sf))
+ l = exp_exists(v->sql, ((list*)l->l)->h->data,
!is_exists(sf));
+ if (exp_name(e))
+ exp_prop_alias(v->sql->sa, l, e);
return l;
}
}
diff --git a/sql/test/BugTracker-2025/Tests/7635_name_propagation_missing.test
b/sql/test/BugTracker-2025/Tests/7635_name_propagation_missing.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2025/Tests/7635_name_propagation_missing.test
@@ -0,0 +1,17 @@
+statement ok
+CREATE TABLE t0(c0 INT)
+
+statement ok
+INSERT INTO t0 VALUES (1)
+
+query II
+SELECT * FROM t0 INNER JOIN (SELECT (1 = ANY(VALUES (1)))) AS sub ON TRUE
+----
+1
+1
+
+query II
+SELECT * FROM t0 INNER JOIN (SELECT (1 = ANY(VALUES (1)) = TRUE)) AS sub ON
TRUE
+----
+1
+1
diff --git a/sql/test/BugTracker-2025/Tests/All
b/sql/test/BugTracker-2025/Tests/All
--- a/sql/test/BugTracker-2025/Tests/All
+++ b/sql/test/BugTracker-2025/Tests/All
@@ -10,4 +10,5 @@ HAVE_HGE?7637_str_to_decimal
7632-crash-leftjoin-exists
7633-crash-leftjoin-any
7634_join_with_subquery_crash
+7635_name_propagation_missing
7636_antijoin_crash
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]