Changeset: c6ed61eb429f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c6ed61eb429f
Modified Files:
        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: Jul2021
Log Message:

Check for parameters while listing a n-ary function input types


diffs (44 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
@@ -525,7 +525,8 @@ nary_function_arg_types_2str(mvc *sql, l
        int i = 0;
 
        for (node *n = types->h; n && i < N; n = n->next) {
-               char *tpe = sql_subtype_string(sql->ta, (sql_subtype *) 
n->data);
+               sql_subtype *t = (sql_subtype *) n->data;
+               char *tpe = t ? sql_subtype_string(sql->ta, t) : "?";
 
                if (arg_list) {
                        arg_list = sa_message(sql->ta, "%s, %s", arg_list, tpe);
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
@@ -67,3 +67,5 @@ ROLLBACK;
 
 PREPARE SELECT "quarter"(date '2021-01-02') IN ("second"(TIME '01:00:00'), 
(select ? where true));
 PREPARE SELECT "quarter"(date '2021-01-02') IN ("second"(TIME '01:00:00'), 
(select ? where true));
+
+PREPARE SELECT 1 FROM idontexist(?,16); --error, function doesn't exist
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
@@ -36,3 +36,7 @@ MAPI  = (monetdb) /var/tmp/mtest-185783/
 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
+MAPI  = (monetdb) /var/tmp/mtest-185783/.s.monetdb.32587
+QUERY = PREPARE SELECT 1 FROM idontexist(?,16); --error, function doesn't exist
+ERROR = !SELECT: no such table returning function 'idontexist'(?, tinyint)
+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
@@ -40,3 +40,7 @@ MAPI  = (monetdb) /var/tmp/mtest-185783/
 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
+MAPI  = (monetdb) /var/tmp/mtest-185783/.s.monetdb.32587
+QUERY = PREPARE SELECT 1 FROM idontexist(?,16); --error, function doesn't exist
+ERROR = !SELECT: no such table returning function 'idontexist'(?, tinyint)
+CODE  = 42000
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to