Changeset: 668f24af5e6c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=668f24af5e6c
Modified Files:
        sql/server/rel_select.c
        sql/test/subquery/Tests/subquery4.sql
        sql/test/subquery/Tests/subquery4.stable.err
Branch: Jun2020
Log Message:

Missing rel_zero_or_one case


diffs (45 lines):

diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -2757,12 +2757,11 @@ rel_logical_exp(sql_query *query, sql_re
                        return sql_error(sql, 02, SQLSTATE(42000) "SELECT: 
subquery must return only one column");
                if (!rel)
                        return sq;
+               sq = rel_zero_or_one(sql, sq, ek);
                if (is_sql_where(f)) {
-                       sq = rel_zero_or_one(sql, sq, ek);
                        sql_exp *le = exp_rel(sql, sq), *re;
                        sql_subtype bt;
 
-                       /* todo add zero or one */
                        sql_find_subtype(&bt, "boolean", 0, 0);
                        le = rel_check_type(sql, &bt, rel, le, type_equal);
                        if (!le)
diff --git a/sql/test/subquery/Tests/subquery4.sql 
b/sql/test/subquery/Tests/subquery4.sql
--- a/sql/test/subquery/Tests/subquery4.sql
+++ b/sql/test/subquery/Tests/subquery4.sql
@@ -199,6 +199,8 @@ SELECT (SELECT 1 UNION ALL SELECT 2); --
 
 SELECT (SELECT 1 UNION ALL SELECT 2), (SELECT 1 UNION ALL SELECT 2); --error, 
more than one row returned by a subquery used as an expression
 
+SELECT 1 HAVING (SELECT 1 UNION SELECT 2); --error, more than one row returned 
by a subquery used as an expression
+
 DECLARE myvar INT;
 SELECT (SELECT i) INTO myvar FROM integers; --error, one row max
 DECLARE ovar INT;
diff --git a/sql/test/subquery/Tests/subquery4.stable.err 
b/sql/test/subquery/Tests/subquery4.stable.err
--- a/sql/test/subquery/Tests/subquery4.stable.err
+++ b/sql/test/subquery/Tests/subquery4.stable.err
@@ -96,7 +96,11 @@ MAPI  = (monetdb) /var/tmp/mtest-238840/
 QUERY = SELECT (SELECT 1 UNION ALL SELECT 2), (SELECT 1 UNION ALL SELECT 2); 
--error, more than one row returned by a subquery used as an expression
 ERROR = !Cardinality violation, scalar value expected
 CODE  = 21000
-MAPI  = (monetdb) /var/tmp/mtest-238840/.s.monetdb.32973
+MAPI  = (monetdb) /var/tmp/mtest-204402/.s.monetdb.30372
+QUERY = SELECT 1 HAVING (SELECT 1 UNION SELECT 2); --error, more than one row 
returned by a subquery used as an expression
+ERROR = !Cardinality violation, scalar value expected
+CODE  = 21000
+MAPI  = (monetdb) /var/tmp/mtest-204402/.s.monetdb.30372
 QUERY = SELECT (SELECT i) INTO myvar FROM integers; --error, one row max
 ERROR = !Cardinality violation, scalar value expected
 CODE  = 21000
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to