Changeset: e32e70fa2fbe for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e32e70fa2fbe
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/server/rel_unnest.c
Branch: default
Log Message:

fixes for 2 more sqlancer issues,
        1) in handle_in_exps make sure we have a 'bat' for 'select' (ie reduce) 
expressions
        2) make sure we do not see 0.2 = 0.3 as true, ie if only right could be 
seen
        as true, the expression may still be false or nil.


diffs (25 lines):

diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -371,6 +371,9 @@ handle_in_exps(backend *be, sql_exp *ce,
        if(!c)
                return NULL;
 
+       if (reduce && c->nrcols == 0)
+               c = stmt_const(be, bin_first_column(be, left), c);
+
        if (c->nrcols == 0 || (depth && !reduce)) {
                sql_subtype *bt = sql_bind_localtype("bit");
                sql_subfunc *cmp = (in)
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
@@ -2690,7 +2690,7 @@ rewrite_ifthenelse(visitor *v, sql_rel *
                for (node *n = l->h ; n ; n = n->next) {
                        sql_exp *e = n->data;
 
-                       if (e->type == e_cmp && e->flag == cmp_equal && 
exp_is_true(e->r))
+                       if (e->type == e_cmp && e->flag == cmp_equal && 
exp_is_true(e) && exp_is_true(e->r))
                                n->data = e->l;
                }
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to