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