Changeset: 68109de273bc for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=68109de273bc Modified Files: monetdb5/modules/mal/bitcandidates.c monetdb5/modules/mal/bitcandidates.mal monetdb5/optimizer/opt_bitcandidates.c Branch: compressedcandidates Log Message:
use TYPE_bte instead of TYPE_oid for the compressed bitcandidates to prevent BATsettrivprop from setting tseqbase if BATcount <= 1. diffs (85 lines): diff --git a/monetdb5/modules/mal/bitcandidates.c b/monetdb5/modules/mal/bitcandidates.c --- a/monetdb5/modules/mal/bitcandidates.c +++ b/monetdb5/modules/mal/bitcandidates.c @@ -13,7 +13,7 @@ #include "mal_interpreter.h" #include "sys/param.h" -#define bits 64 /* using OIDs to represent the bitvector */ +#define bits 8 /* using BYTEs to represent the bitvector */ str BCLcompress(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci) @@ -21,7 +21,8 @@ BCLcompress(Client cntxt, MalBlkPtr mb, bat *ret = getArgReference_bat(stk,pci,0); bat *val = getArgReference_bat(stk,pci,1); BAT *b, *bn; - oid *p,*q, base, first, last, *o, comp; + oid *p,*q, base, first, last, comp; + bte *o; (void) cntxt; (void) mb; @@ -41,12 +42,12 @@ BCLcompress(Client cntxt, MalBlkPtr mb, comp = (last-first)/bits +1; fprintf(stderr,"# BLCcompress base "BUNFMT" first "BUNFMT" range " BUNFMT" count "BUNFMT" vector " BUNFMT"\n", base, first, last, BATcount(b), comp); - bn = COLnew(0, TYPE_oid, comp, TRANSIENT); + bn = COLnew(0, TYPE_bte, comp, TRANSIENT); if( bn == NULL) throw(MAL,"compress",MAL_MALLOC_FAIL); /* zap the bitvector */ - o = (oid *) Tloc(bn,0); - memset(o, 0, sizeof(oid) * comp); + o = (bte *) Tloc(bn,0); + memset(o, 0, sizeof(bte) * comp); for( ; p < q; p++){ setbit(o, (*p -first)); fprintf(stderr,"# set value " BUNFMT" bit "BUNFMT"\n", *p, (*p -first)); @@ -73,7 +74,7 @@ BCLdecompress(Client cntxt, MalBlkPtr mb BAT *b, *bn; oid o = 0, *p; BUN i, limit; - char *vect; + bte *vect; (void) cntxt; (void) mb; @@ -84,7 +85,7 @@ BCLdecompress(Client cntxt, MalBlkPtr mb BBPkeepref(*ret = *val); return MAL_SUCCEED; } - vect = (char*) Tloc(b,0); + vect = (bte*) Tloc(b,0); fprintf(stderr,"#decompress %d base "OIDFMT","OIDFMT"\n", b->batCacheid, b->hseqbase,b->tseqbase); bn = COLnew(0, TYPE_oid, BATcount(b), TRANSIENT); diff --git a/monetdb5/modules/mal/bitcandidates.mal b/monetdb5/modules/mal/bitcandidates.mal --- a/monetdb5/modules/mal/bitcandidates.mal +++ b/monetdb5/modules/mal/bitcandidates.mal @@ -6,10 +6,10 @@ module candidates; -pattern compress(b:bat[:oid]):bat[:oid] +pattern compress(b:bat[:oid]):bat[:bte] address BCLcompress comment "Compress the bat into a bitvector"; -pattern decompress(b:bat[:oid]):bat[:oid] +pattern decompress(b:bat[:bte]):bat[:oid] address BCLdecompress comment "Compress the bat into a bitvector"; diff --git a/monetdb5/optimizer/opt_bitcandidates.c b/monetdb5/optimizer/opt_bitcandidates.c --- a/monetdb5/optimizer/opt_bitcandidates.c +++ b/monetdb5/optimizer/opt_bitcandidates.c @@ -68,7 +68,8 @@ OPTbitcandidatesImplementation(Client cn if ( isVarCList(mb, getArg(p,j)) ){ k = newTmpVariable(mb,getArgType(mb,p,j)); q= newFcnCall(mb,candidatesRef,compressRef); - setVarType(mb,getArg(q,0), getArgType(mb,p,j)); + //setVarType(mb,getArg(q,0), getArgType(mb,p,j)); + setVarType(mb,getArg(q,0), newBatType(TYPE_bte)); q= pushArgument(mb,q, k); alias[getArg(p,j)] = getArg(q,0); getArg(p,j) = k; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list