Changeset: 4c3d17673484 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/4c3d17673484
Added Files:
sql/test/BugTracker-2025/Tests/7633-crash-leftjoin-any.test
Modified Files:
sql/backends/monet5/rel_bin.c
Branch: Mar2025
Log Message:
fixed out of memory (error result of longjmp) problem with leftjoin and any
added test for bug #7633
(grafted from c7827eee76640b5aa0c6c60c3b9622e6acf3373a)
diffs (51 lines):
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -3031,14 +3031,12 @@ rel2bin_groupjoin(backend *be, sql_rel *
stmt *left = NULL, *right = NULL, *join = NULL, *jl = NULL, *jr = NULL,
*m = NULL, *ls = NULL, *res;
bool need_project = false, exist = true, mark = false;
- if (rel->op == op_left) { /* left outer group join */
- if (list_length(rel->attr) == 1) {
- sql_exp *e = rel->attr->h->data;
- if (exp_is_atom(e))
- mark = true;
- if (exp_is_atom(e) && exp_is_false(e))
- exist = false;
- }
+ if (list_length(rel->attr) == 1) {
+ sql_exp *e = rel->attr->h->data;
+ if (exp_is_atom(e))
+ mark = true;
+ if (exp_is_atom(e) && exp_is_false(e))
+ exist = false;
}
if (rel->l) /* first construct the left sub relation */
diff --git a/sql/test/BugTracker-2025/Tests/7633-crash-leftjoin-any.test
b/sql/test/BugTracker-2025/Tests/7633-crash-leftjoin-any.test
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2025/Tests/7633-crash-leftjoin-any.test
@@ -0,0 +1,22 @@
+
+statement ok
+CREATE TABLE t0(c0 INT)
+
+statement ok
+CREATE TABLE t1(LIKE t0)
+
+statement ok
+INSERT INTO t0 VALUES(1)
+
+statement ok
+INSERT INTO t1 VALUES(1)
+
+query II
+SELECT * FROM t1 LEFT JOIN t0 on ((0 = ANY( SELECT (t1.c0) FROM t0)) IS NULL)
+----
+1
+NULL
+
+query II
+SELECT * FROM t1 INNER JOIN t0 on ((0 = ANY( SELECT (t1.c0) FROM t0)) IS NULL)
+----
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]