Changeset: 9e06dde4496b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9e06dde4496b
Modified Files:
monetdb5/extras/dvf/opt_dvf.c
Branch: DVframework
Log Message:
Iterate over two bats in the iterative implementation.
diffs (182 lines):
diff --git a/monetdb5/extras/dvf/opt_dvf.c b/monetdb5/extras/dvf/opt_dvf.c
--- a/monetdb5/extras/dvf/opt_dvf.c
+++ b/monetdb5/extras/dvf/opt_dvf.c
@@ -110,14 +110,17 @@ OPTdvfImplementation(Client cntxt, MalBl
str miniseedRef = putName("miniseed", 8);
str dvfRef = putName("dvf", 3);
str planmodifierRef = putName("plan_modifier", 13);
+ str fetchfileidsandlocationsRef =
putName("fetch_file_ids_and_locations", 28);
//states of finding the pattern
int state = 0; //0: start, 1:found v3, 2:found v5, 3:done with
injection;
//state variables (instruction index) numbered with state
int i1 = 0, i2 = 0;
+
+ //
- InstrPtr *old = NULL, q = NULL, r = NULL, t = NULL, b = NULL, m = NULL,
e = NULL, b0 = NULL, b1 = NULL, b2 = NULL, pd = NULL, *ps_iter = NULL;
+ InstrPtr *old = NULL, q = NULL, r = NULL, t = NULL, b = NULL, m = NULL,
e = NULL, b0 = NULL, b1 = NULL, b2 = NULL, ffiali = NULL, *ps_iter = NULL;
int i, limit, which_column, actions = 0;
int last_bind_return_var_id = -1;
int last_data_tid_return_var_id = -1;
@@ -238,19 +241,17 @@ OPTdvfImplementation(Client cntxt, MalBl
* t3 := bat.mirror(t1);
* t4 := algebra.leftjoin(t3,
v6);
*
- * X_17 :=
sql.bind(X_3,"mseed","files","file_location",0);
- * (X_19,r1_24) :=
sql.bind(X_3,"mseed","files","file_location",2);
- * X_21 :=
sql.bind(X_3,"mseed","files","file_location",1);
- * X_22 :=
sql.projectdelta(t4,X_17,X_19,r1_24,X_21);
+ * (X_21,X_22) :=
dvf.fetch_file_ids_and_locations("mseed",t4);
*
- * barrier (o, fileLocation) :=
iterator.new(X_22);
- * (v71:bat[:oid,:int],
v81:bat[:oid,:int], v91:bat[:oid,:timestamp], ...)
:=miniseed.mount(fileLocation);
+ * barrier (o, fileId) :=
iterator.new(X_21);
+ * fileLocation:=
algebra.fetch(X_22,o);
+ * (v71:bat[:oid,:int],
v81:bat[:oid,:int], v91:bat[:oid,:timestamp], ...)
:=miniseed.mount(fileId,fileLocation);
* v7 := sql.append(v7,v71);
* v8 := sql.append(v8,v81);
* v9 := sql.append(v9,v91);
* ...
- * redo (o, fileLocation) :=
iterator.next(X_22);
- * exit (o,fileLocation);
+ * redo (o, fileId) :=
iterator.next(X_21);
+ * exit (o,fileId);
*/
int a = 0, type;
@@ -281,50 +282,14 @@ OPTdvfImplementation(Client cntxt, MalBl
t = pushArgument(mb, t,
getArg(q, 1));
t = pushArgument(mb, t,
getArg(old[i2], 0));
- /* create sql.bind 0
instruction */
- b0 = newInstruction(mb,
ASSIGNsymbol);
- setModuleId(b0, sqlRef);
- setFunctionId(b0, bindRef);
- b0 = pushReturn(mb, b0,
newTmpVariable(mb, TYPE_bat)); /* X_17 */
- b0 = pushArgument(mb, b0,
var_sql_mvc); /* X_3: sql_mvc */
- b0 = pushStr(mb, b0,
schema_name); /* schema_name */
- b0 = pushStr(mb, b0,
files_table_name); /* "files" */
- b0 = pushStr(mb, b0,
file_location_str); /* "file_location" */
- b0 = pushInt(mb, b0, 0); /*
contents: 0, inserts: 1, or updates: 2 */
-
- /* create sql.bind 2
instruction */
- b2 = newInstruction(mb,
ASSIGNsymbol);
- setModuleId(b2, sqlRef);
- setFunctionId(b2, bindRef);
- b2 = pushReturn(mb, b2,
newTmpVariable(mb, TYPE_bat)); /* X_19 */
- b2 = pushReturn(mb, b2,
newTmpVariable(mb, TYPE_bat)); /* r1_24 */
- b2 = pushArgument(mb, b2,
var_sql_mvc); /* X_3: sql_mvc */
- b2 = pushStr(mb, b2,
schema_name); /* schema_name */
- b2 = pushStr(mb, b2,
files_table_name); /* "files" */
- b2 = pushStr(mb, b2,
file_location_str); /* "file_location" */
- b2 = pushInt(mb, b2, 2); /*
contents: 0, inserts: 1, or updates: 2 */
-
- /* create sql.bind 1
instruction */
- b1 = newInstruction(mb,
ASSIGNsymbol);
- setModuleId(b1, sqlRef);
- setFunctionId(b1, bindRef);
- b1 = pushReturn(mb, b1,
newTmpVariable(mb, TYPE_bat)); /* X_21 */
- b1 = pushArgument(mb, b1,
var_sql_mvc); /* X_3: sql_mvc */
- b1 = pushStr(mb, b1,
schema_name); /* schema_name */
- b1 = pushStr(mb, b1,
files_table_name); /* "files" */
- b1 = pushStr(mb, b1,
file_location_str); /* "file_location" */
- b1 = pushInt(mb, b1, 1); /*
contents: 0, inserts: 1, or updates: 2 */
-
- /* create sql.projectdelta
instruction */
- pd = newInstruction(mb,
ASSIGNsymbol);
- setModuleId(pd, sqlRef);
- setFunctionId(pd,
projectdeltaRef);
- pd = pushReturn(mb, pd,
newTmpVariable(mb, TYPE_bat)); /* X_22 */
- pd = pushArgument(mb, pd,
getArg(t, 0)); /* t4 */
- pd = pushArgument(mb, pd,
getArg(b0, 0)); /* X_17 */
- pd = pushArgument(mb, pd,
getArg(b2, 0)); /* X_19 */
- pd = pushArgument(mb, pd,
getArg(b2, 1)); /* r1_24 */
- pd = pushArgument(mb, pd,
getArg(b1, 0)); /* X_21 */
+ /* create
dvf.fetch_file_ids_and_locations instruction */
+ ffiali = newInstruction(mb,
ASSIGNsymbol);
+ setModuleId(ffiali, dvfRef);
+ setFunctionId(ffiali,
fetchfileidsandlocationsRef);
+ ffiali = pushReturn(mb, ffiali,
newTmpVariable(mb, TYPE_bat)); /* X_21 */
+ ffiali = pushReturn(mb, ffiali,
newTmpVariable(mb, TYPE_bat)); /* X_22 */
+ ffiali = pushStr(mb, ffiali,
schema_name); /* schema_name */
+ ffiali = pushArgument(mb,
ffiali, getArg(t, 0)); /* t4 */
/* create barrier instruction */
@@ -333,8 +298,8 @@ OPTdvfImplementation(Client cntxt, MalBl
setFunctionId(b, newRef);
b->barrier = BARRIERsymbol;
b = pushReturn(mb, b,
newTmpVariable(mb, TYPE_any)); /* o */
- b = pushReturn(mb, b,
newTmpVariable(mb, TYPE_any)); /* fileLocation iterator */
- b = pushArgument(mb, b,
getArg(pd, 0)); /* X_22 */
+ b = pushReturn(mb, b,
newTmpVariable(mb, TYPE_any)); /* fileId iterator */
+ b = pushArgument(mb, b,
getArg(ffiali, 0)); /* X_21 */
/* create redo instruction */
r = newInstruction(mb,
ASSIGNsymbol);
@@ -342,8 +307,16 @@ OPTdvfImplementation(Client cntxt, MalBl
setFunctionId(r, nextRef);
r->barrier = REDOsymbol;
r = pushReturn(mb, r, getArg(b,
0)); /* o */
- r = pushReturn(mb, r, getArg(b,
1)); /* fileLocation iterator */
- r = pushArgument(mb, r,
getArg(pd, 0)); /* X_22 */
+ r = pushReturn(mb, r, getArg(b,
1)); /* fileId iterator */
+ r = pushArgument(mb, r,
getArg(ffiali, 0)); /* X_21 */
+
+ /* create algebra.fetch
instruction */
+ f = newInstruction(mb,
ASSIGNsymbol);
+ setModuleId(f, algebraRef);
+ setFunctionId(f, fetchRef);
+ f = pushReturn(mb, f,
newTmpVariable(mb, TYPE_str)); /* fileLocation iterator */
+ f = pushArgument(mb, f,
getArg(ffiali, 1)); /* X_22 */
+ f = pushArgument(mb, f,
getArg(b, 0)); /* o */
/* create mount instruction */
m = newInstruction(mb,
ASSIGNsymbol);
@@ -381,14 +354,15 @@ OPTdvfImplementation(Client cntxt, MalBl
ps_iter[a+NUM_RET_MOUNT] = pushArgument(mb, ps_iter[a+NUM_RET_MOUNT], getArg(m,
a));
}
- /* push arg of mount
instruction */
- m = pushArgument(mb, m,
getArg(b, 1));
+ /* push args of mount
instruction */
+ m = pushArgument(mb, m,
getArg(b, 1)); /* fileId iterator */
+ m = pushArgument(mb, m,
getArg(f, 0)); /* fileLocation iterator */
/* create exit instruction */
e = newInstruction(mb,
ASSIGNsymbol);
e->barrier = EXITsymbol;
e = pushReturn(mb, e, getArg(b,
0)); /* o */
- e = pushReturn(mb, e, getArg(b,
1)); /* fileLocation iterator */
+ e = pushReturn(mb, e, getArg(b,
1)); /* fileId iterator */
/* insert the new instructions
in pc i2+1 */
insertInstruction(mb, e, i2+1);
@@ -398,12 +372,10 @@ OPTdvfImplementation(Client cntxt, MalBl
insertInstruction(mb,
ps_iter[a+NUM_RET_MOUNT], i2+1);
}
insertInstruction(mb, m, i2+1);
+ insertInstruction(mb, f, i2+1);
insertInstruction(mb, b, i2+1);
- insertInstruction(mb, pd, i2+1);
- insertInstruction(mb, b1, i2+1);
- insertInstruction(mb, b2, i2+1);
- insertInstruction(mb, b0, i2+1);
+ insertInstruction(mb, ffiali,
i2+1);
insertInstruction(mb, t, i2+1);
// insertInstruction(mb, s, i2+1);
@@ -414,8 +386,8 @@ OPTdvfImplementation(Client cntxt, MalBl
insertInstruction(mb,
ps_iter[a], i2+1);
}
- i += 6 + NUM_RET_MOUNT * 2 - 1;
/* -1 because this bind should be reconsidered with state=3 in the next
iteration. */
- actions += 7 + NUM_RET_MOUNT *
2;
+ i += 8 + NUM_RET_MOUNT * 2 - 1;
/* -1 because this bind should be reconsidered with state=3 in the next
iteration. */
+ actions += 8 + NUM_RET_MOUNT *
2;
state = 3;
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list