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