Changeset: f70db9773f5d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/f70db9773f5d
Modified Files:
sql/server/rel_exp.c
sql/server/rel_unnest.c
Branch: default
Log Message:
handle simple value list directly within the rewrite_compare
diffs (43 lines):
diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c
--- a/sql/server/rel_exp.c
+++ b/sql/server/rel_exp.c
@@ -1672,7 +1672,7 @@ rel_find_exp_and_corresponding_rel_(sql_
ne = e;
} else if ((!list_empty(rel->exps) && (is_project(rel->op) ||
is_base(rel->op))) ||
(!list_empty(rel->attr) &&
is_join(rel->op))) {
- list *l = rel->attr ? rel->attr : rel->exps;
+ list *l = rel->attr ? rel->attr : rel->exps;
if (e->l) {
ne = exps_bind_column2(l, e->l, e->r, NULL);
} else {
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
@@ -2795,8 +2795,17 @@ rewrite_compare(visitor *v, sql_rel *rel
if (exp_has_rel(re))
rsq = exp_rel_get_rel(v->sql->sa, re); /* get
subquery */
- if (rsq)
- re = exp_rel_update_exp(v->sql, re);
+ if (rsq) {
+ if (!lsq && is_simple_project(rsq->op) &&
!rsq->l) {
+ sql_exp *ire = rsq->exps->h->data;
+ if (is_values(ire) &&
list_length(ire->f) == 1) {
+ rsq = NULL;
+ re = ire;
+ }
+ }
+ if (rsq)
+ re = exp_rel_update_exp(v->sql, re);
+ }
if (is_values(le)) /* exp_values */
is_tuple = 1;
@@ -2820,7 +2829,6 @@ rewrite_compare(visitor *v, sql_rel *rel
if (!is_tuple && is_values(re) &&
!exps_have_rel_exp(re->f)) { /* exp_values */
list *vals = re->f;
- assert(0);
if (depth == 0 && is_select(rel->op)) {
v->changes++;
return exp_in_compare(v->sql, &le,
vals, is_anyequal(sf));
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]