Changeset: fe3f49abd7c2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/fe3f49abd7c2
Modified Files:
        sql/server/rel_select.c
        sql/test/SQLancer/Tests/sqlancer23.test
Branch: default
Log Message:

Missing defensive lines


diffs (49 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
@@ -3769,7 +3769,7 @@ static sql_exp *
                        if (a) {
                                list *nexps = NULL;
 
-                               if (!(nexps = 
check_arguments_and_find_largest_any_type(sql, *rel, exps, a, 0))) {
+                               if (!(nexps = 
check_arguments_and_find_largest_any_type(sql, rel ? *rel : NULL, exps, a, 0))) 
{
                                        a = NULL;
                                        /* reset error */
                                        sql->session->status = 0;
@@ -3794,7 +3794,7 @@ static sql_exp *
                                sql->errstr[0] = '\0';
                        }
                        a = NULL;
-                       if (rel_convert_types(sql, *rel, *rel, &l, &r, 1/*fix 
scale*/, type_equal) >= 0) {
+                       if (rel_convert_types(sql, rel ? *rel : NULL, rel ? 
*rel : NULL, &l, &r, 1/*fix scale*/, type_equal) >= 0) {
                                list *tps = sa_list(sql->sa);
 
                                t1 = exp_subtype(l);
@@ -3839,7 +3839,7 @@ static sql_exp *
                        a = sql_bind_func_(sql, sname, aname, 
exp_types(sql->sa, nexps), F_AGGR, false);
 
                        if (a) {
-                               if (!(nexps = 
check_arguments_and_find_largest_any_type(sql, *rel, exps, a, 0))) {
+                               if (!(nexps = 
check_arguments_and_find_largest_any_type(sql, rel ? *rel : NULL, exps, a, 0))) 
{
                                        a = NULL;
                                        /* reset error */
                                        sql->session->status = 0;
@@ -3868,7 +3868,7 @@ static sql_exp *
                                list *nexps = NULL;
                                sql_subfunc *sf = (sql_subfunc *) n->data;
 
-                               if (!list_empty(exps) && !(nexps = 
check_arguments_and_find_largest_any_type(sql, *rel, exps, sf, 0))) {
+                               if (!list_empty(exps) && !(nexps = 
check_arguments_and_find_largest_any_type(sql, rel ? *rel : NULL, exps, sf, 
0))) {
                                        /* reset error */
                                        sql->session->status = 0;
                                        sql->errstr[0] = '\0';
diff --git a/sql/test/SQLancer/Tests/sqlancer23.test 
b/sql/test/SQLancer/Tests/sqlancer23.test
--- a/sql/test/SQLancer/Tests/sqlancer23.test
+++ b/sql/test/SQLancer/Tests/sqlancer23.test
@@ -232,3 +232,6 @@ SELECT (SELECT 1 FROM (SELECT 1) x(x) HA
 
 statement error 42000!MIN: aggregate functions cannot be nested
 SELECT (SELECT min(min(x.x + y.y)) FROM (SELECT 1) x(x)) FROM (SELECT 1) y(y)
+
+statement error 42000!SELECT: cannot use non GROUP BY column 'x.x' in query 
results without an aggregate function
+SELECT (VALUES (prod(x.x - 1)), (x.x)) FROM (VALUES (1), (0.058128458)) x(x)
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to