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

Reply via email to