Changeset: 301e1a2ef519 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=301e1a2ef519
Modified Files:
monetdb5/optimizer/opt_octopus.mx
monetdb5/optimizer/opt_pipes.mx
sql/backends/monet5/sql.mx
Branch: default
Log Message:
Adaptation of octopus code for new mitosis using (part nr, number of parts).
diffs (138 lines):
diff --git a/monetdb5/optimizer/opt_octopus.mx
b/monetdb5/optimizer/opt_octopus.mx
--- a/monetdb5/optimizer/opt_octopus.mx
+++ b/monetdb5/optimizer/opt_octopus.mx
@@ -183,8 +183,10 @@
typedef struct MALPART {
str sch;
str tab;
- oid low;
- oid hgh;
+ /* oid low;
+ oid hgh;*/
+ int part_nr;
+ int nr_parts;
int *ret;
int retcnt;
wrd rows;
@@ -232,20 +234,20 @@
}
static int
-OCTgetMalPart(str sch, str tab, oid low, oid hgh)
+OCTgetMalPart(str sch, str tab, int pn, int np)
{
int i;
for (i = 0; i < octClCnt; i++)
if ( strcmp(tab, octCluster[i].tab) == 0 &&
- low == octCluster[i].low && hgh ==
octCluster[i].hgh )
+ pn == octCluster[i].part_nr && np ==
octCluster[i].nr_parts )
break;
if ( i < octClCnt )
return i;
octCluster[i].sch = GDKstrdup(sch);
octCluster[i].tab = GDKstrdup(tab);
- octCluster[i].low = low;
- octCluster[i].hgh = hgh;
+ octCluster[i].part_nr = pn;
+ octCluster[i].nr_parts = np;
octCluster[i].ret = (int*) GDKzalloc( sizeof(int) * octClResSize);
octCluster[i].retcnt = 0;
octClCnt++;
@@ -960,7 +962,7 @@
InstrPtr p, *old, sig, q, *pref = NULL;
bte *set = NULL, *bnd = NULL;
int *malPart = NULL, *alias = NULL, *src = NULL;
- oid l,h;
+ int pn, np;
str tnm, tblname = NULL;
char rname[BUFSIZ];
MalBlkPtr *tentacle = NULL;
@@ -1037,7 +1039,7 @@
/* create cluster 0 for instructions to be executed at the head */
OCTinitMalPart();
- OCTgetMalPart("","",(oid) 0, (oid) 0);
+ OCTgetMalPart("","",1, 1);
malPart = (int*) GDKzalloc(mb->vtop * sizeof(int)); /* mask for cluster
inclusion */
memset((char *) malPart,~(char)0,mb->vtop * sizeof(int));
@@ -1055,9 +1057,9 @@
bnd[getArg(p,0)] = 1;
if ( p->argc >= 7 ){
tnm = (str) getVarValue(mb,getArg(p,3));
- l = *(oid*) getVarValue(mb,getArg(p,6));
- h = *(oid*) getVarValue(mb,getArg(p,7));
- malPart[getArg(p,0)] = (int)1 <<
OCTgetMalPart("",tnm,l,h);
+ pn = *(int*) getVarValue(mb,getArg(p,6));
+ np = *(int*) getVarValue(mb,getArg(p,7));
+ malPart[getArg(p,0)] = (int)1 <<
OCTgetMalPart("",tnm,pn,np);
continue;
}
}
diff --git a/monetdb5/optimizer/opt_pipes.mx b/monetdb5/optimizer/opt_pipes.mx
--- a/monetdb5/optimizer/opt_pipes.mx
+++ b/monetdb5/optimizer/opt_pipes.mx
@@ -92,7 +92,7 @@
/*
* The Octopus pipeline for distributed processing (Merovingian enabled
platforms only)
*/
-{"octopus_pipe",
"inline,remap,evaluate,costModel,coercions,emptySet,aliases,mitosis,mergetable,deadcode,constants,commonTerms,joinPath,octopus,deadcode,reduce,dataflow,history,multiplex,garbageCollector"},
+{"octopus_pipe",
"inline,remap,evaluate,costModel,coercions,emptySet,aliases,mitosis,mergetable,deadcode,commonTerms,joinPath,reorder,deadcode,costModel,octopus,reduce,dataflow,history,multiplex,garbageCollector"},
/* The default + datacyclotron*/
{"datacyclotron_pipe",
"inline,remap,evaluate,costModel,coercions,emptySet,aliases,datacyclotron,mergetable,deadcode,commonTerms,joinPath,reorder,deadcode,reduce,dataflow,history,replication,multiplex,garbageCollector"},
diff --git a/sql/backends/monet5/sql.mx b/sql/backends/monet5/sql.mx
--- a/sql/backends/monet5/sql.mx
+++ b/sql/backends/monet5/sql.mx
@@ -995,6 +995,50 @@
b:bat[:oid,:oid]:= remote.get(conn,bh);
return bind_idxbat:= b;
end octopus.bind_idxbat;
+@-
+Octopus.bind signatures adjusted to new mitosis sql.bind (part_nr, nr_parts)
+@mal
+function octopus.bind(mvc:int, sch:str, tab:str,col:str,kind:int,
+ part_nr:int, nr_parts:int, version:int) :bat[:oid,:any_1];
+ b:bat[:oid,:any_1]:= sql.bind(mvc,sch,tab,col,kind,part_nr,nr_parts);
+ return bind:= b;
+end bind;
+
+function octopus.bind(conn:str, sch:str, tab:str,col:str,kind:int,
+part_nr:int, nr_parts:int, version:int):bat[:oid,:any_1];
+ b:bat[:oid,:any_1] := nil:bat[:oid,:any_1];
+ m := nil:int;
+ rm := remote.put(conn,m);
+ rm := remote.exec(conn,"sql","mvc");
+ s := remote.put(conn,sch);
+ t := remote.put(conn,tab);
+ c := remote.put(conn,col);
+ k := remote.put(conn,kind);
+ v := remote.put(conn,version);
+ l := remote.put(conn,part_nr);
+ h := remote.put(conn,nr_parts);
+ rb:= remote.put(conn,b);
+ rb:= remote.exec(conn,"sql","bind",rm,s,t,c,k,l,h);
+ b:bat[:oid,:any_1]:= remote.get(conn,rb);
+ return bind:= b;
+end octopus.bind;
+
+function octopus.bind_idxbat(conn:str, sch:str, tab:str, index:str,
access:int, part_nr:int, nr_parts:int, version:int):bat[:oid,:oid];
+ b:bat[:oid,:oid] := nil:bat[:oid,:oid];
+ m := nil:int;
+ rm := remote.put(conn,m);
+ rm := remote.exec(conn,"sql","mvc");
+ s := remote.put(conn,sch);
+ t := remote.put(conn,tab);
+ i := remote.put(conn,index);
+ a := remote.put(conn,access);
+ l := remote.put(conn,part_nr);
+ h := remote.put(conn,nr_parts);
+ bh:= remote.put(conn,b);
+ bh:= remote.exec(conn,"sql","bind_idxbat",rm,s,t,i,a,l,h);
+ b:bat[:oid,:oid]:= remote.get(conn,bh);
+ return bind_idxbat:= b;
+end octopus.bind_idxbat;
function octopus.getVariable(conn:str,name:str):any_1;
s := remote.put(conn,name);
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list