Changeset: b02e5798091a for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b02e5798091a Modified Files: Branch: default Log Message:
Merge with Oct2010 branch. diffs (214 lines): diff -r 42a727be4365 -r b02e5798091a clients/src/mapiclient/dump.c --- a/clients/src/mapiclient/dump.c Tue Sep 14 17:25:15 2010 +0200 +++ b/clients/src/mapiclient/dump.c Wed Sep 15 10:45:40 2010 +0200 @@ -292,8 +292,6 @@ mnstr_printf(toConsole, ") REFERENCES \"%s\".\"%s\" (", c_psname, c_ptname); for (i = 0; i < nkeys; i++) { - if (i > 0) - mnstr_printf(toConsole, ", "); mnstr_printf(toConsole, "%s\"%s\"", i > 0 ? ", " : "", pkeys[i]); } diff -r 42a727be4365 -r b02e5798091a sql/rel.txt --- a/sql/rel.txt Tue Sep 14 17:25:15 2010 +0200 +++ b/sql/rel.txt Wed Sep 15 10:45:40 2010 +0200 @@ -1,8 +1,3 @@ - -TODO - select and join ops should allow for and/or of expressions - ie we should alway only have a single exp which is and-ed and - or-ed together. BASETABLE (card MULTI) @@ -72,9 +67,9 @@ e_atom (card ATOM) -> l literal (-> l = atom) or - -> r parameter ( ->r = varname, ->f = subtype, ->flag = level) + -> r parameter ( ->r = varname, ->type = subtype, ->flag = level) or - -> numbered variable ( ->flag = nr, ->f = subtype) + -> numbered variable ( ->flag = nr, ->type = subtype) e_convert -> l sub expression @@ -82,7 +77,7 @@ e_cmp -> l left sub expression - -> r right sub expression + -> r right sub expression (f second arg for range expressions) -> flag compare type ( cmp_gt = 0, cmp_gte = 1, @@ -109,5 +104,6 @@ l,r names of refered expression -> l optional relation name -> r expression name + -> type diff -r 42a727be4365 -r b02e5798091a sql/src/include/sql_relation.h --- a/sql/src/include/sql_relation.h Tue Sep 14 17:25:15 2010 +0200 +++ b/sql/src/include/sql_relation.h Wed Sep 15 10:45:40 2010 +0200 @@ -46,7 +46,7 @@ char *rname; void *l; void *r; - void *f; /* func's and aggr's and column type */ + void *f; /* func's and aggr's */ /* e_cmp may have have 2 arguments */ int flag; /* EXP_DISTINCT, NO_NIL, ASCENDING, cmp types */ char card; /* card @@ -55,6 +55,7 @@ (2 aggr) (3 multi value) */ + sql_subtype tpe; int used; /* used for quick dead code removal */ void *p; /* properties for the optimizer */ } sql_exp; diff -r 42a727be4365 -r b02e5798091a sql/src/server/rel_bin.mx --- a/sql/src/server/rel_bin.mx Tue Sep 14 17:25:15 2010 +0200 +++ b/sql/src/server/rel_bin.mx Wed Sep 15 10:45:40 2010 +0200 @@ -263,9 +263,9 @@ atom *a = e->l; s = stmt_atom(atom_dup(a)); } else if (e->r) { /* parameters */ - s = stmt_var(_strdup(e->r), e->f, 0, e->flag); + s = stmt_var(_strdup(e->r), &e->tpe, 0, e->flag); } else { /* arguments */ - s = stmt_varnr(e->flag, e->f); + s = stmt_varnr(e->flag, &e->tpe); } } break; case e_convert: { @@ -419,7 +419,7 @@ s = bin_find_column(right, e->l, e->r); if (!s && left) { if (left->type == st_Nop && tail_type(left)->comp_type ) { /* table function */ - s = stmt_rs_column(stmt_dup(left), stmt_atom_string(_strdup(e->r)), e->f/*subtype*/); + s = stmt_rs_column(stmt_dup(left), stmt_atom_string(_strdup(e->r)), &e->tpe); } else { s = bin_find_column(left, e->l, e->r); } diff -r 42a727be4365 -r b02e5798091a sql/src/server/rel_exp.mx --- a/sql/src/server/rel_exp.mx Tue Sep 14 17:25:15 2010 +0200 +++ b/sql/src/server/rel_exp.mx Wed Sep 15 10:45:40 2010 +0200 @@ -118,6 +118,9 @@ e->f = NULL; e->p = NULL; e->used = 0; + e->tpe.type = NULL; + e->tpe.comp_type = NULL; + e->tpe.digits = e->tpe.scale = 0; return e; } @@ -240,8 +243,7 @@ totype = dup_subtype(totype); e->r = append(append(new_subtype_list(), dup_subtype(fromtype)),totype); - e->f = totype; /* keep a pointer to the copied type, the original may - disappear */ + e->tpe = *totype; return e; } @@ -349,7 +351,7 @@ sql_exp *e = exp_create(e_atom); e->card = CARD_ATOM; e->flag = i; - e->f = tpe; + e->tpe = *tpe; return e; } @@ -359,8 +361,8 @@ sql_exp *e = exp_create(e_atom); e->r = _strdup(name); e->card = CARD_ATOM; - e->f = tpe; e->flag = frame; + e->tpe = *tpe; return e; } @@ -375,7 +377,7 @@ e->name = _strdup(acname); e->l = (org_rname)?_strdup(org_rname):NULL; e->r = _strdup(org_cname); - e->f = t; + e->tpe = *t; if (!has_nils) set_has_no_nil(e); if (intern) @@ -393,7 +395,7 @@ e->name = _strdup(cname); e->l = (rname)?_strdup(rname):NULL; e->r = _strdup(cname); - e->f = t; + e->tpe = *t; if (!has_nils) set_has_no_nil(e); if (intern) @@ -459,12 +461,12 @@ atom *a = e->l; return atom_type(a); } else { /* atom reference */ - return e->f; + return &e->tpe; } } case e_convert: case e_column: - return e->f; + return &e->tpe; case e_aggr: { sql_subaggr *a = e->f; return &a->res; diff -r 42a727be4365 -r b02e5798091a sql/src/server/rel_select.mx --- a/sql/src/server/rel_select.mx Tue Sep 14 17:25:15 2010 +0200 +++ b/sql/src/server/rel_select.mx Wed Sep 15 10:45:40 2010 +0200 @@ -1694,7 +1694,7 @@ return -1; if (set_type_param(sql, type, param->flag) == 0) { - param->f = type; + param->tpe = *type; return 0; } return -1; @@ -1738,11 +1738,8 @@ a = sql_bind_arg(sql, exp->flag); if (a && atom_cast(a, t)) { - sql_subtype *x = ZNEW(sql_subtype); convert_arg(sql, exp->flag, t); - /* set new type */ - *x = *t; - exp->f = x; + exp->tpe = *t; return exp; } return NULL; @@ -3359,7 +3356,7 @@ sql_exp *e = exp_dup(n->data); if (a->type.type->eclass == EC_ANY) { - sql_subtype *st = e->f; + sql_subtype *st = &e->tpe; sql_init_subtype(&a->type, st->type, st->digits, st->scale); } e = rel_check_type(sql, &a->type, e, type_equal); @@ -3974,7 +3971,7 @@ if (col->token == SQL_COLUMN) { e = rel_column_ref(sql, &rel, col, f); if (e && e->card <= CARD_ATOM) { - sql_subtype *tpe = e->f; + sql_subtype *tpe = &e->tpe; /* integer atom on the stack */ if (e->type == e_atom && tpe->type->eclass == EC_NUM) { _______________________________________________ Checkin-list mailing list Checkin-list@monetdb.org http://mail.monetdb.org/mailman/listinfo/checkin-list