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 -- [email protected]
To unsubscribe send an email to [email protected]