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

Clean up raw 'compression' code.


diffs (truncated from 472 to 300 lines):

diff --git a/monetdb5/modules/mosaic/mosaic_raw.c 
b/monetdb5/modules/mosaic/mosaic_raw.c
--- a/monetdb5/modules/mosaic/mosaic_raw.c
+++ b/monetdb5/modules/mosaic/mosaic_raw.c
@@ -17,9 +17,9 @@
 #include "mosaic_private.h"
 
 bool MOStypes_raw(BAT* b) {
-       switch(ATOMbasetype(getBatType(b->ttype))){
+       switch(b->ttype){
+       case TYPE_bit: return true;
        case TYPE_bte: return true;
-       case TYPE_bit: return true;
        case TYPE_sht: return true;
        case TYPE_int: return true;
        case TYPE_lng: return true;
@@ -29,14 +29,10 @@ bool MOStypes_raw(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;
@@ -50,24 +46,17 @@ MOSlayout_raw(MOStask task, BAT *btech, 
 
                input = cnt * ATOMsize(task->type);
        switch(ATOMbasetype(task->type)){
-       case TYPE_bte: output = wordaligned( MosaicBlkSize + sizeof(bte)* 
MOSgetCnt(blk),bte); break ;
-       case TYPE_bit: output = wordaligned( MosaicBlkSize + sizeof(bit)* 
MOSgetCnt(blk),bit); break ;
-       case TYPE_sht: output = wordaligned( MosaicBlkSize + sizeof(sht)* 
MOSgetCnt(blk),sht); break ;
-       case TYPE_int: output = wordaligned( MosaicBlkSize + sizeof(int)* 
MOSgetCnt(blk),int); break ;
-       case TYPE_oid: output = wordaligned( MosaicBlkSize + sizeof(oid)* 
MOSgetCnt(blk),oid); break ;
-       case TYPE_lng: output = wordaligned( MosaicBlkSize + sizeof(lng)* 
MOSgetCnt(blk),lng); break ;
+       case TYPE_bit: output = wordaligned( MosaicBlkSize + sizeof(bit)* 
MOSgetCnt(blk),bit); break;
+       case TYPE_bte: output = wordaligned( MosaicBlkSize + sizeof(bte)* 
MOSgetCnt(blk),bte); break;
+       case TYPE_sht: output = wordaligned( MosaicBlkSize + sizeof(sht)* 
MOSgetCnt(blk),sht); break;
+       case TYPE_int: output = wordaligned( MosaicBlkSize + sizeof(int)* 
MOSgetCnt(blk),int); break;
+       case TYPE_oid: output = wordaligned( MosaicBlkSize + sizeof(oid)* 
MOSgetCnt(blk),oid); break;
+       case TYPE_lng: output = wordaligned( MosaicBlkSize + sizeof(lng)* 
MOSgetCnt(blk),lng); break;
+       case TYPE_flt: output = wordaligned( MosaicBlkSize + sizeof(flt)* 
MOSgetCnt(blk),flt); break;
+       case TYPE_dbl: output = wordaligned( MosaicBlkSize + sizeof(dbl)* 
MOSgetCnt(blk),dbl); break;
 #ifdef HAVE_HGE
-       case TYPE_hge: output = wordaligned( MosaicBlkSize + sizeof(hge)* 
MOSgetCnt(blk),hge); break ;
+       case TYPE_hge: output = wordaligned( MosaicBlkSize + sizeof(hge)* 
MOSgetCnt(blk),hge); break;
 #endif
-       case TYPE_flt: output = wordaligned( MosaicBlkSize + sizeof(flt)* 
MOSgetCnt(blk),flt); break ;
-       case TYPE_dbl: output = wordaligned( MosaicBlkSize + sizeof(dbl)* 
MOSgetCnt(blk),dbl); break;
-       case TYPE_str:
-               switch(task->bsrc->twidth){
-               case 1: output = wordaligned( MosaicBlkSize + sizeof(bte)* 
MOSgetCnt(blk),bte); break ;
-               case 2: output = wordaligned( MosaicBlkSize + sizeof(sht)* 
MOSgetCnt(blk),sht); break ;
-               case 4: output = wordaligned( MosaicBlkSize + sizeof(int)* 
MOSgetCnt(blk),int); break ;
-               case 8: output = wordaligned( MosaicBlkSize + sizeof(lng)* 
MOSgetCnt(blk),lng); break ;
-               }
        }
        if( BUNappend(btech, "raw blk", false) != GDK_SUCCEED ||
                BUNappend(bcount, &cnt, false) != GDK_SUCCEED ||
@@ -84,24 +73,17 @@ MOSadvance_raw(MOStask task)
 
        task->start += MOSgetCnt(blk);
        switch(ATOMbasetype(task->type)){
-       case TYPE_bte: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(bte)* MOSgetCnt(blk),bte)); break ;
-       case TYPE_bit: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(bit)* MOSgetCnt(blk),bit)); break ;
-       case TYPE_sht: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(sht)* MOSgetCnt(blk),sht)); break ;
-       case TYPE_int: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(int)* MOSgetCnt(blk),int)); break ;
-       case TYPE_oid: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(oid)* MOSgetCnt(blk),oid)); break ;
-       case TYPE_lng: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(lng)* MOSgetCnt(blk),lng)); break ;
+       case TYPE_bit: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(bit)* MOSgetCnt(blk),bit)); break;
+       case TYPE_bte: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(bte)* MOSgetCnt(blk),bte)); break;
+       case TYPE_sht: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(sht)* MOSgetCnt(blk),sht)); break;
+       case TYPE_int: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(int)* MOSgetCnt(blk),int)); break;
+       case TYPE_oid: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(oid)* MOSgetCnt(blk),oid)); break;
+       case TYPE_lng: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(lng)* MOSgetCnt(blk),lng)); break;
+       case TYPE_flt: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(flt)* MOSgetCnt(blk),flt)); break;
+       case TYPE_dbl: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(dbl)* MOSgetCnt(blk),dbl)); break;
 #ifdef HAVE_HGE
