Changeset: b4925bb84e5c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b4925bb84e5c
Modified Files:
        sql/server/rel_unnest.c
        sql/test/SQLancer/Tests/sqlancer14.test
Branch: Jul2021
Log Message:

Here a comparison must be generated on select relations with depth=0


diffs (42 lines):

diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c
--- a/sql/server/rel_unnest.c
+++ b/sql/server/rel_unnest.c
@@ -2895,8 +2895,11 @@ rewrite_compare(visitor *v, sql_rel *rel
                                        set_has_no_nil(lnull);
                                        le = exp_compare_func(v->sql, le, re, 
op, 0);
                                        le = rel_nop_(v->sql, rel, le, lnull, 
rnull, NULL, "sys", (quantifier==1)?"any":"all", card_value);
-                                       if (is_notequal_func(sf))
+                                       if (is_select(rel->op) && depth == 0) {
+                                               le = exp_compare(v->sql->sa, 
le, exp_atom_bool(v->sql->sa, is_notequal_func(sf) ? 0 : 1), cmp_equal);
+                                       } else if (is_notequal_func(sf)) {
                                                le = rel_unop_(v->sql, rel, le, 
"sys", "not", card_value);
+                                       }
                                } else if (is_project(rel->op) || depth) {
                                        le = exp_compare_func(v->sql, le, re, 
op, 0);
                                } else {
diff --git a/sql/test/SQLancer/Tests/sqlancer14.test 
b/sql/test/SQLancer/Tests/sqlancer14.test
--- a/sql/test/SQLancer/Tests/sqlancer14.test
+++ b/sql/test/SQLancer/Tests/sqlancer14.test
@@ -761,3 +761,22 @@ False
 
 statement ok
 DROP TABLE t0
+
+statement ok
+START TRANSACTION
+
+statement ok
+CREATE TABLE "t0"("c0" CHARACTER LARGE OBJECT, "c4" INTERVAL DAY)
+
+statement ok
+CREATE TABLE "t2"("c0" CHARACTER LARGE OBJECT)
+
+statement ok rowcount 2
+INSERT INTO "t2" VALUES ('X'), ('')
+
+query I rowsort
+select 1 from t0 where t0.c4 <= all(select interval '4' day) and t0.c0 <> 
all(select t2.c0 from t2)
+----
+
+statement ok
+ROLLBACK
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to