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

Reply via email to