Changeset: ee10a27f2ba3 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ee10a27f2ba3
Modified Files:
        monetdb5/optimizer/opt_prelude.c
        monetdb5/optimizer/opt_prelude.h
        monetdb5/optimizer/opt_support.c
        sql/backends/monet5/rel_bin.c
Branch: directappend
Log Message:

Use sql.append_from instead of the ugly +100 hack


diffs (71 lines):

diff --git a/monetdb5/optimizer/opt_prelude.c b/monetdb5/optimizer/opt_prelude.c
--- a/monetdb5/optimizer/opt_prelude.c
+++ b/monetdb5/optimizer/opt_prelude.c
@@ -39,6 +39,7 @@ const char *alter_typeRef;
 const char *alter_userRef;
 const char *alter_viewRef;
 const char *andRef;
+const char *append_fromRef;
 const char *appendidxRef;
 const char *appendBulkRef;
 const char *appendRef;
@@ -356,6 +357,7 @@ void optimizerInit(void)
        alter_userRef = putName("alter_user");
        alter_viewRef = putName("alter_view");
        andRef = putName("and");
+       append_fromRef = putName("append_from");
        appendidxRef = putName("append_idxbat");
        appendBulkRef = putName("appendBulk");
        appendRef = putName("append");
diff --git a/monetdb5/optimizer/opt_prelude.h b/monetdb5/optimizer/opt_prelude.h
--- a/monetdb5/optimizer/opt_prelude.h
+++ b/monetdb5/optimizer/opt_prelude.h
@@ -35,6 +35,7 @@ mal_export  const char *alter_typeRef;
 mal_export  const char *alter_userRef;
 mal_export  const char *alter_viewRef;
 mal_export  const char *andRef;
+mal_export  const char *append_fromRef;
 mal_export  const char *appendidxRef;
 mal_export  const char *appendBulkRef;
 mal_export  const char *appendRef;
diff --git a/monetdb5/optimizer/opt_support.c b/monetdb5/optimizer/opt_support.c
--- a/monetdb5/optimizer/opt_support.c
+++ b/monetdb5/optimizer/opt_support.c
@@ -423,6 +423,7 @@ hasSideEffects(MalBlkPtr mb, InstrPtr p,
                if (getFunctionId(p) == binddbatRef) return FALSE;
                if (getFunctionId(p) == columnBindRef) return FALSE;
                if (getFunctionId(p) == copy_fromRef) return FALSE;
+               if (getFunctionId(p) == append_fromRef) return FALSE;
                /* assertions are the end-point of a flow path */
                if (getFunctionId(p) == not_uniqueRef) return FALSE;
                if (getFunctionId(p) == zero_or_oneRef) return FALSE;
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
@@ -4457,7 +4457,7 @@ rel2bin_directappend(backend *be, sql_re
        }
 
        // Then emit the call. Maybe there's a stmt_function for that..
-       InstrPtr append_instr = newFcnCallArgs(mb, sqlRef, copy_fromRef, 100);
+       InstrPtr append_instr = newFcnCallArgs(mb, sqlRef, append_fromRef, 100);
        setDestType(mb, append_instr, newBatType(TYPE_oid));
        for (node *n = l->h; n; n = n->next) {
                stmt *s = n->data;
@@ -4499,17 +4499,6 @@ rel2bin_insert(backend *be, sql_rel *rel
        // the temporary dedicated code generator
        sql_exp *copyfrom = can_use_directappend(rel);
        if (copyfrom != NULL) {
-               // later on we'll do this properly, passing an extra parameter,
-               // for now we adjust an existing parameter.
-               // Very ugly, sorry
-               list *args = copyfrom->l;
-               sql_exp* arg7 = 
args->h->next->next->next->next->next->next->next->next->data;
-               assert(arg7->type == e_atom);
-               atom *a = arg7->l;
-               assert(atom_type(a)->type->localtype == TYPE_int);
-               int *best_effort = &a->data.val.ival;
-               *best_effort += 100; // magic
-
                return rel2bin_directappend(be, rel, refs, copyfrom);
        }
 
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to