Changeset: 927bacf4e2ea for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=927bacf4e2ea Modified Files: sql/backends/monet5/generator/Tests/joins00.sql sql/backends/monet5/generator/generator.c Branch: generator Log Message:
Fixes to the join algorithm diffs (75 lines): diff --git a/sql/backends/monet5/generator/Tests/joins00.sql b/sql/backends/monet5/generator/Tests/joins00.sql --- a/sql/backends/monet5/generator/Tests/joins00.sql +++ b/sql/backends/monet5/generator/Tests/joins00.sql @@ -23,7 +23,9 @@ select * from generate_series(0,10,2) X, select * from generate_series(0,10,2) X, tmp2 Y where Y.i = X.value; select * from generate_series(0,10,2) X, tmp2 Y where X.value = Y.i and value >5; +select * from generate_series(0,10,2) X, tmp2 Y where Y.i = X.value and value >5; select * from generate_series(0,10,2) as X, tmp2 Y where X.value = Y.i and value <12 and value >3; +select * from generate_series(0,10,2) as X, tmp2 Y where Y.i = X.value and value <12 and value >3; drop table tmp2; diff --git a/sql/backends/monet5/generator/generator.c b/sql/backends/monet5/generator/generator.c --- a/sql/backends/monet5/generator/generator.c +++ b/sql/backends/monet5/generator/generator.c @@ -289,7 +289,7 @@ findLastAssign(MalBlkPtr mb, InstrPtr pc { InstrPtr q, p = NULL; int i; - str vaultRef = putName("vault",5); + str vaultRef = putName("generator",9); for (i = 1; i < mb->stop; i++) { q = getInstrPtr(mb, i); @@ -764,12 +764,12 @@ str VLTgenerator_leftfetchjoin(Client cn f = *(TPE*) getArgReference(stk,p, 1);\ l = *(TPE*) getArgReference(stk,p, 2);\ s = *(TPE*) getArgReference(stk,p, 3);\ - for( ; cnt >0; cnt--,os++,o++){\ - v = (TPE*) Tloc(bl,BUNfirst(bl));\ + v = (TPE*) Tloc(bl,BUNfirst(bl));\ + for( ; cnt >0; cnt--,os++,o++,v++){\ w = (BUN) floor((*v -f)/s);\ if ( *v >= f && *v < l && f + (TPE)(w * s) == *v ){\ *or++ = w;\ - *ol++ = *o;\ + *ol++ = os;\ c++;\ }\ } }\ @@ -807,14 +807,11 @@ str VLTgenerator_join(Client cntxt, MalB // switch roles to have a single target bat[:oid,:any] designated // by b and reference instruction p for the generator - b = q? br : bl; + b = q? bl : br; p = q? q : p; cnt = BATcount(b); tpe = b->ttype; - if( b->ttype == TYPE_void) - os = b->tseqbase; - else - o = (oid*) Tloc(b,BUNfirst(b)); + os = b->tseqbase; bln = BATnew(TYPE_void,TYPE_oid, cnt); brn = BATnew(TYPE_void,TYPE_oid, cnt); @@ -835,12 +832,12 @@ str VLTgenerator_join(Client cntxt, MalB f = *(bte*) getArgReference(stk,p, 1); l = *(bte*) getArgReference(stk,p, 2); s = *(bte*) getArgReference(stk,p, 3); - for( ; cnt >0; cnt--,os++,o++){ - v = (bte*) Tloc(b,BUNfirst(b)); - w = (BUN) ((*v -f)/s); + v = (bte*) Tloc(b,BUNfirst(b)); + for( ; cnt >0; cnt--,os++,o++,v++){ + w = (BUN) floor((*v -f)/s); if ( *v >= f && *v < l && f + (bte)( w * s) == *v ){ *or++ = (oid) w; - *ol++ = *o; + *ol++ = os; c++; } } } _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list