-       case TYPE_hge: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(hge)* MOSgetCnt(blk),hge)); break ;
+       case TYPE_hge: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(hge)* MOSgetCnt(blk),hge)); break;
 #endif
-       case TYPE_flt: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(flt)* MOSgetCnt(blk),flt)); break ;
-       case TYPE_dbl: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(dbl)* MOSgetCnt(blk),dbl)); break;
-       case TYPE_str:
-               switch(task->bsrc->twidth){
-               case 1: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(bte)* MOSgetCnt(blk),bte)); break ;
-               case 2: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(sht)* MOSgetCnt(blk),sht)); break ;
-               case 4: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(int)* MOSgetCnt(blk),int)); break ;
-               case 8: task->blk = (MosaicBlk)( ((char*) task->blk) + 
wordaligned( MosaicBlkSize + sizeof(lng)* MOSgetCnt(blk),lng)); break ;
-               }
        }
 }
 
@@ -133,9 +115,10 @@ MOScompress_raw(MOStask task)
                MOSsetTag(blk,MOSAIC_RAW);
 
        switch(ATOMbasetype(task->type)){
-       case TYPE_bte: RAWcompress(bte); break ;
-       case TYPE_bit: RAWcompress(bit); break ;
+       case TYPE_bit: RAWcompress(bit); break;
+       case TYPE_bte: RAWcompress(bte); break;
        case TYPE_sht: RAWcompress(sht); break;
+       case TYPE_int: RAWcompress(int); break;
        case TYPE_oid: RAWcompress(oid); break;
        case TYPE_lng: RAWcompress(lng); break;
        case TYPE_flt: RAWcompress(flt); break;
@@ -143,20 +126,6 @@ MOScompress_raw(MOStask task)
 #ifdef HAVE_HGE
        case TYPE_hge: RAWcompress(hge); break;
 #endif
-       case TYPE_int:
-       {       *(int*) task->dst = ((int*) task->src)[task->start];
-               hdr->checksum.sumint += *(int*) task->dst;
-               task->dst += sizeof(int);
-               MOSincCnt(blk,1);
-       }
-       break;
-       case TYPE_str:
-               switch(task->bsrc->twidth){
-               case 1: RAWcompress(bte); break ;
-               case 2: RAWcompress(sht); break ;
-               case 4: RAWcompress(int); break ;
-               case 8: RAWcompress(lng); break ;
-               }
        }
 }
 
