Changeset: 952d53193b21 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=952d53193b21
Modified Files:
sql/server/rel_select.c
sql/test/BugTracker-2018/Tests/prepared-statement-with-udf.Bug-6650.sql
sql/test/BugTracker-2018/Tests/prepared-statement-with-udf.Bug-6650.stable.out
Branch: linear-hashing
Log Message:
Merged with Nov2019
diffs (63 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
@@ -674,10 +674,10 @@ rel_named_table_function(sql_query *quer
}
if (sq) {
- for (node *n = sq->exps->h, *m = sf->res->h ; n && m ; n =
n->next, m = m->next) {
+ for (node *n = sq->exps->h, *m = sf->func->ops->h ; n && m ; n
= n->next, m = m->next) {
sql_exp *e = (sql_exp*) n->data;
- sql_subtype *t = (sql_subtype*) m->data;
- if (!exp_subtype(e) && rel_set_type_param(sql, t, sq,
e, 0) < 0)
+ sql_arg *a = (sql_arg*) m->data;
+ if (!exp_subtype(e) && rel_set_type_param(sql,
&(a->type), sq, e, 0) < 0)
return NULL;
}
}
@@ -5983,10 +5983,10 @@ rel_loader_function(sql_query *query, sy
return sql_error(sql, 02, SQLSTATE(42000) "SELECT: no such
operator '%s'", fname);
if (sq) {
- for (node *n = sq->exps->h, *m = sf->res->h ; n && m ; n =
n->next, m = m->next) {
+ for (node *n = sq->exps->h, *m = sf->func->ops->h ; n && m ; n
= n->next, m = m->next) {
sql_exp *e = (sql_exp*) n->data;
- sql_subtype *t = (sql_subtype*) m->data;
- if (!exp_subtype(e) && rel_set_type_param(sql, t, sq,
e, 0) < 0)
+ sql_arg *a = (sql_arg*) m->data;
+ if (!exp_subtype(e) && rel_set_type_param(sql,
&(a->type), sq, e, 0) < 0)
return NULL;
}
}
diff --git
a/sql/test/BugTracker-2018/Tests/prepared-statement-with-udf.Bug-6650.sql
b/sql/test/BugTracker-2018/Tests/prepared-statement-with-udf.Bug-6650.sql
--- a/sql/test/BugTracker-2018/Tests/prepared-statement-with-udf.Bug-6650.sql
+++ b/sql/test/BugTracker-2018/Tests/prepared-statement-with-udf.Bug-6650.sql
@@ -10,4 +10,8 @@ prepare with something as (select a from
exec **('a', 'a');
drop function get_onet;
drop table onet;
+
+CREATE FUNCTION twoargs(input1 INT, input2 CLOB) RETURNS TABLE (outt CLOB)
BEGIN RETURN TABLE(SELECT input1 || input2); END;
+prepare select 1 from twoargs(?,?);
+
rollback;
diff --git
a/sql/test/BugTracker-2018/Tests/prepared-statement-with-udf.Bug-6650.stable.out
b/sql/test/BugTracker-2018/Tests/prepared-statement-with-udf.Bug-6650.stable.out
---
a/sql/test/BugTracker-2018/Tests/prepared-statement-with-udf.Bug-6650.stable.out
+++
b/sql/test/BugTracker-2018/Tests/prepared-statement-with-udf.Bug-6650.stable.out
@@ -120,6 +120,16 @@ stdout of test 'prepared-statement-with-
[ "a", "b", "c", "a" ]
#drop function get_onet;
#drop table onet;
+#CREATE FUNCTION twoargs(input1 INT, input2 CLOB) RETURNS TABLE (outt CLOB)
BEGIN RETURN TABLE(SELECT input1 || input2); END;
+#prepare select 1 from twoargs(?,?);
+#prepare select 1 from twoargs(?,?);
+% .prepare, .prepare, .prepare, .prepare, .prepare,
.prepare # table_name
+% type, digits, scale, schema, table, column # name
+% varchar, int, int, str, str, str # type
+% 7, 2, 1, 0, 0, 0 # length
+[ "tinyint", 1, 0, "", "", "" ]
+[ "int", 32, 0, NULL, NULL, NULL ]
+[ "clob", 0, 0, NULL, NULL, NULL ]
#rollback;
# 13:30:56 >
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list