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

Reply via email to