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