Changeset: c7827eee7664 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c7827eee7664
Added Files:
        sql/test/BugTracker-2025/Tests/7633-crash-leftjoin-any.test
Modified Files:
        sql/backends/monet5/rel_bin.c
Branch: default
Log Message:

fixed out of memory (error result of longjmp) problem with leftjoin and any
added test for bug #7633


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
@@ -3016,14 +3016,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