Changeset: cf17b423e5c4 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/cf17b423e5c4 Added Files: sql/test/BugTracker-2024/Tests/7582-ddl-exists.test Modified Files: sql/server/rel_unnest.c sql/test/BugTracker-2024/Tests/All Branch: Aug2024 Log Message:
EXISTS condition in DDL must be inside __at least__ 1 relation. Fixes #7582. diffs (28 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 @@ -3603,7 +3603,7 @@ rewrite_exists(visitor *v, sql_rel *rel, exp_label(v->sql->sa, le, ++v->sql->label); le = exp_ref(v->sql, le); - if (depth == 1 && is_ddl(rel->op)) { /* exists is at a ddl statement, it must be inside a relation */ + if (depth >= 1 && is_ddl(rel->op)) { /* exists is at a ddl statement, it must be inside at least a relation */ sq = rel_groupby(v->sql, sq, NULL); sql_subfunc *ea = sql_bind_func(v->sql, "sys", is_exists(sf)?"exist":"not_exist", exp_subtype(le), NULL, F_AGGR, true, true); le = rel_groupby_add_aggr(v->sql, sq, exp_aggr1(v->sql->sa, le, ea, 0, 0, CARD_AGGR, 0)); diff --git a/sql/test/BugTracker-2024/Tests/7582-ddl-exists.test b/sql/test/BugTracker-2024/Tests/7582-ddl-exists.test new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2024/Tests/7582-ddl-exists.test @@ -0,0 +1,3 @@ +statement ok +CREATE OR REPLACE FUNCTION test () RETURNS boolean +BEGIN RETURN CASE WHEN EXISTS (SELECT id FROM sys._tables) THEN TRUE ELSE FALSE END; END; diff --git a/sql/test/BugTracker-2024/Tests/All b/sql/test/BugTracker-2024/Tests/All --- a/sql/test/BugTracker-2024/Tests/All +++ b/sql/test/BugTracker-2024/Tests/All @@ -91,3 +91,4 @@ 7572-max-length-changes 7570-timestamp-str 7574-startswith-bug 7580-date-diff +7582-ddl-exists _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org