Changeset: 7e32f1581859 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7e32f1581859
Modified Files:
        sql/server/rel_rel.h
        sql/server/rel_unnest.c
        sql/test/BugTracker-2017/Tests/crash_on_NULL_ptr.Bug-6130.stable.out
        sql/test/SQLancer/Tests/sqlancer07.sql
        sql/test/SQLancer/Tests/sqlancer07.stable.out
Branch: Oct2020
Log Message:

Reverting changeset b84b2e18141c That solution gives wrong results with other 
queries.


diffs (86 lines):

diff --git a/sql/server/rel_rel.h b/sql/server/rel_rel.h
--- a/sql/server/rel_rel.h
+++ b/sql/server/rel_rel.h
@@ -122,11 +122,7 @@ extern sql_rel *rel_zero_or_one(mvc *sql
 
 extern list *rel_dependencies(mvc *sql, sql_rel *r);
 
-#define exists_rewritter          (1 << 0)  //ORed
-#define is_exists_rewritter(X)    ((X & exists_rewritter) == exists_rewritter)
-
 typedef struct visitor {
-       int properties; /* to be used by visitors */
        int changes;
        int depth;              /* depth of the current relation */
        sql_rel *parent;
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
@@ -1576,14 +1576,14 @@ rewrite_exp_rel(visitor *v, sql_rel *rel
                        /* use a dummy projection for the single join */
                        sql_rel *nrel = rel_project(v->sql->sa, NULL, 
append(sa_list(v->sql->sa), exp_atom_bool(v->sql->sa, 1)));
 
-                       if (!rewrite_inner(v->sql, nrel, inner, (depth > 0 && 
is_exists_rewritter(v->properties))?op_left:op_join))
+                       if (!rewrite_inner(v->sql, nrel, inner, 
depth?op_left:op_join))
                                return NULL;
                        /* has to apply recursively */
                        if (!(e->l = rel_exp_visitor_bottomup(v, nrel, 
&rewrite_exp_rel, true)))
                                return NULL;
                }
        } else if (exp_has_rel(e) && !is_ddl(rel->op)) {
-               sql_exp *ne = rewrite_inner(v->sql, rel, 
exp_rel_get_rel(v->sql->sa, e), (depth > 0 && 
is_exists_rewritter(v->properties))?op_left:op_join);
+               sql_exp *ne = rewrite_inner(v->sql, rel, 
exp_rel_get_rel(v->sql->sa, e), depth?op_left:op_join);
 
                if (!ne)
                        return ne;
@@ -2618,7 +2618,7 @@ rewrite_exists(visitor *v, sql_rel *rel,
                                        ne = le;
 
                                if (exp_has_rel(ie)) {
-                                       visitor iv = { .sql = v->sql, 
.properties = exists_rewritter };
+                                       visitor iv = { .sql = v->sql };
                                        if (!rewrite_exp_rel(&iv, rel, ie, 
depth))
                                                return NULL;
                                }
diff --git 
a/sql/test/BugTracker-2017/Tests/crash_on_NULL_ptr.Bug-6130.stable.out 
b/sql/test/BugTracker-2017/Tests/crash_on_NULL_ptr.Bug-6130.stable.out
--- a/sql/test/BugTracker-2017/Tests/crash_on_NULL_ptr.Bug-6130.stable.out
+++ b/sql/test/BugTracker-2017/Tests/crash_on_NULL_ptr.Bug-6130.stable.out
@@ -232,7 +232,7 @@ stdout of test 'crash_on_NULL_ptr.Bug-61
 #  SELECT t.id, t.name, p.creationDate
 #  FROM messages p, message_tags pt, tags t
 #  WHERE p.creator IN (SELECT * FROM friends1)
-% sys.resultset,       sys.resultset # table_name
+% .resultset,  .resultset # table_name
 % name,        count # name
 % varchar,     bigint # type
 % 0,   1 # length
diff --git a/sql/test/SQLancer/Tests/sqlancer07.sql 
b/sql/test/SQLancer/Tests/sqlancer07.sql
--- a/sql/test/SQLancer/Tests/sqlancer07.sql
+++ b/sql/test/SQLancer/Tests/sqlancer07.sql
@@ -156,3 +156,6 @@ SELECT 1 FROM t2, t0 CROSS JOIN t1 WHERE
 DROP TABLE t0;
 DROP TABLE t1;
 DROP TABLE t2;
+
+SELECT 1 WHERE (SELECT 1 WHERE FALSE) IS NULL;
+       -- 1
diff --git a/sql/test/SQLancer/Tests/sqlancer07.stable.out 
b/sql/test/SQLancer/Tests/sqlancer07.stable.out
--- a/sql/test/SQLancer/Tests/sqlancer07.stable.out
+++ b/sql/test/SQLancer/Tests/sqlancer07.stable.out
@@ -216,7 +216,15 @@ stdout of test 'sqlancer07` in directory
 % bigint # type
 % 1 # length
 [ NULL ]
-#ROLLBACK;
+#DROP TABLE t0;
+#DROP TABLE t1;
+#DROP TABLE t2;
+#SELECT 1 WHERE (SELECT 1 WHERE FALSE) IS NULL;
+% .%4 # table_name
+% %4 # name
+% tinyint # type
+% 1 # length
+[ 1    ]
 
 # 10:16:14 >  
 # 10:16:14 >  "Done."
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to