Changeset: e23683f66f16 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e23683f66f16 Modified Files: sql/backends/monet5/sql.mx sql/server/rel_exp.c sql/server/rel_exp.h sql/server/rel_psm.c sql/test/Dependencies/Tests/Dependencies.stable.out sql/test/leaks/Tests/check1.stable.out sql/test/leaks/Tests/check1_nogeom.stable.out sql/test/leaks/Tests/check2.stable.out sql/test/leaks/Tests/check2_nogeom.stable.out sql/test/leaks/Tests/check3.stable.out sql/test/leaks/Tests/check3_nogeom.stable.out sql/test/leaks/Tests/check4.stable.out sql/test/leaks/Tests/check4_nogeom.stable.out sql/test/leaks/Tests/check5.stable.out sql/test/leaks/Tests/check5_nogeom.stable.out Branch: default Log Message:
Merge with Feb2013 branch. diffs (truncated from 601 to 300 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 @@ -2520,6 +2520,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 ) @@ -439,10 +440,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); } @@ -389,7 +389,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; @@ -418,7 +418,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); @@ -439,7 +439,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; @@ -461,7 +461,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; @@ -578,7 +578,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, diff --git a/sql/test/Dependencies/Tests/Dependencies.stable.out b/sql/test/Dependencies/Tests/Dependencies.stable.out --- a/sql/test/Dependencies/Tests/Dependencies.stable.out +++ b/sql/test/Dependencies/Tests/Dependencies.stable.out @@ -267,7 +267,6 @@ Dependencies between database objects [ "id", "dependencies_functions_os_triggers", "DEP_FUNC" ] [ "id", "dependencies_keys_on_foreignkeys", "DEP_FUNC" ] [ "id", "dependencies_owners_on_schemas", "DEP_FUNC" ] -[ "id", "dependencies_owners_on_schemas", "DEP_FUNC" ] [ "id", "dependencies_schemas_on_users", "DEP_FUNC" ] [ "id", "dependencies_tables_on_foreignkeys", "DEP_FUNC" ] [ "id", "dependencies_tables_on_functions", "DEP_FUNC" ] @@ -359,16 +358,13 @@ Dependencies between database objects % sys.f1, sys.f2, .L1 # table_name % name, name, L1 # name % varchar, varchar, char # type -% 15, 35, 8 # length +% 15, 31, 8 # length [ "=", "columnsize", "DEP_FUNC" ] [ "left_shift", "columnsize", "DEP_FUNC" ] [ "sql_mul", "columnsize", "DEP_FUNC" ] [ "pi", "degrees", "DEP_FUNC" ] [ "sql_div", "degrees", "DEP_FUNC" ] [ "sql_mul", "degrees", "DEP_FUNC" ] -[ "=", "dependencies_columns_on_functions", "DEP_FUNC" ] -[ "hash", "dependencies_columns_on_functions", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_columns_on_functions", "DEP_FUNC" ] [ "=", "dependencies_columns_on_indexes", "DEP_FUNC" ] [ "hash", "dependencies_columns_on_indexes", "DEP_FUNC" ] [ "isnull", "dependencies_columns_on_indexes", "DEP_FUNC" ] @@ -377,34 +373,7 @@ Dependencies between database objects [ "hash", "dependencies_columns_on_keys", "DEP_FUNC" ] [ "rotate_xor_hash", "dependencies_columns_on_keys", "DEP_FUNC" ] [ "sql_neg", "dependencies_columns_on_keys", "DEP_FUNC" ] -[ "=", "dependencies_columns_on_triggers", "DEP_FUNC" ] -[ "hash", "dependencies_columns_on_triggers", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_columns_on_triggers", "DEP_FUNC" ] -[ "=", "dependencies_columns_on_views", "DEP_FUNC" ] -[ "hash", "dependencies_columns_on_views", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_columns_on_views", "DEP_FUNC" ] -[ "=", "dependencies_functions_on_functions", "DEP_FUNC" ] -[ "hash", "dependencies_functions_on_functions", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_functions_on_functions", "DEP_FUNC" ] -[ "=", "dependencies_functions_os_triggers", "DEP_FUNC" ] -[ "hash", "dependencies_functions_os_triggers", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_functions_os_triggers", "DEP_FUNC" ] -[ "=", "dependencies_tables_on_functions", "DEP_FUNC" ] -[ "hash", "dependencies_tables_on_functions", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_tables_on_functions", "DEP_FUNC" ] [ "isnull", "dependencies_tables_on_indexes", "DEP_FUNC" ] -[ "=", "dependencies_tables_on_triggers", "DEP_FUNC" ] -[ "hash", "dependencies_tables_on_triggers", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_tables_on_triggers", "DEP_FUNC" ] -[ "=", "dependencies_tables_on_views", "DEP_FUNC" ] -[ "hash", "dependencies_tables_on_views", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_tables_on_views", "DEP_FUNC" ] -[ "=", "dependencies_views_on_functions", "DEP_FUNC" ] -[ "hash", "dependencies_views_on_functions", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_views_on_functions", "DEP_FUNC" ] -[ "=", "dependencies_views_on_triggers", "DEP_FUNC" ] -[ "hash", "dependencies_views_on_triggers", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_views_on_triggers", "DEP_FUNC" ] [ ">", "f1", "DEP_FUNC" ] [ "not", "f1", "DEP_FUNC" ] [ "<", "f2", "DEP_FUNC" ] @@ -438,9 +407,8 @@ Dependencies between database objects % sys.f, sys.tri, .L # table_name % name, name, single_value # name % varchar, varchar, char # type -% 6, 12, 11 # length +% 5, 12, 11 # length [ "<>", "trigger_test", "DEP_TRIGGER" ] -[ "isnull", "trigger_test", "DEP_TRIGGER" ] [ "count", "trigger_test", "DEP_TRIGGER" ] #SELECT k.name, fk.name, 'DEP_FKEY' from keys as k, keys as fk where fk.rkey = k.id; % sys.k, sys.fk, .L # table_name @@ -486,16 +454,13 @@ Dependencies between functions with same % sys.f1, sys.f2, .L1 # table_name % name, name, L1 # name % varchar, varchar, char # type -% 15, 35, 8 # length +% 15, 31, 8 # length [ "=", "columnsize", "DEP_FUNC" ] [ "left_shift", "columnsize", "DEP_FUNC" ] [ "sql_mul", "columnsize", "DEP_FUNC" ] [ "pi", "degrees", "DEP_FUNC" ] [ "sql_div", "degrees", "DEP_FUNC" ] [ "sql_mul", "degrees", "DEP_FUNC" ] -[ "=", "dependencies_columns_on_functions", "DEP_FUNC" ] -[ "hash", "dependencies_columns_on_functions", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_columns_on_functions", "DEP_FUNC" ] [ "=", "dependencies_columns_on_indexes", "DEP_FUNC" ] [ "hash", "dependencies_columns_on_indexes", "DEP_FUNC" ] [ "isnull", "dependencies_columns_on_indexes", "DEP_FUNC" ] @@ -504,34 +469,7 @@ Dependencies between functions with same [ "hash", "dependencies_columns_on_keys", "DEP_FUNC" ] [ "rotate_xor_hash", "dependencies_columns_on_keys", "DEP_FUNC" ] [ "sql_neg", "dependencies_columns_on_keys", "DEP_FUNC" ] -[ "=", "dependencies_columns_on_triggers", "DEP_FUNC" ] -[ "hash", "dependencies_columns_on_triggers", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_columns_on_triggers", "DEP_FUNC" ] -[ "=", "dependencies_columns_on_views", "DEP_FUNC" ] -[ "hash", "dependencies_columns_on_views", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_columns_on_views", "DEP_FUNC" ] -[ "=", "dependencies_functions_on_functions", "DEP_FUNC" ] -[ "hash", "dependencies_functions_on_functions", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_functions_on_functions", "DEP_FUNC" ] -[ "=", "dependencies_functions_os_triggers", "DEP_FUNC" ] -[ "hash", "dependencies_functions_os_triggers", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_functions_os_triggers", "DEP_FUNC" ] -[ "=", "dependencies_tables_on_functions", "DEP_FUNC" ] -[ "hash", "dependencies_tables_on_functions", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_tables_on_functions", "DEP_FUNC" ] [ "isnull", "dependencies_tables_on_indexes", "DEP_FUNC" ] -[ "=", "dependencies_tables_on_triggers", "DEP_FUNC" ] -[ "hash", "dependencies_tables_on_triggers", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_tables_on_triggers", "DEP_FUNC" ] -[ "=", "dependencies_tables_on_views", "DEP_FUNC" ] -[ "hash", "dependencies_tables_on_views", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_tables_on_views", "DEP_FUNC" ] -[ "=", "dependencies_views_on_functions", "DEP_FUNC" ] -[ "hash", "dependencies_views_on_functions", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_views_on_functions", "DEP_FUNC" ] -[ "=", "dependencies_views_on_triggers", "DEP_FUNC" ] -[ "hash", "dependencies_views_on_triggers", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_views_on_triggers", "DEP_FUNC" ] [ ">", "f1", "DEP_FUNC" ] [ "not", "f1", "DEP_FUNC" ] [ "<", "f2", "DEP_FUNC" ] @@ -571,16 +509,13 @@ Dependencies between functions with same % sys.f1, sys.f2, .L1 # table_name % name, name, L1 # name % varchar, varchar, char # type -% 15, 35, 8 # length +% 15, 31, 8 # length [ "=", "columnsize", "DEP_FUNC" ] [ "left_shift", "columnsize", "DEP_FUNC" ] [ "sql_mul", "columnsize", "DEP_FUNC" ] [ "pi", "degrees", "DEP_FUNC" ] [ "sql_div", "degrees", "DEP_FUNC" ] [ "sql_mul", "degrees", "DEP_FUNC" ] -[ "=", "dependencies_columns_on_functions", "DEP_FUNC" ] -[ "hash", "dependencies_columns_on_functions", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_columns_on_functions", "DEP_FUNC" ] [ "=", "dependencies_columns_on_indexes", "DEP_FUNC" ] [ "hash", "dependencies_columns_on_indexes", "DEP_FUNC" ] [ "isnull", "dependencies_columns_on_indexes", "DEP_FUNC" ] @@ -589,34 +524,7 @@ Dependencies between functions with same [ "hash", "dependencies_columns_on_keys", "DEP_FUNC" ] [ "rotate_xor_hash", "dependencies_columns_on_keys", "DEP_FUNC" ] [ "sql_neg", "dependencies_columns_on_keys", "DEP_FUNC" ] -[ "=", "dependencies_columns_on_triggers", "DEP_FUNC" ] -[ "hash", "dependencies_columns_on_triggers", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_columns_on_triggers", "DEP_FUNC" ] -[ "=", "dependencies_columns_on_views", "DEP_FUNC" ] -[ "hash", "dependencies_columns_on_views", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_columns_on_views", "DEP_FUNC" ] -[ "=", "dependencies_functions_on_functions", "DEP_FUNC" ] -[ "hash", "dependencies_functions_on_functions", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_functions_on_functions", "DEP_FUNC" ] -[ "=", "dependencies_functions_os_triggers", "DEP_FUNC" ] -[ "hash", "dependencies_functions_os_triggers", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_functions_os_triggers", "DEP_FUNC" ] -[ "=", "dependencies_tables_on_functions", "DEP_FUNC" ] -[ "hash", "dependencies_tables_on_functions", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_tables_on_functions", "DEP_FUNC" ] [ "isnull", "dependencies_tables_on_indexes", "DEP_FUNC" ] -[ "=", "dependencies_tables_on_triggers", "DEP_FUNC" ] -[ "hash", "dependencies_tables_on_triggers", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_tables_on_triggers", "DEP_FUNC" ] -[ "=", "dependencies_tables_on_views", "DEP_FUNC" ] -[ "hash", "dependencies_tables_on_views", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_tables_on_views", "DEP_FUNC" ] -[ "=", "dependencies_views_on_functions", "DEP_FUNC" ] -[ "hash", "dependencies_views_on_functions", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_views_on_functions", "DEP_FUNC" ] -[ "=", "dependencies_views_on_triggers", "DEP_FUNC" ] -[ "hash", "dependencies_views_on_triggers", "DEP_FUNC" ] -[ "rotate_xor_hash", "dependencies_views_on_triggers", "DEP_FUNC" ] [ "<>", "heapsize", "DEP_FUNC" ] _______________________________________________ checkin-list mailing list checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list