@@ -180,9 +149,10 @@ MOSdecompress_raw(MOStask task)
 
        compressed = ((char*)blk) + MosaicBlkSize;
        switch(ATOMbasetype(task->type)){
-       case TYPE_bte: RAWdecompress(bte); break ;
-       case TYPE_bit: RAWdecompress(bit); break ;
+       case TYPE_bit: RAWdecompress(bit); break;
+       case TYPE_bte: RAWdecompress(bte); break;
        case TYPE_sht: RAWdecompress(sht); break;
+       case TYPE_int: RAWdecompress(int); break;
        case TYPE_oid: RAWdecompress(oid); break;
        case TYPE_lng: RAWdecompress(lng); break;
        case TYPE_flt: RAWdecompress(flt); break;
@@ -190,22 +160,6 @@ MOSdecompress_raw(MOStask task)
 #ifdef HAVE_HGE
        case TYPE_hge: RAWdecompress(hge); break;
 #endif
-       case TYPE_int:
-       { BUN lim = MOSgetCnt(blk);     
-               for(i = 0; i < lim; i++) {
-                       ((int*)task->src)[i] = ((int*)compressed)[i];
-                       hdr->checksum2.sumint += ((int*)compressed)[i]; \
-               }
-               task->src += i * sizeof(int);
-       }
-       break;
-       case TYPE_str:
-               switch(task->bsrc->twidth){
-               case 1: RAWdecompress(bte); break ;
-               case 2: RAWdecompress(sht); break ;
-               case 4: RAWdecompress(int); break ;
-               case 8: RAWdecompress(lng); break ;
-               }
        }
 }
 
@@ -294,10 +248,11 @@ MOSselect_raw( MOStask task, void *low, 
        }
        o = task->lb;
 
