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

Add time-like types to frame compression.


diffs (171 lines):

diff --git a/monetdb5/modules/mosaic/mosaic_frame.c 
b/monetdb5/modules/mosaic/mosaic_frame.c
--- a/monetdb5/modules/mosaic/mosaic_frame.c
+++ b/monetdb5/modules/mosaic/mosaic_frame.c
@@ -28,7 +28,7 @@
 #include <stdint.h>
 
 bool MOStypes_frame(BAT* b) {
-       switch(ATOMbasetype(getBatType(b->ttype))){
+       switch (b->ttype){
        case TYPE_sht: return true;
        case TYPE_int: return true;
        case TYPE_lng: return true;
@@ -36,6 +36,11 @@ bool MOStypes_frame(BAT* b) {
 #ifdef HAVE_HGE
        case TYPE_hge: return true;
 #endif
+       default: {
+               if (b->ttype == TYPE_date) {return true;}
+               if (b->ttype == TYPE_daytime) {return true;}
+               if (b->ttype == TYPE_timestamp) {return true;}
+       }
        }
 
        return false;
@@ -198,7 +203,7 @@ do {\
 flt
 MOSestimate_frame(MOStask task) {
 
-       switch(ATOMbasetype(task->type)){
+       switch(task->type){
        case TYPE_bte: estimateFrame(task, bte, ulng, 
GET_DELTA_FOR_SIGNED_TYPE); break;
        case TYPE_sht: estimateFrame(task, sht, ulng, 
GET_DELTA_FOR_SIGNED_TYPE); break;
        case TYPE_int: estimateFrame(task, int, ulng, 
GET_DELTA_FOR_SIGNED_TYPE); break;
@@ -207,6 +212,11 @@ MOSestimate_frame(MOStask task) {
 #ifdef HAVE_HGE
        case TYPE_hge: estimateFrame(task, hge, uhge, 
GET_DELTA_FOR_SIGNED_TYPE); break;
 #endif
+       default: {
+               if (task->type == TYPE_date) {estimateFrame(task, int, ulng, 
GET_DELTA_FOR_SIGNED_TYPE); break;}
+               if (task->type == TYPE_daytime) {estimateFrame(task, lng, ulng, 
GET_DELTA_FOR_SIGNED_TYPE); break;}
+               if (task->type == TYPE_timestamp) {estimateFrame(task, lng, 
ulng, GET_DELTA_FOR_SIGNED_TYPE); break;}
+       }
        }
 
        return task->factor[MOSAIC_FRAME];
@@ -239,7 +249,7 @@ MOScompress_frame(MOStask task)
        MOSsetTag(blk,MOSAIC_FRAME);
        MOSsetCnt(blk, 0);
 
-       switch(ATOMbasetype(task->type)){
+       switch(task->type){
        case TYPE_bte: FRAMEcompress(task, bte, ulng, 
GET_DELTA_FOR_SIGNED_TYPE); break;
        case TYPE_sht: FRAMEcompress(task, sht, ulng, 
GET_DELTA_FOR_SIGNED_TYPE); break;
        case TYPE_int: FRAMEcompress(task, int, ulng, 
GET_DELTA_FOR_SIGNED_TYPE); break;
@@ -248,6 +258,11 @@ MOScompress_frame(MOStask task)
 #ifdef HAVE_HGE
        case TYPE_hge: FRAMEcompress(task, hge, uhge, 
GET_DELTA_FOR_SIGNED_TYPE); break;
 #endif
+       default: {
+               if (task->type == TYPE_date) {FRAMEcompress(task, int, ulng, 
GET_DELTA_FOR_SIGNED_TYPE); break;}
+               if (task->type == TYPE_daytime) {FRAMEcompress(task, lng, ulng, 
GET_DELTA_FOR_SIGNED_TYPE); break;}
+               if (task->type == TYPE_timestamp) {FRAMEcompress(task, lng, 
ulng, GET_DELTA_FOR_SIGNED_TYPE); break;}
+       }
        }
 }
 
@@ -273,7 +288,7 @@ do {\
 void
 MOSdecompress_frame(MOStask task)
 {
-       switch(ATOMbasetype(task->type)){
+       switch(task->type){
        case TYPE_bte: FRAMEdecompress(task, bte); break;
        case TYPE_sht: FRAMEdecompress(task, sht); break;
        case TYPE_int: FRAMEdecompress(task, int); break;
@@ -282,6 +297,11 @@ MOSdecompress_frame(MOStask task)
 #ifdef HAVE_HGE
        case TYPE_hge: FRAMEdecompress(task, hge); break;
 #endif
+       default: {
+               if (task->type == TYPE_date) {FRAMEdecompress(task, int); 
break;}
+               if (task->type == TYPE_daytime) {FRAMEdecompress(task, lng); 
break;}
+               if (task->type == TYPE_timestamp) {FRAMEdecompress(task, lng); 
break;}
+       }
        }
 }
 
@@ -401,7 +421,7 @@ MOSselect_frame( MOStask task, void *low
        }
        o = task->lb;
 
-       switch(ATOMbasetype(task->type)){
+       switch(task->type){
        case TYPE_bte: select_frame(task, bte, ulng); break;
        case TYPE_sht: select_frame(task, sht, ulng); break;
        case TYPE_int: select_frame(task, int, ulng); break;
@@ -410,6 +430,11 @@ MOSselect_frame( MOStask task, void *low
 #ifdef HAVE_HGE
        case TYPE_hge: select_frame(task, hge, uhge); break;
 #endif
+       default: {
+               if (task->type == TYPE_date) {select_frame(task, int, ulng); 
break;}
+               if (task->type == TYPE_daytime) {select_frame(task, lng, ulng); 
break;}
+               if (task->type == TYPE_timestamp) {select_frame(task, lng, 
ulng); break;}
+       }
        }
        MOSskip_frame(task);
        task->lb = o;
@@ -538,7 +563,7 @@ MOSthetaselect_frame( MOStask task, void
        }
        o = task->lb;
 
-       switch(ATOMbasetype(task->type)){
+       switch(task->type){
        case TYPE_bte: thetaselect_frame(bte, ulng, GET_DELTA_FOR_SIGNED_TYPE); 
break;
        case TYPE_sht: thetaselect_frame(sht, ulng, GET_DELTA_FOR_SIGNED_TYPE); 
break;
        case TYPE_int: thetaselect_frame(int, ulng, GET_DELTA_FOR_SIGNED_TYPE); 
break;
@@ -547,6 +572,11 @@ MOSthetaselect_frame( MOStask task, void
 #ifdef HAVE_HGE
        case TYPE_hge: thetaselect_frame(hge, uhge, GET_DELTA_FOR_SIGNED_TYPE); 
break;
 #endif
+       default: {
+               if (task->type == TYPE_date) {thetaselect_frame(int, ulng, 
GET_DELTA_FOR_SIGNED_TYPE); break;}
+               if (task->type == TYPE_daytime) {thetaselect_frame(lng, ulng, 
GET_DELTA_FOR_SIGNED_TYPE); break;}
+               if (task->type == TYPE_timestamp) {thetaselect_frame(lng, ulng, 
GET_DELTA_FOR_SIGNED_TYPE); break;}
+       }
        }
        MOSskip_frame(task);
        task->lb =o;
@@ -574,7 +604,7 @@ MOSprojection_frame( MOStask task)
        first = task->start;
        last = first + MOSgetCnt(task->blk);
 
-       switch(ATOMbasetype(task->type)){
+       switch(task->type){
                case TYPE_bte: projection_frame(bte); break;
                case TYPE_sht: projection_frame(sht); break;
                case TYPE_int: projection_frame(int); break;
@@ -583,6 +613,11 @@ MOSprojection_frame( MOStask task)
 #ifdef HAVE_HGE
                case TYPE_hge: projection_frame(hge); break;
 #endif
+       default: {
+               if (task->type == TYPE_date) {projection_frame(int); break;}
+               if (task->type == TYPE_daytime) {projection_frame(lng); break;}
+               if (task->type == TYPE_timestamp) {projection_frame(lng); 
break;}
+       }
        }
        MOSskip_frame(task);
        return MAL_SUCCEED;
@@ -613,7 +648,7 @@ MOSjoin_frame( MOStask task)
        oid o, oo;
 
        // set the oid range covered and advance scan range
-       switch(ATOMbasetype(task->type)){
+       switch(task->type){
                case TYPE_bte: join_frame(bte); break;
                case TYPE_sht: join_frame(sht); break;
                case TYPE_int: join_frame(int); break;
@@ -622,6 +657,11 @@ MOSjoin_frame( MOStask task)
 #ifdef HAVE_HGE
                case TYPE_hge: join_frame(hge); break;
 #endif
+       default: {
+               if (task->type == TYPE_date) {join_frame(int); break;}
+               if (task->type == TYPE_daytime) {join_frame(lng); break;}
+               if (task->type == TYPE_timestamp) {join_frame(lng); break;}
+       }
                }
        MOSskip_frame(task);
        return MAL_SUCCEED;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to