Changeset: 3fc79277936b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3fc79277936b
Modified Files:
        MonetDB5/src/optimizer/opt_prelude.mx
        MonetDB5/src/optimizer/opt_support.mx
Branch: default
Log Message:

Merge with Oct2010 branch.


diffs (76 lines):

diff -r 68308d7e320a -r 3fc79277936b sql/src/server/rel_select.mx
--- a/sql/src/server/rel_select.mx      Tue Sep 07 10:49:13 2010 +0200
+++ b/sql/src/server/rel_select.mx      Tue Sep 07 11:03:36 2010 +0200
@@ -39,6 +39,7 @@
 extern sql_rel * rel_project(sql_rel *l, list *e);
 extern void rel_project_add_exp( mvc *sql, sql_rel *rel, sql_exp *e);
 extern list * rel_projections(mvc *sql, sql_rel *rel, char *tname, int 
settname , int intern);
+extern sql_exp *rel_column_exp(mvc *sql, sql_rel **rel, symbol *column_e, int 
f);
 
 extern void rel_add_intern(mvc *sql, sql_rel *rel);
 
@@ -4265,7 +4266,7 @@
        return NULL;
 }
 
-static sql_exp *
+sql_exp *
 rel_column_exp(mvc *sql, sql_rel **rel, symbol *column_e, int f)
 {
        if (column_e->token == SQL_COLUMN) {
diff -r 68308d7e320a -r 3fc79277936b sql/src/server/rel_updates.mx
--- a/sql/src/server/rel_updates.mx     Tue Sep 07 10:49:13 2010 +0200
+++ b/sql/src/server/rel_updates.mx     Tue Sep 07 11:03:36 2010 +0200
@@ -377,14 +377,14 @@
                        symbol *a = NULL;
                        sql_exp *v = NULL;
                        dlist *assignment = n->data.sym->data.lval;
-                       char *cname = assignment->h->data.sval;
+                       char *cname = assignment->h->next->data.sval;
                        sql_column *c = mvc_bind_column(sql, t, cname);
 
                        if (!c) {
                                rel_destroy(r);
-                               return sql_error(sql, 02, "UPDATE: no such 
column '%s.%s'", t->base.name, assignment->h->data.sval);
+                               return sql_error(sql, 02, "UPDATE: no such 
column '%s.%s'", t->base.name, cname);
                        }
-                       a = assignment->h->next->data.sym;
+                       a = assignment->h->data.sym;
                        if (a) {
                                int status = sql->session->status;
                                sql_rel *rel_val = NULL;
@@ -393,9 +393,12 @@
                                v = rel_value_exp(sql, &rel_val, a, sql_sel, 
ek);
 
                                if (!v) {
+                                       symbol *s = n->data.sym;
                                        sql->errstr[0] = 0;
                                        sql->session->status = status;
-                                       v = rel_value_exp(sql, &r, a, sql_sel, 
ek);
+                                       //v = rel_value_exp(sql, &r, a, 
sql_sel, ek);
+                                       s->token = SQL_COLUMN;
+                                       v = rel_column_exp(sql, &r, s, sql_sel);
                                }
                                if (!v || (v = rel_check_type(sql, &c->type, v, 
type_equal)) == NULL) {
                                        if (v)
diff -r 68308d7e320a -r 3fc79277936b sql/src/server/sql_parser.mx
--- a/sql/src/server/sql_parser.mx      Tue Sep 07 10:49:13 2010 +0200
+++ b/sql/src/server/sql_parser.mx      Tue Sep 07 11:03:36 2010 +0200
@@ -2760,15 +2760,15 @@
    column '=' search_condition
 
        { dlist *l = L();
+         append_symbol(l, $3 );
          append_string(l, $1);
-         append_symbol(l, $3 );
          $$ = _symbol_create_list( SQL_ASSIGN, l); }
 
  | column '=' sqlNULL
 
        { dlist *l = L();
+         append_symbol(l, NULL );
          append_string(l, $1);
-         append_symbol(l, NULL );
          $$ = _symbol_create_list( SQL_ASSIGN, l); }
  ;
 
_______________________________________________
Checkin-list mailing list
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to