Changeset: 93780b9a9c94 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=93780b9a9c94
Modified Files:
        monetdb5/modules/mosaic/mosaic_dictionary.c
Branch: mosaic
Log Message:

Simplify dictionary compression code.


diffs (194 lines):

diff --git a/monetdb5/modules/mosaic/mosaic_dictionary.c 
b/monetdb5/modules/mosaic/mosaic_dictionary.c
--- a/monetdb5/modules/mosaic/mosaic_dictionary.c
+++ b/monetdb5/modules/mosaic/mosaic_dictionary.c
@@ -25,7 +25,7 @@
 #include "mosaic_private.h"
 
 bool MOStypes_dictionary(BAT* b) {
-       switch(ATOMbasetype(getBatType(b->ttype))){
+       switch (b->ttype){
        case TYPE_bte: return true;
        case TYPE_sht: return true;
        case TYPE_int: return true;
@@ -36,14 +36,10 @@ bool MOStypes_dictionary(BAT* b) {
 #ifdef HAVE_HGE
        case TYPE_hge: return true;
 #endif
-       case  TYPE_str:
-               switch(b->twidth){
-               case 1: return true;
-               case 2: return true;
-               case 4: return true;
-               case 8: return true;
-               }
-               break;
+       default:
+               if (b->ttype == TYPE_date) {return true;} // Will be mapped to 
int
+               if (b->ttype == TYPE_daytime) {return true;} // Will be mapped 
to lng
+               if (b->ttype == TYPE_timestamp) {return true;} // Will be 
mapped to lng
        }
 
        return false;
@@ -247,14 +243,6 @@ MOScreatedictionary(MOStask task)
 #ifdef HAVE_HGE
        case TYPE_hge: makeDict(hge); break;
 #endif
-       case TYPE_str:
-               switch(task->bsrc->twidth){
-               case 1: makeDict(bte); break;
-               case 2: makeDict(sht); break;
-               case 4: makeDict(int); break;
-               case 8: makeDict(lng); break;
-               }
-               break;
        }
        /* calculate the bit-width */
        hdr->bits = 1;
@@ -285,36 +273,6 @@ MOSestimate_dictionary(MOStask task)
 #ifdef HAVE_HGE
        case TYPE_hge: estimateDict(hge); break;
 #endif
-       case TYPE_str:
-               switch(task->bsrc->twidth){
-               case 1: //estimateDict(bte); break;
-{      bte *val = ((bte*)task->src) + task->start;\
-       BUN limit = task->stop - task->start > MOSAICMAXCNT? MOSAICMAXCNT: 
task->stop - task->start;\
-       if( task->range[MOSAIC_DICT] > task->start){\
-               i = task->range[MOSAIC_DICT] - task->start;\
-               if ( i > MOSAICMAXCNT ) i = MOSAICMAXCNT;\
-               if( i * sizeof(bte) <= wordaligned( MosaicBlkSize + i,bte))\
-                       return 0.0;\
-               if( task->dst +  wordaligned(MosaicBlkSize + i,sizeof(bte)) >= 
task->bsrc->tmosaic->base + task->bsrc->tmosaic->size)\
-                       return 0.0;\
-               if(i) factor = (flt) ((int)i * sizeof(bte)) / wordaligned( 
MosaicBlkSize + (i*hdr->bits)/8,bte);
-               return factor;\
-       }\
-       for(i =0; i<limit; i++, val++){\
-               MOSfind(j,hdr->dict.valbte,*val,0,hdr->dictsize);\
-               if( j == hdr->dictsize || hdr->dict.valbte[j] != *val )\
-                       break;\
-       }\
-       if( i * sizeof(bte) <= wordaligned( MosaicBlkSize + (i * 
hdr->bits)/8,bte))\
-               return 0.0;\
-       if(i) factor = (flt) ((int) i * sizeof(bte)) / wordaligned( 
MosaicBlkSize + (i*hdr->bits)/8,bte);\
-}
-break;
-               case 2: estimateDict(sht); break;
-               case 4: estimateDict(int); break;
-               case 8: estimateDict(lng); break;
-               }
-               break;
        }
        task->factor[MOSAIC_DICT] = factor;
        task->range[MOSAIC_DICT] = task->start + i;
@@ -366,14 +324,6 @@ MOScompress_dictionary(MOStask task)
 #ifdef HAVE_HGE
        case TYPE_hge: DICTcompress(hge); break;
 #endif
-       case TYPE_str:
-               switch(task->bsrc->twidth){
-               case 1: DICTcompress(bte); break;
-               case 2: DICTcompress(sht); break;
-               case 4: DICTcompress(int); break;
-               case 8: DICTcompress(lng); break;
-               }
-               break;
        }
 }
 
