Changeset: aa696509653d for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=aa696509653d Modified Files: sql/backends/monet5/sql.mx sql/server/rel_exp.c sql/server/rel_exp.h sql/server/rel_psm.c sql/test/BugTracker-2013/Tests/php-size-limit-bug.SQL.bat sql/test/mapi/Tests/php_monetdb.SQL.bat sql/test/mapi/Tests/php_monetdb_nogeom.SQL.bat Branch: SciQL-2 Log Message:
Merge with Feb2013 branch. diffs (121 lines): diff --git a/sql/backends/monet5/sql.mx b/sql/backends/monet5/sql.mx --- a/sql/backends/monet5/sql.mx +++ b/sql/backends/monet5/sql.mx @@ -2467,6 +2467,8 @@ create_func( mvc *sql, char *sname, sql_ sql->sa = sa_create(); buf = sa_strdup(sql->sa, nf->query); r = rel_parse(sql, buf, m_deps); + if (r) + r = rel_optimizer(sql, r); if (r) { stmt *sb = rel_bin(sql, r); list *id_col_l = stmt_list_dependencies(sql->sa, sb, COLUMN_DEPENDENCY); 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 @@ -23,6 +23,7 @@ #include "rel_exp.h" #include "rel_psm.h" #include "rel_prop.h" /* for prop_copy() */ +#include "rel_optimizer.h" static sql_exp * exp_create(sql_allocator *sa, int type ) @@ -465,10 +466,11 @@ exp_if(sql_allocator *sa, sql_exp *cond, } sql_exp * -exp_rel(sql_allocator *sa, sql_rel *rel) +exp_rel(mvc *sql, sql_rel *rel) { - sql_exp *e = exp_create(sa, e_psm); + sql_exp *e = exp_create(sql->sa, e_psm); + rel = rel_optimizer(sql, rel); e->l = rel; e->flag = PSM_REL; return e; diff --git a/sql/server/rel_exp.h b/sql/server/rel_exp.h --- a/sql/server/rel_exp.h +++ b/sql/server/rel_exp.h @@ -20,6 +20,8 @@ #ifndef _REL_EXP_H_ #define _REL_EXP_H_ +#include "sql_mvc.h" + #define new_exp_list(sa) sa_list(sa) #define exp2list(sa,e) append(sa_list(sa),e) @@ -72,7 +74,7 @@ extern sql_exp * exp_var(sql_allocator * extern sql_exp * exp_return(sql_allocator *sa, sql_exp *val, int level); extern sql_exp * exp_while(sql_allocator *sa, sql_exp *cond, list *stmts); extern sql_exp * exp_if(sql_allocator *sa, sql_exp *cond, list *if_stmts, list *else_stmts); -extern sql_exp * exp_rel(sql_allocator *sa, sql_rel * r); +extern sql_exp * exp_rel(mvc *sql, sql_rel * r); extern void exp_setname(sql_allocator *sa, sql_exp *e, char *rname, char *name ); extern void exp_setrelname(sql_allocator *sa, sql_exp *e, int nr ); diff --git a/sql/server/rel_psm.c b/sql/server/rel_psm.c --- a/sql/server/rel_psm.c +++ b/sql/server/rel_psm.c @@ -91,12 +91,12 @@ psm_set_exp(mvc *sql, dnode *n) if (!e) return NULL; if (rel) { - sql_exp *er = exp_rel(sql->sa, rel); + sql_exp *er = exp_rel(sql, rel); list *b = sa_list(sql->sa); append(b, er); append(b, exp_set(sql->sa, name, e, level)); - res = exp_rel(sql->sa, rel_psm_block(sql->sa, b)); + res = exp_rel(sql, rel_psm_block(sql->sa, b)); } else { res = exp_set(sql->sa, name, e, level); } @@ -399,7 +399,7 @@ rel_psm_return( mvc *sql, sql_subtype *r return NULL; if (rel && ek.card != card_relation) - append(l, exp_rel(sql->sa, rel)); + append(l, exp_rel(sql, rel)); else if (rel) { list *exps = sa_list(sql->sa); node *n, *m; @@ -428,7 +428,7 @@ rel_psm_return( mvc *sql, sql_subtype *r rel -> exps = exps; else rel = rel_project(sql->sa, rel, exps); - res = exp_rel(sql->sa, rel); + res = exp_rel(sql, rel); } else if (!rel && res->tpe.comp_type){ /* handle return table-var */ sql_rel *rel = stack_find_rel_var(sql, res->r); list *exps = sa_list(sql->sa); @@ -480,7 +480,7 @@ rel_psm_return( mvc *sql, sql_subtype *r append(exps, e); } rel = rel_project(sql->sa, rel, exps); - res = exp_rel(sql->sa, rel); + res = exp_rel(sql, rel); } append(l, exp_return(sql->sa, res, stack_nr_of_declared_tables(sql))); return l; @@ -502,7 +502,7 @@ rel_select_into( mvc *sql, symbol *sq, e if (!r) return NULL; nl = sa_list(sql->sa); - append(nl, exp_rel(sql->sa, r)); + append(nl, exp_rel(sql, r)); for (m = r->exps->h, n = into->h; m && n; m = m->next, n = n->next) { sql_subtype *tpe = NULL; char *nme = n->data.sval; @@ -620,7 +620,7 @@ sequential_block (mvc *sql, sql_subtype sql_rel *r = rel_updates(sql, s); if (!r) return NULL; - res = exp_rel(sql->sa, r); + res = exp_rel(sql, r); } break; default: res = sql_error(sql, 01, _______________________________________________ checkin-list mailing list checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list