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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list