Changeset: a6c413edae91 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/a6c413edae91
Modified Files:
        sql/server/rel_unnest.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:

Another prepared statement small issue


diffs (53 lines):

diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c
--- a/sql/server/rel_unnest.c
+++ b/sql/server/rel_unnest.c
@@ -937,6 +937,9 @@ push_up_project(mvc *sql, sql_rel *rel, 
                                                        rel_bind_var(sql, 
rel->l, e);
                                                        if (is_left(rel->op)) { 
/* add ifthenelse */
                                                                /* if id is 
NULL then NULL else e */
+                                                               sql_subtype *tp 
= exp_subtype(e);
+                                                               if (!tp)
+                                                                       return 
sql_error(sql, 10, SQLSTATE(42000) "Query projection must have at least one 
parameter with known SQL type");
                                                                if (!id) {
                                                                        sql_rel 
*l = r->l;
                                                                        if 
(is_join(l->op))
@@ -946,7 +949,7 @@ push_up_project(mvc *sql, sql_rel *rel, 
                                                                }
                                                                sql_exp *ne = 
rel_unop_(sql, NULL, exp_ref(sql, id), "sys", "isnull", card_value);
                                                                
set_has_no_nil(ne);
-                                                               ne = 
rel_nop_(sql, NULL, ne, exp_null(sql->sa, exp_subtype(e)), e, NULL, "sys", 
"ifthenelse", card_value);
+                                                               ne = 
rel_nop_(sql, NULL, ne, exp_null(sql->sa, tp), e, NULL, "sys", "ifthenelse", 
card_value);
                                                                
exp_prop_alias(sql->sa, ne, e);
                                                                e = ne;
                                                        }
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
@@ -94,3 +94,5 @@ ROLLBACK;
 
 -- TODO it requires some internal changes to be able to set types on 
parameters used as freevars
 PREPARE SELECT 1 FROM (SELECT ?) x(x) CROSS JOIN LATERAL (SELECT 1 FROM 
((SELECT 1) INTERSECT (SELECT 2)) vx(vx) JOIN (SELECT 1) z(z) ON x.x) w(w); 
--error, Could not determine type for argument number 1
+
+PREPARE SELECT 2 FROM (SELECT DISTINCT 1) z(z) LEFT OUTER JOIN LATERAL (SELECT 
z.z, ? WHERE TRUE) a(a,b) ON TRUE; --error, push_up_project requires a type
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
@@ -51,3 +51,7 @@ MAPI  = (monetdb) /var/tmp/mtest-185783/
 QUERY = PREPARE SELECT 1 FROM (SELECT ?) x(x) CROSS JOIN LATERAL (SELECT 1 
FROM ((SELECT 1) INTERSECT (SELECT 2)) vx(vx) JOIN (SELECT 1) z(z) ON x.x) 
w(w); --error, Could not determine type for argument number 1
 ERROR = !Could not determine type for argument number 1
 CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-185783/.s.monetdb.32587
+QUERY = PREPARE SELECT 2 FROM (SELECT DISTINCT 1) z(z) LEFT OUTER JOIN LATERAL 
(SELECT z.z, ? WHERE TRUE) a(a,b) ON TRUE; --error, push_up_project requires a 
type
+ERROR = !Query projection must have at least one parameter with known SQL type
+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
@@ -51,3 +51,7 @@ MAPI  = (monetdb) /var/tmp/mtest-185783/
 QUERY = PREPARE SELECT 1 FROM (SELECT ?) x(x) CROSS JOIN LATERAL (SELECT 1 
FROM ((SELECT 1) INTERSECT (SELECT 2)) vx(vx) JOIN (SELECT 1) z(z) ON x.x) 
w(w); --error, Could not determine type for argument number 1
 ERROR = !Could not determine type for argument number 1
 CODE  = 42000
+MAPI  = (monetdb) /var/tmp/mtest-185783/.s.monetdb.32587
+QUERY = PREPARE SELECT 2 FROM (SELECT DISTINCT 1) z(z) LEFT OUTER JOIN LATERAL 
(SELECT z.z, ? WHERE TRUE) a(a,b) ON TRUE; --error, push_up_project requires a 
type
+ERROR = !Query projection must have at least one parameter with known SQL type
+CODE  = 42000
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to