Changeset: 36e215b04c82 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/36e215b04c82
Modified Files:
        sql/server/rel_dump.c
Branch: returning
Log Message:

add/fix dumping/reading ins|del|upd relations


diffs (60 lines):

diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -691,7 +691,7 @@ rel_print_rel(mvc *sql, stream  *fout, s
                mnstr_printf(fout, ")");
                if (rel->op != op_truncate && rel->op != op_merge && rel->exps)
                        exps_print(sql, fout, rel->exps, depth, refs, 1, 0, 
decorate, 0);
-               if (is_modify(rel->op) && rel->attr) /* returning lists */
+               if ((is_insert(rel->op) || is_update(rel->op) || 
is_delete(rel->op)) && rel->attr) /* returning lists */
                        exps_print(sql, fout, rel->attr, depth, refs, 1, 0, 
decorate, 0);
        }       break;
        default:
@@ -1934,6 +1934,12 @@ rel_read(mvc *sql, char *r, int *pos, li
 
                if (!(rel = rel_insert(sql, lrel, rrel)) || !(rel = 
read_rel_properties(sql, rel, r, pos)))
                        return NULL;
+
+               skipWS(r, pos);
+               /* returning clause is signalled by a second expression list */
+               if (r[*pos] == '[' && !(rel->attr = read_exps(sql, lrel, NULL, 
NULL, r, pos, '[', 0, 1)))
+                               return NULL;
+               return rel;
        }
 
        if (r[*pos] == 'd' && r[*pos+1] == 'e' && r[*pos+2] == 'l') {
@@ -1956,6 +1962,12 @@ rel_read(mvc *sql, char *r, int *pos, li
 
                if (!(rel = rel_delete(sql->sa, lrel, rrel)) || !(rel = 
read_rel_properties(sql, rel, r, pos)))
                        return NULL;
+
+               skipWS(r, pos);
+               /* returning clause is signalled by a second expression list */
+               if (r[*pos] == '[' && !(rel->attr = read_exps(sql, lrel, NULL, 
NULL, r, pos, '[', 0, 1)))
+                               return NULL;
+               return rel;
        }
 
        if (r[*pos] == 't' && r[*pos+1] == 'r' && r[*pos+2] == 'u') {
@@ -2009,6 +2021,7 @@ rel_read(mvc *sql, char *r, int *pos, li
                if (!update_allowed(sql, t, t->base.name, "UPDATE", "update", 
0) )
                        return NULL;
 
+               skipWS(r, pos);
                if (!(exps = read_exps(sql, lrel, rrel, NULL, r, pos, '[', 0, 
1))) /* columns to be updated */
                        return NULL;
 
@@ -2029,6 +2042,13 @@ rel_read(mvc *sql, char *r, int *pos, li
 
                if (!(rel = rel_update(sql, lrel, rrel, NULL, nexps)) || !(rel 
= read_rel_properties(sql, rel, r, pos)))
                        return NULL;
+
+               skipWS(r, pos);
+               /* returning clause is signalled by a second expression list */
+               if (r[*pos] == '[' && !(rel->attr = read_exps(sql, lrel, NULL, 
NULL, r, pos, '[', 0, 1))) /* columns to be updated */
+                               return NULL;
+
+               return rel;
        }
 
        if (r[*pos] == 'm' && r[*pos+1] == 'e' && r[*pos+2] == 'r')
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to