Changeset: fcbaa8737f2b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/fcbaa8737f2b
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/sql_statement.h
Branch: parappend
Log Message:

Re-use mvc parameter between sql.append's


diffs (67 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
@@ -4303,14 +4303,16 @@ rel2bin_insert(backend *be, sql_rel *rel
                m = m->next;
        }
 
+       int mvc_var = be->mvc_var;
        for (n = ol_first_node(t->columns), m = inserts->op4.lval->h; n && m; n 
= n->next, m = m->next) {
 
                stmt *ins = m->data;
                sql_column *c = n->data;
 
-               insert = stmt_append_col(be, c, pos, ins, rel->flag);
+               insert = stmt_append_col(be, c, pos, ins, &mvc_var, rel->flag);
                append(l,insert);
        }
+       be->mvc_var = mvc_var;
        if (!insert)
                return NULL;
 
diff --git a/sql/backends/monet5/sql_statement.c 
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -700,7 +700,7 @@ stmt_idxbat(backend *be, sql_idx *i, int
 }
 
 stmt *
-stmt_append_col(backend *be, sql_column *c, stmt *offset, stmt *b, int fake)
+stmt_append_col(backend *be, sql_column *c, stmt *offset, stmt *b, int 
*mvc_var_update, int fake)
 {
        MalBlkPtr mb = be->mb;
        InstrPtr q = NULL;
@@ -729,7 +729,10 @@ stmt_append_col(backend *be, sql_column 
                q = pushArgument(mb, q, be->mvc_var);
                if (q == NULL)
                        return NULL;
-               getArg(q, 0) = be->mvc_var = newTmpVariable(mb, TYPE_int);
+               int tmpvar = newTmpVariable(mb, TYPE_int);
+               getArg(q, 0) = tmpvar;
+               if (mvc_var_update != NULL)
+                       *mvc_var_update = tmpvar;
                q = pushSchema(mb, q, c->t);
                q = pushStr(mb, q, c->t->base.name);
                q = pushStr(mb, q, c->base.name);
@@ -737,7 +740,8 @@ stmt_append_col(backend *be, sql_column 
                q = pushArgument(mb, q, b->nr);
                if (q == NULL)
                        return NULL;
-               be->mvc_var = getDestVar(q);
+               if (mvc_var_update != NULL)
+                       *mvc_var_update = getDestVar(q);
        } else {
                return b;
        }
diff --git a/sql/backends/monet5/sql_statement.h 
b/sql/backends/monet5/sql_statement.h
--- a/sql/backends/monet5/sql_statement.h
+++ b/sql/backends/monet5/sql_statement.h
@@ -158,7 +158,7 @@ extern stmt *stmt_idxbat(backend *be, sq
 extern stmt *stmt_tid(backend *be, sql_table *t, int partition);
 
 extern stmt *stmt_claim(backend *be, sql_table *t, stmt *cnt);
-extern stmt *stmt_append_col(backend *be, sql_column *c, stmt *offset, stmt 
*b, int locked);
+extern stmt *stmt_append_col(backend *be, sql_column *c, stmt *offset, stmt 
*b, int *mvc_var_update, int locked);
 extern stmt *stmt_append_idx(backend *be, sql_idx *i, stmt *offset, stmt *b);
 extern stmt *stmt_update_col(backend *be, sql_column *c, stmt *tids, stmt 
*upd);
 extern stmt *stmt_update_idx(backend *be, sql_idx *i, stmt *tids, stmt *upd);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to