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]

Reply via email to