Changeset: 85d93a52b2fa for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=85d93a52b2fa
Modified Files:
sql/server/rel_dump.c
sql/server/rel_optimizer.c
sql/server/rel_rel.c
sql/server/rel_select.c
sql/server/rel_updates.c
Branch: Dec2016
Log Message:
set 'set operators' to processed, solving the sqlsmith crashes
diffs (123 lines):
diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -1331,6 +1331,7 @@ rel_read(mvc *sql, char *r, int *pos, li
exps = read_exps(sql, lrel, rrel, r, pos, '[', 0);
rel = rel_setop(sql->sa, lrel, rrel, j);
rel->exps = exps;
+ set_processed(rel);
return rel;
case 'd':
/* 'ddl' not supported */
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -1899,6 +1899,7 @@ rel_push_topn_down(int *changes, mvc *sq
ur = rel_topn(sql->sa, ur, sum_limit_offset(sql,
rel->exps));
u = rel_setop(sql->sa, ul, ur, op_union);
u->exps = exps_alias(sql->sa, r->exps);
+ set_processed(u);
/* possibly add order by column */
if (add_r)
u->exps = list_merge(u->exps,
exps_copy(sql->sa, r->r), NULL);
@@ -3580,6 +3581,7 @@ rel_push_aggr_down(int *changes, mvc *sq
u = rel_setop(sql->sa, ul, ur, op_union);
u->exps = rel_projections(sql, rel, NULL, 1, 1);
+ set_processed(u);
if (rel->r) {
list *ogbe = rel->r;
@@ -7325,6 +7327,7 @@ rel_split_outerjoin(int *changes, mvc *s
/* add null's for right */
add_nulls( sql, nr, r);
nl = rel_setop(sql->sa, nl, nr, op_union);
+ set_processed(nl);
}
if (rel->op == op_right || rel->op == op_full) {
/* split in 2 anti joins */
@@ -7341,6 +7344,7 @@ rel_split_outerjoin(int *changes, mvc *s
rel_projections(sql, r, NULL, 1, 1),
(fdup)NULL);
nl = rel_setop(sql->sa, nl, nr, op_union);
+ set_processed(nl);
}
rel->l = NULL;
@@ -7714,6 +7718,7 @@ rel_merge_table_rewrite(int *changes, mv
sql_rel *r = n->next->data;
nrel = rel_setop(sql->sa, l, r,
op_union);
nrel->exps =
rel_projections(sql, rel, NULL, 1, 1);
+ set_processed(nrel);
append(ntables, nrel);
}
if (n)
@@ -8411,6 +8416,7 @@ rel_apply_rewrite(int *changes, mvc *sql
nr = rel_apply(sql, rel_dup(rel->l), rel_dup(r->r), rel->exps,
rel->flag);
l = rel_setop(sql->sa, nl, nr, op_union);
l->exps = list_merge(p, r->exps, (fdup)NULL);
+ set_processed(l);
rel_destroy(rel);
(*changes)++;
return l;
diff --git a/sql/server/rel_rel.c b/sql/server/rel_rel.c
--- a/sql/server/rel_rel.c
+++ b/sql/server/rel_rel.c
@@ -294,6 +294,7 @@ rel_inplace_setop(sql_rel *rel, sql_rel
if (l && r)
rel->nrcols = l->nrcols + r->nrcols;
rel->exps = exps;
+ set_processed(rel);
return rel;
}
@@ -1105,6 +1106,7 @@ rel_or(mvc *sql, sql_rel *l, sql_rel *r,
set_processed(r);
rel = rel_setop(sql->sa, l, r, op_union);
rel->exps = rel_projections(sql, rel, NULL, 1, 1);
+ set_processed(rel);
rel = rel_distinct(rel);
if (exps_card(l->exps) <= CARD_AGGR &&
exps_card(r->exps) <= CARD_AGGR)
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
@@ -5304,6 +5304,7 @@ rel_unionjoinquery(mvc *sql, sql_rel *re
set_processed(rv);
rel = rel_setop(sql->sa, lv, rv, op_union);
rel->exps = rel_projections(sql, rel, NULL, 0, 1);
+ set_processed(rel);
if (!all)
rel = rel_distinct(rel);
return rel;
diff --git a/sql/server/rel_updates.c b/sql/server/rel_updates.c
--- a/sql/server/rel_updates.c
+++ b/sql/server/rel_updates.c
@@ -211,6 +211,7 @@ rel_insert_join_idx(mvc *sql, sql_idx *i
rel_destroy(ins);
rt = inserts->r = rel_setop(sql->sa, _nlls, nnlls, op_union );
rt->exps = rel_projections(sql, nnlls, NULL, 1, 1);
+ set_processed(rt);
} else {
inserts->r = nnlls;
}
@@ -721,6 +722,7 @@ rel_update_join_idx(mvc *sql, sql_idx *i
rel_destroy(ups);
rt = updates->r = rel_setop(sql->sa, _nlls, nnlls, op_union );
rt->exps = rel_projections(sql, nnlls, NULL, 1, 1);
+ set_processed(rt);
} else {
updates->r = nnlls;
}
@@ -1351,8 +1353,10 @@ copyfrom(mvc *sql, dlist *qname, dlist *
if (!rel)
rel = nrel;
- else
+ else {
rel = rel_setop(sql->sa, rel, nrel, op_union);
+ set_processed(rel);
+ }
if (!rel)
return rel;
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list