-       switch(task->type){
+       switch(ATOMbasetype(task->type)){
        case TYPE_bit: select_raw(bit); break;
        case TYPE_bte: select_raw(bte); break;
        case TYPE_sht: select_raw(sht); break;
+       case TYPE_int: select_raw(int); break;
        case TYPE_oid: select_raw(oid); break;
        case TYPE_lng: select_raw(lng); break;
        case TYPE_flt: select_raw(flt); break;
@@ -305,153 +260,6 @@ MOSselect_raw( MOStask task, void *low, 
 #ifdef HAVE_HGE
        case TYPE_hge: select_raw(hge); break;
 #endif
-       case TYPE_int:
-       // Expanded MOSselect_raw for debugging
-               {       int *val= (int*) (((char*) task->blk) + MosaicBlkSize);
-
-                       if( !*anti){
-                               if( *(int*) low == int_nil && *(int*) hgh == 
int_nil){
-                                       for( ; first < last; first++, val++){
-                                               MOSskipit();
-                                               *o++ = (oid) first;
-                                       }
-                               } else
-                               if( *(int*) low == int_nil ){
-                                       for( ; first < last; first++, val++){
-                                               MOSskipit();
-                                               cmp  =  ((*hi && *(int*)val <= 
* (int*)hgh ) || (!*hi && *(int*)val < *(int*)hgh ));
-                                               if (cmp )
-                                                       *o++ = (oid) first;
-                                       }
-                               } else
-                               if( *(int*) hgh == int_nil ){
-                                       for( ; first < last; first++, val++){
-                                               MOSskipit();
-                                               cmp  =  ((*li && *(int*)val >= 
* (int*)low ) || (!*li && *(int*)val > *(int*)low ));
-                                               if (cmp )
-                                                       *o++ = (oid) first;
-                                       }
-                               } else{
-                                       for( ; first < last; first++, val++){
-                                               MOSskipit();
-                                               cmp  =  ((*hi && *(int*)val <= 
* (int*)hgh ) || (!*hi && *(int*)val < *(int*)hgh )) &&
-                                                               ((*li && 
*(int*)val >= * (int*)low ) || (!*li && *(int*)val > *(int*)low ));
-                                               if (cmp )
-                                                       *o++ = (oid) first;
-                                       }
-                               }
-                       } else {
-                               if( *(int*) low == int_nil && *(int*) hgh == 
int_nil){
-                                       /* nothing is matching */
-                               } else
-                               if( *(int*) low == int_nil ){
-                                       for( ; first < last; first++, val++){
-                                               MOSskipit();
-                                               cmp  =  ((*hi && *(int*)val <= 
* (int*)hgh ) || (!*hi && *(int*)val < *(int*)hgh ));
-                                               if ( !cmp )
-                                                       *o++ = (oid) first;
-                                       }
-                               } else
-                               if( *(int*) hgh == int_nil ){
-                                       for( ; first < last; first++, val++){
-                                               MOSskipit();
-                                               cmp  =  ((*li && *(int*)val >= 
* (int*)low ) || (!*li && *(int*)val > *(int*)low ));
-                                               if ( !cmp )
-                                                       *o++ = (oid) first;
-                                       }
-                               } else{
-                                       for( ; first < last; first++, val++){
-                                               MOSskipit();
-                                               cmp  =  ((*hi && *(int*)val <= 
* (int*)hgh ) || (!*hi && *(int*)val < *(int*)hgh )) &&
-                                                               ((*li && 
*(int*)val >= * (int*)low ) || (!*li && *(int*)val > *(int*)low ));
-                                               if ( !cmp )
-                                                       *o++ = (oid) first;
-                                       }
-                               }
-                       }
-               }
-                       break;
-       case TYPE_str:
-               // beware we should look at the value
-               switch(task->bsrc->twidth){
-               case 1: break ;
-               case 2: break ;
-               case 4: break ;
-               case 8: break ;
-       }
-       default: {
-               if( task->type == TYPE_date)
-                       select_raw(date); 
-               if( task->type == TYPE_daytime)
-                       select_raw(daytime); 
-               
-               if( task->type == TYPE_timestamp)
-                       {       lng *val= (lng*) (((char*) task->blk) + 
MosaicBlkSize);
-                               int lownil = is_timestamp_nil(*(timestamp*)low);
-                               int hghnil = is_timestamp_nil(*(timestamp*)hgh);
-
-                               if( !*anti){
-                                       if( lownil && hghnil){
-                                               for( ; first < last; first++, 
val++){
-                                                       MOSskipit();
-                                                       *o++ = (oid) first;
-                                               }
-                                       } else
-                                       if( lownil){
-                                               for( ; first < last; first++, 
val++){
-                                                       MOSskipit();
-                                                       cmp  =  ((*hi && 
*(lng*)val <= * (lng*)hgh ) || (!*hi && *(lng*)val < *(lng*)hgh ));
-                                                       if (cmp )
-                                                               *o++ = (oid) 
first;
-                                               }
-                                       } else
-                                       if( hghnil){
-                                               for( ; first < last; first++, 
val++){
-                                                       MOSskipit();
-                                                       cmp  =  ((*li && 
*(lng*)val >= * (lng*)low ) || (!*li && *(lng*)val > *(lng*)low ));
-                                                       if (cmp )
-                                                               *o++ = (oid) 
first;
-                                               }
-                                       } else{
-                                               for( ; first < last; first++, 
val++){
-                                                       MOSskipit();
-                                                       cmp  =  ((*hi && 
*(lng*)val <= * (lng*)hgh ) || (!*hi && *(lng*)val < *(lng*)hgh )) &&
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to