Changeset: b5191e96a368 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b5191e96a368
Removed Files:
        sql/test/SQLancer/Tests/sqlancer07.sql
        sql/test/SQLancer/Tests/sqlancer07.stable.err
        sql/test/SQLancer/Tests/sqlancer07.stable.err.int128
        sql/test/SQLancer/Tests/sqlancer10.sql
Modified Files:
        monetdb5/mal/mal_embedded.c
        sql/server/rel_select.c
        sql/test/prepare/Tests/sqlancer_prepare.sql
        sql/test/prepare/Tests/sqlancer_prepare.stable.err
        sql/test/prepare/Tests/sqlancer_prepare.stable.err.int128
Branch: default
Log Message:

Merged with Oct2020


diffs (99 lines):

diff --git a/monetdb5/mal/mal_embedded.c b/monetdb5/mal/mal_embedded.c
--- a/monetdb5/mal/mal_embedded.c
+++ b/monetdb5/mal/mal_embedded.c
@@ -120,7 +120,7 @@ malEmbeddedBoot(int workerlimit, int mem
                MCcloseClient(c);
                return msg;
        }
-       char *modules[3] = { "embedded", "sql" };
+       char *modules[5] = { "embedded", "sql", "generator", "udf" };
        if ((msg = malIncludeModules(c, modules, 0, !with_mapi_server)) != 
MAL_SUCCEED) {
                MCcloseClient(c);
                return msg;
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
@@ -1798,7 +1798,7 @@ exp_exist(sql_query *query, sql_rel *rel
                return NULL;
        } else if (exp_is_rel(le)) { /* for the subquery case, propagate to the 
inner query */
                sql_rel *r = exp_rel_get_rel(sql->sa, le);
-               if (is_simple_project(r->op) || is_groupby(r->op)) {
+               if ((is_simple_project(r->op) || is_groupby(r->op)) && 
!list_empty(r->exps)) {
                        for (node *n = r->exps->h; n; n = n->next)
                                if (!exp_subtype(n->data) && 
rel_set_type_param(sql, sql_bind_localtype("bit"), r, n->data, 0) < 0) /* 
workaround */
                                        return NULL;
@@ -4069,6 +4069,8 @@ rel_group_column(sql_query *query, sql_r
                        return NULL;
                }
        }
+       if (!exp_subtype(e))
+               return sql_error(sql, 01, SQLSTATE(42000) "Cannot have a 
parameter (?) for group by column");
        return e;
 }
 
@@ -4421,6 +4423,8 @@ rel_order_by(sql_query *query, sql_rel *
                        }
                        if (!e)
                                return NULL;
+                       if (!exp_subtype(e))
+                               return sql_error(sql, 01, SQLSTATE(42000) 
"Cannot have a parameter (?) for order by column");
                        set_direction(e, direction);
                        list_append(exps, e);
                } else {
diff --git a/sql/test/prepare/Tests/sqlancer_prepare.sql 
b/sql/test/prepare/Tests/sqlancer_prepare.sql
--- a/sql/test/prepare/Tests/sqlancer_prepare.sql
+++ b/sql/test/prepare/Tests/sqlancer_prepare.sql
@@ -54,3 +54,7 @@ prepare values (0.34, (values ((select ?
 prepare with cte0(c0) as (select 1), cte1(c0,c1,c2) as (select distinct 1, 2, 
false)
 select distinct least('y', (values (''), (''))), 1, (select ? from (select 1) 
as l1v0(x))
 from cte0 as l0cte0, cte1 as l0cte1 order by l0cte0.c0 desc nulls last, 
l0cte1.c2 desc nulls first; -- ? can't be defined, so error
+
+prepare with cte0(c0) as (select 2) select 1 <> all(select 2 from (values 
(1),(2)) as t1) from cte0 as l0cte0 group by ?; --error, cannot have a 
parameter for group by column
+
+prepare with cte0(c0) as (select 2) select 1 <> all(select 2 from (values 
(1),(2)) as t1) from cte0 as l0cte0 order by ?; --error, cannot have a 
parameter for order by column
diff --git a/sql/test/prepare/Tests/sqlancer_prepare.stable.err 
b/sql/test/prepare/Tests/sqlancer_prepare.stable.err
--- a/sql/test/prepare/Tests/sqlancer_prepare.stable.err
+++ b/sql/test/prepare/Tests/sqlancer_prepare.stable.err
@@ -1,6 +1,6 @@
 MAPI  = (monetdb) /var/tmp/mtest-918314/.s.monetdb.35583
 QUERY = PREPARE SELECT DISTINCT (SELECT DISTINCT r'|m<v' FROM t1 WHERE 
((t1.c0)<(?)) GROUP BY t1.c2, ?), ?, t1.c2 FROM t1 WHERE CAST(? AS BOOLEAN) 
LIMIT 2103332269785059850;
-ERROR = !Could not determine type for argument number 2
+ERROR = !Cannot have a parameter (?) for group by column
 CODE  = 42000
 MAPI  = (monetdb) /var/tmp/mtest-918314/.s.monetdb.35583
 QUERY = PREPARE SELECT (SELECT ? FROM (select 1) as v1(c0));
@@ -28,3 +28,11 @@ QUERY = prepare with cte0(c0) as (select
         from cte0 as l0cte0, cte1 as l0cte1 order by l0cte0.c0 desc nulls 
last, l0cte1.c2 desc nulls first; -- ? can't be defined, so error
 ERROR = !Could not determine type for argument number 1
 CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-185783/.s.monetdb.32587
+QUERY = prepare with cte0(c0) as (select 2) select 1 <> all(select 2 from 
(values (1),(2)) as t1) from cte0 as l0cte0 group by ?; --error, cannot have a 
parameter for group by column
+ERROR = !Cannot have a parameter (?) for group by column
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-185783/.s.monetdb.32587
+QUERY = prepare with cte0(c0) as (select 2) select 1 <> all(select 2 from 
(values (1),(2)) as t1) from cte0 as l0cte0 order by ?; --error, cannot have a 
parameter for order by column
+ERROR = !Cannot have a parameter (?) for order by column
+CODE  = 42000
diff --git a/sql/test/prepare/Tests/sqlancer_prepare.stable.err.int128 
b/sql/test/prepare/Tests/sqlancer_prepare.stable.err.int128
--- a/sql/test/prepare/Tests/sqlancer_prepare.stable.err.int128
+++ b/sql/test/prepare/Tests/sqlancer_prepare.stable.err.int128
@@ -1,6 +1,6 @@
 MAPI  = (monetdb) /var/tmp/mtest-918314/.s.monetdb.35583
 QUERY = PREPARE SELECT DISTINCT (SELECT DISTINCT r'|m<v' FROM t1 WHERE 
((t1.c0)<(?)) GROUP BY t1.c2, ?), ?, t1.c2 FROM t1 WHERE CAST(? AS BOOLEAN) 
LIMIT 2103332269785059850;
-ERROR = !Could not determine type for argument number 2
+ERROR = !Cannot have a parameter (?) for group by column
 CODE  = 42000
 MAPI  = (monetdb) /var/tmp/mtest-918314/.s.monetdb.35583
 QUERY = PREPARE SELECT (SELECT ? FROM (select 1) as v1(c0));
@@ -32,3 +32,11 @@ QUERY = prepare with cte0(c0) as (select
         from cte0 as l0cte0, cte1 as l0cte1 order by l0cte0.c0 desc nulls 
last, l0cte1.c2 desc nulls first; -- ? can't be defined, so error
 ERROR = !Could not determine type for argument number 1
 CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-185783/.s.monetdb.32587
+QUERY = prepare with cte0(c0) as (select 2) select 1 <> all(select 2 from 
(values (1),(2)) as t1) from cte0 as l0cte0 group by ?; --error, cannot have a 
parameter for group by column
+ERROR = !Cannot have a parameter (?) for group by column
+CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-185783/.s.monetdb.32587
+QUERY = prepare with cte0(c0) as (select 2) select 1 <> all(select 2 from 
(values (1),(2)) as t1) from cte0 as l0cte0 order by ?; --error, cannot have a 
parameter for order by column
+ERROR = !Cannot have a parameter (?) for order by column
+CODE  = 42000
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to