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