@@ -410,14 +360,6 @@ MOSdecompress_dictionary(MOStask task)
 #ifdef HAVE_HGE
        case TYPE_hge: DICTdecompress(hge); break;
 #endif
-       case TYPE_str:
-               switch(task->bsrc->twidth){
-               case 1: DICTdecompress(bte); break;
-               case 2: DICTdecompress(sht); break;
-               case 4: DICTdecompress(int); break;
-               case 8: DICTdecompress(lng); break;
-               }
-               break;
        }
 }
 
@@ -536,14 +478,6 @@ MOSselect_dictionary(MOStask task, void 
 #ifdef HAVE_HGE
        case TYPE_hge: select_dictionary(hge); break;
 #endif
-       case TYPE_str:
-               switch(task->bsrc->twidth){
-               case 1: select_dictionary_str(bte); break;
-               case 2: select_dictionary_str(sht); break;
-               case 4: select_dictionary_str(int); break;
-               case 8: select_dictionary_str(lng); break;
-               }
-               break;
        }
        MOSskip_dictionary(task);
        task->lb = o;
@@ -623,14 +557,6 @@ MOSthetaselect_dictionary( MOStask task,
 #ifdef HAVE_HGE
        case TYPE_hge: thetaselect_dictionary(hge); break;
 #endif
-       case TYPE_str:
-               switch(task->bsrc->twidth){
-               case 1: thetaselect_dictionary_str(bte); break;
-               case 2: thetaselect_dictionary_str(sht); break;
-               case 4: thetaselect_dictionary_str(int); break;
-               case 8: thetaselect_dictionary_str(lng); break;
-               }
-               break;
        }
        MOSskip_dictionary(task);
        task->lb =o;
@@ -666,6 +592,7 @@ MOSprojection_dictionary( MOStask task)
        switch(ATOMbasetype(task->type)){
                case TYPE_bte: projection_dictionary(bte); break;
                case TYPE_sht: projection_dictionary(sht); break;
+               case TYPE_int: projection_dictionary(int); break;
                case TYPE_lng: projection_dictionary(lng); break;
                case TYPE_oid: projection_dictionary(oid); break;
                case TYPE_flt: projection_dictionary(flt); break;
@@ -673,27 +600,6 @@ MOSprojection_dictionary( MOStask task)
 #ifdef HAVE_HGE
                case TYPE_hge: projection_dictionary(hge); break;
 #endif
-               case TYPE_int:
-               {       int *v;
-                       base  = (BitVector) (((char*) task->blk) + 
MosaicBlkSize);
-                       v= (int*) task->src;
-                       for(i=0 ; first < last; first++, i++){
-                               MOSskipit();
-                               j= getBitVector(base,i,(int) hdr->bits); \
-                               *v++ = task->hdr->dict.valint[j];
-                               task->cnt++;
-                       }
-                       task->src = (char*) v;
-               }
-               break;
-       case TYPE_str:
-               switch(task->bsrc->twidth){
-               case 1: projection_dictionary_str(bte); break;
-               case 2: projection_dictionary_str(sht); break;
-               case 4: projection_dictionary_str(int); break;
-               case 8: projection_dictionary_str(lng); break;
-               }
-               break;
        }
        MOSskip_dictionary(task);
        return MAL_SUCCEED;
@@ -739,14 +645,6 @@ MOSjoin_dictionary( MOStask task)
 #ifdef HAVE_HGE
                case TYPE_hge: join_dictionary(hge); break;
 #endif
-               case TYPE_str:
-                       switch(task->bsrc->twidth){
-                       case 1: join_dictionary_str(bte); break;
-                       case 2: join_dictionary_str(sht); break;
-                       case 4: join_dictionary_str(int); break;
-                       case 8: join_dictionary_str(lng); break;
-                       }
-                       break;
        }
        MOSskip_dictionary(task);
        return MAL_SUCCEED;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to