Changeset: 6318f19842c0 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6318f19842c0
Modified Files:
monetdb5/modules/mal/mosaic_delta.c
monetdb5/modules/mal/mosaic_dictionary.c
monetdb5/modules/mal/mosaic_linear.c
monetdb5/modules/mal/mosaic_literal.c
monetdb5/modules/mal/mosaic_runlength.c
monetdb5/modules/mal/mosaic_variance.c
monetdb5/modules/mal/mosaic_zone.c
Branch: mosaic
Log Message:
Cleanup of some code. No major change
diffs (truncated from 1429 to 300 lines):
diff --git a/monetdb5/modules/mal/mosaic_delta.c
b/monetdb5/modules/mal/mosaic_delta.c
--- a/monetdb5/modules/mal/mosaic_delta.c
+++ b/monetdb5/modules/mal/mosaic_delta.c
@@ -34,11 +34,13 @@ MOSadvance_delta(Client cntxt, MOStask t
task->start += MOSgetCnt(blk);
switch(task->type){
+ //case TYPE_bte: case TYPE_bit: no compression achievable
case TYPE_sht: task->blk = (MosaicBlk)( ((char*) blk) + MosaicBlkSize +
wordaligned(sizeof(sht) + MOSgetCnt(blk)-1,sht)); break ;
case TYPE_int: task->blk = (MosaicBlk)( ((char*) blk) + MosaicBlkSize +
wordaligned(sizeof(int) + MOSgetCnt(blk)-1,int)); break ;
case TYPE_oid: task->blk = (MosaicBlk)( ((char*) blk) + MosaicBlkSize +
wordaligned(sizeof(oid) + MOSgetCnt(blk)-1,oid)); break ;
case TYPE_wrd: task->blk = (MosaicBlk)( ((char*) blk) + MosaicBlkSize +
wordaligned(sizeof(wrd) + MOSgetCnt(blk)-1,wrd)); break ;
case TYPE_lng: task->blk = (MosaicBlk)( ((char*) blk) + MosaicBlkSize +
wordaligned(sizeof(lng) + MOSgetCnt(blk)-1,lng)); break ;
+ //case TYPE_flt: case TYPE_dbl: to be looked into.
#ifdef HAVE_HGE
case TYPE_hge: task->blk = (MosaicBlk)( ((char*) blk) + MosaicBlkSize +
wordaligned(sizeof(hge) + MOSgetCnt(blk)-1,hge)); break ;
#endif
@@ -108,6 +110,8 @@ MOSestimate_delta(Client cntxt, MOStask
}
factor = ((float) i * sizeof(int))/ (MosaicBlkSize +
sizeof(int)+(bte)i-1);
}
+ break;
+ //case TYPE_flt: case TYPE_dbl: to be looked into.
}
#ifdef _DEBUG_MOSAIC_
mnstr_printf(cntxt->fdout,"#estimate delta "BUNFMT" elm %.3f
factor\n",i,factor);
@@ -115,7 +119,7 @@ MOSestimate_delta(Client cntxt, MOStask
return factor;
}
-#define DELTAcompress(TYPE)\
+#define DELTAcompress(TYPE,EXPR)\
{ TYPE *w = (TYPE*)task->src, val= *w, delta;\
BUN limit = task->elm > MOSlimit()? MOSlimit():task->elm;\
task->dst = ((char*) task->blk) + MosaicBlkSize;\
@@ -123,7 +127,7 @@ MOSestimate_delta(Client cntxt, MOStask
task->dst += sizeof(TYPE);\
for(w++,i =1; i<limit; i++,w++){\
delta = *w -val;\
- if ( delta < -127 || delta >127)\
+ if ( EXPR )\
break;\
*(bte*)task->dst++ = (bte) delta;\
val = *w;\
@@ -144,35 +148,19 @@ MOScompress_delta(Client cntxt, MOStask
switch(ATOMstorage(task->type)){
//case TYPE_bte: case TYPE_bit: no compression achievable
- case TYPE_sht: DELTAcompress(sht); break;
- case TYPE_wrd: DELTAcompress(wrd); break;
- case TYPE_int: DELTAcompress(int); break;
+ case TYPE_sht: DELTAcompress(sht,(delta < -127 || delta >127)); break;
+ case TYPE_lng: DELTAcompress(lng,(delta < -127 || delta >127)); break;
+ case TYPE_oid: DELTAcompress(hge,(delta < 256)); break;
+ case TYPE_wrd: DELTAcompress(wrd,(delta < -127 || delta >127)); break;
#ifdef HAVE_HGE
- case TYPE_hge: DELTAcompress(hge); break;
+ case TYPE_hge: DELTAcompress(hge,(delta < -127 || delta >127)); break;
#endif
- case TYPE_oid:
- { oid *w = (oid*)task->src, val= *w, delta;
+ case TYPE_int:
+ { int *w = (int*)task->src, val= *w, delta;
BUN limit = task->elm > MOSlimit()?
MOSlimit():task->elm;
task->dst = ((char*) task->blk) + MosaicBlkSize;
- *(oid*)task->dst = val;
- task->dst += sizeof(oid);
- for(w++,i =1; i<limit; i++,w++){
- delta = *w -val;
- if ( delta < 256)
- break;
- *(bte*)task->dst++ = (bte) delta;
- val = *w;
- }
- task->src += i * sizeof(oid);
- MOSincCnt(blk,i);
- }
- break;
- case TYPE_lng:
- { lng *w = (lng*)task->src, val= *w, delta;
- BUN limit = task->elm > MOSlimit()?
MOSlimit():task->elm;
- task->dst = ((char*) task->blk) + MosaicBlkSize;
- *(lng*)task->dst = val;
- task->dst += sizeof(lng);
+ *(int*)task->dst = val;
+ task->dst += sizeof(int);
for(w++,i =1; i<limit; i++,w++){
delta = *w -val;
if ( delta < -127 || delta >127)
@@ -180,9 +168,11 @@ MOScompress_delta(Client cntxt, MOStask
*(bte*)task->dst++ = (bte) delta;
val = *w;
}
- task->src += i * sizeof(lng);
+ task->src += i * sizeof(int);
MOSincCnt(blk,i);
}
+ break;
+ //case TYPE_flt: case TYPE_dbl: to be looked into.
}
#ifdef _DEBUG_MOSAIC_
MOSdump_delta(cntxt, task);
@@ -213,23 +203,23 @@ MOSdecompress_delta(Client cntxt, MOStas
switch(ATOMstorage(task->type)){
//case TYPE_bte: case TYPE_bit: no compression achievable
case TYPE_sht: DELTAdecompress(sht); break;
+ case TYPE_lng: DELTAdecompress(lng); break;
case TYPE_oid: DELTAdecompress(oid); break;
case TYPE_wrd: DELTAdecompress(wrd); break;
- case TYPE_int: DELTAdecompress(int); break;
#ifdef HAVE_HGE
case TYPE_hge: DELTAdecompress(hge); break;
#endif
- case TYPE_lng:
- { lng val;
+ case TYPE_int:
+ { int val;
BUN lim = MOSgetCnt(blk);
task->dst = ((char*) task->blk) + MosaicBlkSize;
- val = *(lng*)task->dst ;
- task->dst += sizeof(lng);
+ val = *(int*)task->dst ;
+ task->dst += sizeof(int);
for(i = 0; i < lim; i++) {
- ((lng*)task->src)[i] = val;
+ ((int*)task->src)[i] = val;
val += *(bte*) task->dst++;
}
- task->src += i * sizeof(lng);
+ task->src += i * sizeof(int);
}
}
}
@@ -322,17 +312,13 @@ MOSsubselect_delta(Client cntxt, MOStas
o = task->lb;
switch(task->type){
- case TYPE_bit: subselect_delta(bit); break;
- case TYPE_bte: subselect_delta(bte); break;
case TYPE_sht: subselect_delta(sht); break;
+ case TYPE_lng: subselect_delta(lng); break;
case TYPE_oid: subselect_delta(oid); break;
case TYPE_wrd: subselect_delta(wrd); break;
- case TYPE_lng: subselect_delta(lng); break;
#ifdef HAVE_HGE
case TYPE_hge: subselect_delta(hge); break;
#endif
- case TYPE_flt: subselect_delta(flt); break;
- case TYPE_dbl: subselect_delta(dbl); break;
case TYPE_int:
// Expanded MOSselect_delta for debugging
{ int val= *(int*) (((char*) task->blk) + MosaicBlkSize);
@@ -536,17 +522,13 @@ MOSthetasubselect_delta(Client cntxt, M
o = task->lb;
switch(task->type){
- case TYPE_bit: thetasubselect_delta(bit); break;
- case TYPE_bte: thetasubselect_delta(bte); break;
case TYPE_sht: thetasubselect_delta(sht); break;
+ case TYPE_lng: thetasubselect_delta(lng); break;
case TYPE_oid: thetasubselect_delta(oid); break;
- case TYPE_lng: thetasubselect_delta(lng); break;
+ case TYPE_wrd: thetasubselect_delta(wrd); break;
#ifdef HAVE_HGE
case TYPE_hge: thetasubselect_delta(hge); break;
#endif
- case TYPE_wrd: thetasubselect_delta(wrd); break;
- case TYPE_flt: thetasubselect_delta(flt); break;
- case TYPE_dbl: thetasubselect_delta(dbl); break;
case TYPE_int:
{ int low,hgh, v;
low= hgh = int_nil;
@@ -623,17 +605,13 @@ MOSleftfetchjoin_delta(Client cntxt, MO
last = first + MOSgetCnt(task->blk);
switch(task->type){
- case TYPE_bit: leftfetchjoin_delta(bit); break;
- case TYPE_bte: leftfetchjoin_delta(bte); break;
case TYPE_sht: leftfetchjoin_delta(sht); break;
+ case TYPE_lng: leftfetchjoin_delta(lng); break;
case TYPE_oid: leftfetchjoin_delta(oid); break;
- case TYPE_lng: leftfetchjoin_delta(lng); break;
+ case TYPE_wrd: leftfetchjoin_delta(wrd); break;
#ifdef HAVE_HGE
case TYPE_hge: leftfetchjoin_delta(hge); break;
#endif
- case TYPE_wrd: leftfetchjoin_delta(wrd); break;
- case TYPE_flt: leftfetchjoin_delta(flt); break;
- case TYPE_dbl: leftfetchjoin_delta(dbl); break;
case TYPE_int:
{ int *val, *v;
v= (int*) task->src;
@@ -683,17 +661,13 @@ MOSjoin_delta(Client cntxt, MOStask tas
last = first + MOSgetCnt(task->blk);
switch(task->type){
- case TYPE_bit: join_delta(bit); break;
- case TYPE_bte: join_delta(bte); break;
case TYPE_sht: join_delta(sht); break;
+ case TYPE_lng: join_delta(lng); break;
case TYPE_oid: join_delta(oid); break;
- case TYPE_lng: join_delta(lng); break;
+ case TYPE_wrd: join_delta(wrd); break;
#ifdef HAVE_HGE
case TYPE_hge: join_delta(hge); break;
#endif
- case TYPE_wrd: join_delta(wrd); break;
- case TYPE_flt: join_delta(flt); break;
- case TYPE_dbl: join_delta(dbl); break;
case TYPE_int:
{ int *w,base;
bte *v;
diff --git a/monetdb5/modules/mal/mosaic_dictionary.c
b/monetdb5/modules/mal/mosaic_dictionary.c
--- a/monetdb5/modules/mal/mosaic_dictionary.c
+++ b/monetdb5/modules/mal/mosaic_dictionary.c
@@ -40,14 +40,17 @@ MOSadvance_dictionary(Client cntxt, MOSt
task->start += MOSgetCnt(task->blk);
switch(task->type){
+ //case TYPE_bte: CASE_bit: no compression achievable
case TYPE_sht: task->blk = (MosaicBlk)( ((char*)task->blk) + 2*
MosaicBlkSize + dictsize * sizeof(sht)+ wordaligned(sizeof(bte) *
MOSgetCnt(task->blk),sht)); break;
case TYPE_int: task->blk = (MosaicBlk)( ((char*)task->blk) + 2*
MosaicBlkSize + dictsize * sizeof(int)+ wordaligned(sizeof(bte) *
MOSgetCnt(task->blk),int)); break;
+ case TYPE_lng: task->blk = (MosaicBlk)( ((char*)task->blk) + 2*
MosaicBlkSize + dictsize * sizeof(lng)+ wordaligned(sizeof(bte) *
MOSgetCnt(task->blk),lng)); break;
case TYPE_oid: task->blk = (MosaicBlk)( ((char*)task->blk) + 2*
MosaicBlkSize + dictsize * sizeof(oid)+ wordaligned(sizeof(bte) *
MOSgetCnt(task->blk),oid)); break;
- case TYPE_lng: task->blk = (MosaicBlk)( ((char*)task->blk) + 2*
MosaicBlkSize + dictsize * sizeof(lng)+ wordaligned(sizeof(bte) *
MOSgetCnt(task->blk),lng)); break;
+ case TYPE_wrd: task->blk = (MosaicBlk)( ((char*)task->blk) + 2*
MosaicBlkSize + dictsize * sizeof(wrd)+ wordaligned(sizeof(bte) *
MOSgetCnt(task->blk),wrd)); break;
+ case TYPE_flt: task->blk = (MosaicBlk)( ((char*)task->blk) + 2*
MosaicBlkSize + dictsize * sizeof(flt)+ wordaligned(sizeof(bte) *
MOSgetCnt(task->blk),flt)); break;
+ case TYPE_dbl: task->blk = (MosaicBlk)( ((char*)task->blk) + 2*
MosaicBlkSize + dictsize * sizeof(dbl)+ wordaligned(sizeof(bte) *
MOSgetCnt(task->blk),dbl)); break;
#ifdef HAVE_HGE
case TYPE_hge: task->blk = (MosaicBlk)( ((char*)task->blk) + 2*
MosaicBlkSize + dictsize * sizeof(hge)+ wordaligned(sizeof(bte) *
MOSgetCnt(task->blk),hge)); break;
#endif
- case TYPE_wrd: task->blk = (MosaicBlk)( ((char*)task->blk) + 2*
MosaicBlkSize + dictsize * sizeof(wrd)+ wordaligned(sizeof(bte) *
MOSgetCnt(task->blk),wrd)); break;
default:
if( task->type == TYPE_timestamp)
task->blk = (MosaicBlk)( ((char*)task->blk) +
2* MosaicBlkSize + dictsize * sizeof(timestamp)+ wordaligned(sizeof(bte) *
MOSgetCnt(task->blk),timestamp));
@@ -90,6 +93,12 @@ MOSdump_dictionary(Client cntxt, MOStask
case TYPE_wrd:
for(i=0; i< *size; i++)
mnstr_printf(cntxt->fdout,"wrd [%d] "SZFMT, i, ((wrd*)
val)[i]); break;
+ case TYPE_flt:
+ for(i=0; i< *size; i++)
+ mnstr_printf(cntxt->fdout,"flt [%d] %f",i, ((flt*) val)[i]);
break;
+ case TYPE_dbl:
+ for(i=0; i< *size; i++)
+ mnstr_printf(cntxt->fdout,"dbl [%d] %g",i, ((dbl*) val)[i]);
break;
default:
if( task->type == TYPE_date){
}
@@ -140,13 +149,16 @@ MOSestimate_dictionary(Client cntxt, MOS
size = (lng*) (((char*)task->dst) + MosaicBlkSize);
*size = 0;
switch(ATOMstorage(task->type)){
+ //case TYPE_bte: CASE_bit: no compression achievable
case TYPE_sht: estimateDict(sht); break;
+ case TYPE_lng: estimateDict(lng); break;
case TYPE_oid: estimateDict(oid); break;
- case TYPE_lng: estimateDict(lng); break;
+ case TYPE_wrd: estimateDict(wrd); break;
+ case TYPE_flt: estimateDict(flt); break;
+ case TYPE_dbl: estimateDict(dbl); break;
#ifdef HAVE_HGE
case TYPE_hge: estimateDict(hge); break;
#endif
- case TYPE_wrd: estimateDict(wrd); break;
case TYPE_int:
{ int val = *(int*)task->src;
int *dict = (int*)((char*)task->dst + 2 *
MosaicBlkSize);
@@ -212,10 +224,13 @@ MOScompress_dictionary(Client cntxt, MOS
MOSsetTag(blk,MOSAIC_DICT);
switch(ATOMstorage(task->type)){
+ //case TYPE_bte: CASE_bit: no compression achievable
case TYPE_sht: DICTcompress(sht); break;
case TYPE_int: DICTcompress(int); break;
case TYPE_oid: DICTcompress(oid); break;
case TYPE_wrd: DICTcompress(wrd); break;
+ case TYPE_flt: DICTcompress(flt); break;
+ case TYPE_dbl: DICTcompress(dbl); break;
#ifdef HAVE_HGE
case TYPE_hge: DICTcompress(hge); break;
#endif
@@ -245,7 +260,6 @@ MOScompress_dictionary(Client cntxt, MOS
}
task->src = (char*) val;
}
- break;
}
#ifdef _DEBUG_MOSAIC_
MOSdump_dictionary(cntxt, task);
@@ -271,13 +285,17 @@ MOSdecompress_dictionary(Client cntxt, M
(void) cntxt;
compressed = (char*) blk + 2 * MosaicBlkSize;
- switch(task->type){
+ switch(ATOMstorage(task->type)){
+ //case TYPE_bte: CASE_bit: no compression achievable
case TYPE_sht: DICTdecompress(sht); break;
+ case TYPE_lng: DICTdecompress(lng); break;
case TYPE_oid: DICTdecompress(oid); break;
+ case TYPE_wrd: DICTdecompress(wrd); break;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list