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
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list