Changeset: 864a5199c36b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=864a5199c36b
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/server/rel_select.c
Branch: arrays
Log Message:

fixed bug when carrying the default value along with the non-dimensional column


diffs (47 lines):

diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -547,11 +547,7 @@ exp_bin(mvc *sql, sql_exp *e, stmt *left
                        printf("could not find %s.%s\n", (char*)e->l, 
(char*)e->r);
                        print_stmtlist(sql->sa, left);
                        print_stmtlist(sql->sa, right);
-               }
-
-               if(e->f) { //it is the default value
-                       s->op1 = exp_bin(sql, e->f, NULL, NULL, NULL, NULL, 
NULL, NULL);
-               }
+               }       
         }      break;
        case e_cmp: {
                stmt *l = NULL, *r = NULL, *r2 = NULL;
@@ -1212,6 +1208,10 @@ rel2bin_basetable( mvc *sql, sql_rel *re
                        } else {
                                sql_column *c = find_sql_column(t, oname);
                                s = stmt_col(sql, c, dels);
+                               
+                               if(isArray(t) && exp->f) { //carrythe default 
value
+                                       s->op1 = exp_bin(sql, exp->f, NULL, 
NULL, NULL, NULL, NULL, NULL);
+                               }
                        }
                }
                s->tname = rname;
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -470,6 +470,16 @@ rel_basetable(mvc *sql, sql_table *t, ch
                sql_column *c = cn->data;
                sql_exp *e = exp_alias(sa, atname, c->base.name, tname, 
c->base.name, &c->type, CARD_MULTI, c->null, 0);
 
+        //if the column belongs to an array I need to carry along the default 
value (if provided)
+        if(isArray(t) && c->def) {
+            char *q = sa_message(sql->sa, "select %s;", c->def);
+            sql_exp* edef = rel_parse_val(sql, q, sql->emode);
+            if (!edef || (edef = rel_check_type(sql, &c->type, edef, 
type_equal)) == NULL)
+                e->f = NULL;
+            else
+                e->f = edef;
+        }
+
                if (c->t->pkey && ((sql_kc*)c->t->pkey->k.columns->h->data)->c 
== c) {
                        p = e->p = prop_create(sa, PROP_HASHCOL, e->p);
                        p->value = c->t->pkey;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to