Changeset: 608a84895dfa for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=608a84895dfa
Modified Files:
sql/server/rel_select.c
sql/test/SQLancer/Tests/sqlancer07.sql
sql/test/SQLancer/Tests/sqlancer07.stable.err
sql/test/SQLancer/Tests/sqlancer07.stable.err.int128
Branch: Oct2020
Log Message:
Making sqlancer happy with these esoteric prepared statements: disable
parameters as order by or group by columns.
diffs (86 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
@@ -4056,6 +4056,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;
}
@@ -4408,6 +4410,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/SQLancer/Tests/sqlancer07.sql
b/sql/test/SQLancer/Tests/sqlancer07.sql
--- a/sql/test/SQLancer/Tests/sqlancer07.sql
+++ b/sql/test/SQLancer/Tests/sqlancer07.sql
@@ -333,3 +333,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/SQLancer/Tests/sqlancer07.stable.err
b/sql/test/SQLancer/Tests/sqlancer07.stable.err
--- a/sql/test/SQLancer/Tests/sqlancer07.stable.err
+++ b/sql/test/SQLancer/Tests/sqlancer07.stable.err
@@ -7,7 +7,7 @@ stderr of test 'sqlancer07` in directory
MAPI = (monetdb) /var/tmp/mtest-1050883/.s.monetdb.36353
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-81449/.s.monetdb.32416
QUERY = SELECT t0.c0 BETWEEN SYMMETRIC (SELECT t0.c0 FROM t0) AND t0.c0 FROM
t0;
@@ -62,6 +62,14 @@ 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
# 10:16:14 >
# 10:16:14 > "Done."
diff --git a/sql/test/SQLancer/Tests/sqlancer07.stable.err.int128
b/sql/test/SQLancer/Tests/sqlancer07.stable.err.int128
--- a/sql/test/SQLancer/Tests/sqlancer07.stable.err.int128
+++ b/sql/test/SQLancer/Tests/sqlancer07.stable.err.int128
@@ -7,7 +7,7 @@ stderr of test 'sqlancer07` in directory
MAPI = (monetdb) /var/tmp/mtest-1050883/.s.monetdb.36353
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-81449/.s.monetdb.32416
QUERY = SELECT t0.c0 BETWEEN SYMMETRIC (SELECT t0.c0 FROM t0) AND t0.c0 FROM
t0;
@@ -62,6 +62,14 @@ 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
# 10:16:14 >
# 10:16:14 > "Done."
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list