Changeset: a418f4a273dc for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a418f4a273dc Modified Files: sql/server/rel_select.c sql/test/subquery/Tests/subquery.sql sql/test/subquery/Tests/subquery.stable.err sql/test/subquery/Tests/subquery.stable.out Branch: Nov2019 Log Message:
Parse value lists at rel_value_exp2 diffs (84 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 @@ -5731,13 +5731,16 @@ rel_value_exp2(sql_query *query, sql_rel return rel_column_ref(query, rel, se, f ); case SQL_NAME: return rel_var_ref(sql, se->data.sval, 1); + case SQL_VALUES: case SQL_WITH: case SQL_SELECT: { sql_rel *r; - if (se->token == SQL_WITH) + if (se->token == SQL_WITH) { r = rel_with_query(query, se); - else { + } else if (se->token == SQL_VALUES) { + r = rel_values(query, se); + } else { dlist *selection = NULL; if ((selection = simple_selection(se)) != NULL) { diff --git a/sql/test/subquery/Tests/subquery.sql b/sql/test/subquery/Tests/subquery.sql --- a/sql/test/subquery/Tests/subquery.sql +++ b/sql/test/subquery/Tests/subquery.sql @@ -89,6 +89,12 @@ SELECT 1 FROM integers i1 GROUP BY (VALU SELECT 1 FROM integers i1 GROUP BY (VALUES(1,2,3)); --error, subquery must return only one column +SELECT (VALUES(1)); + +SELECT (VALUES(1),(2)); --error, cardinality violation, scalar value expected + +SELECT (VALUES(1,2,3)); --error, subquery must return only one column + drop TABLE integers; -- varchar tests diff --git a/sql/test/subquery/Tests/subquery.stable.err b/sql/test/subquery/Tests/subquery.stable.err --- a/sql/test/subquery/Tests/subquery.stable.err +++ b/sql/test/subquery/Tests/subquery.stable.err @@ -58,6 +58,26 @@ MAPI = (monetdb) /var/tmp/mtest-8966/.s QUERY = SELECT i1.i FROM integers i1 WHERE i1.i >= (SELECT i1.i, i2.i FROM integers i2 WHERE i2.i > 1); --error, subquery must return a single column ERROR = !SELECT: subquery must return only one column CODE = 42000 +MAPI = (monetdb) /var/tmp/mtest-269992/.s.monetdb.37522 +QUERY = SELECT i1.i FROM integers i1 GROUP BY (SELECT i2.i FROM integers i2); --error, column "i1.i" must appear in the GROUP BY clause or be used in an aggregate function +ERROR = !SELECT: cannot use non GROUP BY column 'i1.i' in query results without an aggregate function +CODE = 42000 +MAPI = (monetdb) /var/tmp/mtest-269992/.s.monetdb.37522 +QUERY = SELECT 1 FROM integers i1 GROUP BY (VALUES(1), (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-269616/.s.monetdb.32681 +QUERY = SELECT 1 FROM integers i1 GROUP BY (VALUES(1,2,3)); --error, subquery must return only one column +ERROR = !SELECT: subquery must return only one column +CODE = 42000 +MAPI = (monetdb) /var/tmp/mtest-269616/.s.monetdb.32681 +QUERY = SELECT (VALUES(1),(2)); --error, cardinality violation, scalar value expected +ERROR = !Cardinality violation, scalar value expected +CODE = 21000 +MAPI = (monetdb) /var/tmp/mtest-269215/.s.monetdb.36194 +QUERY = SELECT (VALUES(1,2,3)); --error, subquery must return only one column +ERROR = !SELECT: subquery must return only one column +CODE = 42000 # 17:27:37 > # 17:27:37 > "Done." diff --git a/sql/test/subquery/Tests/subquery.stable.out b/sql/test/subquery/Tests/subquery.stable.out --- a/sql/test/subquery/Tests/subquery.stable.out +++ b/sql/test/subquery/Tests/subquery.stable.out @@ -301,6 +301,12 @@ stdout of test 'subquery` in directory ' % bigint, tinyint # type % 1, 2 # length [ 6, 42 ] +#SELECT (VALUES(1)); +% .L3 # table_name +% L3 # name +% tinyint # type +% 1 # length +[ 1 ] #drop TABLE integers; #CREATE TABLE strings(v VARCHAR(128)); #INSERT INTO strings VALUES ('hello'), ('world'), (NULL); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list