Changeset: ef467f07050e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ef467f07050e
Modified Files:
sql/server/rel_select.c
sql/server/rel_unnest.c
Branch: default
Log Message:
small fixes for sqlancer bufs
diffs (43 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
@@ -5215,8 +5215,9 @@ rel_value_exp(sql_query *query, sql_rel
if (list_length(r->exps) > 1) { /* Todo make sure the
in handling can handle a list ( value lists), instead of just a list of
relations */
e = exp_values(query->sql->sa, r->exps);
} else {
- e = r->exps->h->data;
- if (rel && *rel && !exp_has_rel(e)) {
+ sql_exp *ne = r->exps->h->data;
+ if (rel && *rel && !exp_has_rel(ne)) {
+ e = ne;
rel_bind_var(query->sql, *rel, e);
if (exp_has_freevar(query->sql, e) &&
is_sql_aggr(f)) {
sql_rel *outer =
query_fetch_outer(query, exp_has_freevar(query->sql, e)-1);
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
@@ -760,7 +760,12 @@ rel_general_unnest(mvc *sql, sql_rel *re
sql_rel *D = rel_project(sql->sa, rel_dup(l), exps_copy(sql,
ad));
set_distinct(D);
+ int single = is_single(r);
+ reset_single(r);
+ sql_rel *or = r;
r = rel_crossproduct(sql->sa, D, r, rel->op);
+ if (single)
+ set_single(or);
r->op = op_join;
move_join_exps(sql, rel, r);
set_dependent(r);
@@ -2595,8 +2600,10 @@ rewrite_anyequal(visitor *v, sql_rel *re
if (rsq) {
if (on_right) {
sql_rel *join = rel->l; /* the
introduced join */
- join->r =
rel_crossproduct(sql->sa, join->r, rsq, op_join);
+ join->r =
rel_crossproduct(sql->sa, join->r, rsq, depth?op_right:op_join);
set_dependent(join);
+ if (depth)
+ reset_has_nil(le);
} else {
operator_type op =
!is_tuple?((depth>0)?op_left:op_join):is_anyequal(sf)?op_semi:op_anti;
(void)rewrite_inner(sql, rel,
rsq, &op);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list