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