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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list