Changeset: 3c74e4b2f5b8 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/3c74e4b2f5b8 Modified Files: sql/backends/monet5/rel_bin.c sql/server/rel_unnest.c Branch: default Log Message:
delay fetching from bats until we need the value in return or exception diffs (53 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 @@ -1149,9 +1149,8 @@ exp_bin(backend *be, sql_exp *e, stmt *l list_append(l, const_column(be, (stmt*)n->data)); r = stmt_list(be, l); } else if (r->type == st_table && e->card == CARD_ATOM) { /* fetch value */ - sql_rel *ll = (sql_rel*) l->l; r = lst->op4.lval->h->data; - if (!r->aggr && lastexp(ll)->card > CARD_ATOM) /* if the cardinality is atom, no fetch call needed */ + if (!r->aggr) /* if the cardinality is atom, no fetch call needed */ r = stmt_fetch(be, r); } if (r->type == st_list) @@ -1204,6 +1203,8 @@ exp_bin(backend *be, sql_exp *e, stmt *l stmt *cond = exp_bin(be, e->l, left, right, grp, ext, cnt, sel, 0, 0, push); if (!cond) return NULL; + if (cond->nrcols) + cond = stmt_fetch(be, cond); return stmt_exception(be, cond, (const char *) e->r, 0); } break; @@ -2194,8 +2195,6 @@ rel2bin_table(backend *be, sql_rel *rel, const char *rnme = exp_relname(c); s = stmt_alias(be, s, rnme, nme); - if (fr->card <= CARD_ATOM) /* single value, get result from bat */ - s = stmt_fetch(be, s); list_append(l, s); } sub = stmt_list(be, l); 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 @@ -3038,13 +3038,10 @@ rewrite_compare(visitor *v, sql_rel *rel 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 (is_values(re) && list_length(re->f) == 1 && !is_values(le)) { - list *exps = re->f; - re = exps->h->data; - } + if (is_values(ire) && list_length(ire->f) == 1 && !is_values(le)) { + list *exps = ire->f; + re = exps->h->data; + rsq = exp_rel_get_rel(v->sql->sa, re); } } if (rsq) _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org