Changeset: 9693f5301e75 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9693f5301e75
Modified Files:
        monetdb5/modules/mal/mosaic.c
        monetdb5/modules/mal/mosaic.h
        monetdb5/modules/mal/mosaic_delta.c
        monetdb5/modules/mal/mosaic_dict.c
        monetdb5/modules/mal/mosaic_linear.c
        monetdb5/modules/mal/mosaic_none.c
        monetdb5/modules/mal/mosaic_rle.c
        monetdb5/modules/mal/mosaic_zone.c
        monetdb5/optimizer/opt_mosaic.c
Branch: mosaic
Log Message:

Add the wrd type


diffs (truncated from 492 to 300 lines):

diff --git a/monetdb5/modules/mal/mosaic.c b/monetdb5/modules/mal/mosaic.c
--- a/monetdb5/modules/mal/mosaic.c
+++ b/monetdb5/modules/mal/mosaic.c
@@ -1091,6 +1091,7 @@ MOSanalyseInternal(Client cntxt, BUN thr
        case TYPE_sht:
        case TYPE_int:
        case TYPE_lng:
+       case TYPE_wrd:
        case TYPE_oid:
        case TYPE_flt:
        case TYPE_dbl:
diff --git a/monetdb5/modules/mal/mosaic.h b/monetdb5/modules/mal/mosaic.h
--- a/monetdb5/modules/mal/mosaic.h
+++ b/monetdb5/modules/mal/mosaic.h
@@ -129,6 +129,7 @@ float nextafterf(float x, float y);
 #define PREVVALUEsht(x) ((x) - 1)
 #define PREVVALUEint(x) ((x) - 1)
 #define PREVVALUElng(x) ((x) - 1)
+#define PREVVALUEwrd(x) ((x) - 1)
 #define PREVVALUEoid(x) ((x) - 1)
 #define PREVVALUEflt(x) nextafterf((x), -GDK_flt_max)
 #define PREVVALUEdbl(x) nextafter((x), -GDK_dbl_max)
@@ -140,6 +141,7 @@ float nextafterf(float x, float y);
 #define NEXTVALUEsht(x) ((x) + 1)
 #define NEXTVALUEint(x) ((x) + 1)
 #define NEXTVALUElng(x) ((x) + 1)
+#define NEXTVALUEwrd(x) ((x) + 1)
 #define NEXTVALUEoid(x) ((x) + 1)
 #define NEXTVALUEflt(x) nextafterf((x), GDK_flt_max)
 #define NEXTVALUEdbl(x) nextafter((x), GDK_dbl_max)
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
@@ -41,6 +41,7 @@ MOSadvance_delta(MOStask task)
        case TYPE_sht: task->blk = (MosaicBlk)( ((char*) task->blk) + 
MosaicBlkSize + wordaligned(sizeof(sht) + MOScnt(blk)-1)); break ;
        case TYPE_int: task->blk = (MosaicBlk)( ((char*) task->blk) + 
MosaicBlkSize + wordaligned(sizeof(int) + MOScnt(blk)-1)); break ;
        case TYPE_oid: task->blk = (MosaicBlk)( ((char*) task->blk) + 
MosaicBlkSize + wordaligned(sizeof(oid) + MOScnt(blk)-1)); break ;
+       case TYPE_wrd: task->blk = (MosaicBlk)( ((char*) task->blk) + 
MosaicBlkSize + wordaligned(sizeof(wrd) + MOScnt(blk)-1)); break ;
        case TYPE_lng: task->blk = (MosaicBlk)( ((char*) task->blk) + 
MosaicBlkSize + wordaligned(sizeof(lng) + MOScnt(blk)-1)); break ;
        default:
                if( task->type == TYPE_timestamp)
@@ -69,7 +70,7 @@ MOSskip_delta(MOStask task)
                        break;\
                val = *w;\
        }\
-       percentage = 100 * (MosaicBlkSize + sizeof(TYPE)+(int)i-1) / ((int)i * 
sizeof(TYPE));\
+       percentage = 100 * (MosaicBlkSize + sizeof(TYPE)+(bte)i-1) / ((int)i * 
sizeof(TYPE));\
 }
 
 int
@@ -88,8 +89,9 @@ MOSestimate_delta(Client cntxt, MOStask 
                                        break;
                                val = *w;
                        }
-                       percentage = 100 * (MosaicBlkSize + 
sizeof(oid)+(oid)i-1) / ((int)i * sizeof(int));
+                       percentage = 100 * (MosaicBlkSize + 
sizeof(oid)+(bte)i-1) / ((int)i * sizeof(int));
                }
+       case TYPE_wrd: Estimate_delta(wrd); break;
        case TYPE_lng: Estimate_delta(lng); break;
        case TYPE_int:
                {       int *w = (int*)task->src, val= *w, delta;
@@ -99,7 +101,7 @@ MOSestimate_delta(Client cntxt, MOStask 
                                        break;
                                val = *w;
                        }
-                       percentage = 100 * (MosaicBlkSize + 
sizeof(int)+(int)i-1) / ((int)i * sizeof(int));
+                       percentage = 100 * (MosaicBlkSize + 
sizeof(int)+(bte)i-1) / ((int)i * sizeof(int));
                }
        }
 #ifdef _DEBUG_MOSAIC_
@@ -136,6 +138,7 @@ MOScompress_delta(Client cntxt, MOStask 
 
        switch(ATOMstorage(task->type)){
        case TYPE_sht: DELTAcompress(sht); break;
+       case TYPE_wrd: DELTAcompress(wrd); break;
        case TYPE_lng: DELTAcompress(lng); break;
        case TYPE_oid:
                {       oid *w = (oid*)task->src, val= *w, delta;
@@ -198,6 +201,7 @@ MOSdecompress_delta(Client cntxt, MOStas
        switch(ATOMstorage(task->type)){
        case TYPE_sht: DELTAdecompress(sht); break;
        case TYPE_oid: DELTAdecompress(oid); break;
+       case TYPE_wrd: DELTAdecompress(wrd); break;
        case TYPE_lng: DELTAdecompress(lng); break;
        case TYPE_int:
        {       int val;
@@ -304,6 +308,7 @@ MOSsubselect_delta(Client cntxt,  MOStas
        case TYPE_bte: subselect_delta(bte); break;
        case TYPE_sht: subselect_delta(sht); break;
        case TYPE_oid: subselect_delta(oid); break;
+       case TYPE_wrd: subselect_delta(wrd); break;
        case TYPE_lng: subselect_delta(lng); break;
        case TYPE_flt: subselect_delta(flt); break;
        case TYPE_dbl: subselect_delta(dbl); break;
@@ -507,6 +512,7 @@ MOSthetasubselect_delta(Client cntxt,  M
        case TYPE_sht: thetasubselect_delta(sht); break;
        case TYPE_oid: thetasubselect_delta(oid); break;
        case TYPE_lng: thetasubselect_delta(lng); break;
+       case TYPE_wrd: thetasubselect_delta(wrd); break;
        case TYPE_flt: thetasubselect_delta(flt); break;
        case TYPE_dbl: thetasubselect_delta(dbl); break;
        case TYPE_int:
@@ -584,6 +590,7 @@ MOSleftfetchjoin_delta(Client cntxt,  MO
                case TYPE_sht: leftfetchjoin_delta(sht); break;
                case TYPE_oid: leftfetchjoin_delta(oid); break;
                case TYPE_lng: leftfetchjoin_delta(lng); break;
+               case TYPE_wrd: leftfetchjoin_delta(wrd); break;
                case TYPE_flt: leftfetchjoin_delta(flt); break;
                case TYPE_dbl: leftfetchjoin_delta(dbl); break;
                case TYPE_int:
@@ -635,6 +642,7 @@ MOSjoin_delta(Client cntxt,  MOStask tas
                case TYPE_sht: join_delta(sht); break;
                case TYPE_oid: join_delta(oid); break;
                case TYPE_lng: join_delta(lng); break;
+               case TYPE_wrd: join_delta(wrd); break;
                case TYPE_flt: join_delta(flt); break;
                case TYPE_dbl: join_delta(dbl); break;
                case TYPE_int:
diff --git a/monetdb5/modules/mal/mosaic_dict.c 
b/monetdb5/modules/mal/mosaic_dict.c
--- a/monetdb5/modules/mal/mosaic_dict.c
+++ b/monetdb5/modules/mal/mosaic_dict.c
@@ -56,6 +56,9 @@ MOSdump_dict(Client cntxt, MOStask task)
        case  TYPE_lng:
                for(i=0; i< *size; i++)
                mnstr_printf(cntxt->fdout,"lng [%d] "LLFMT, i, ((lng*) 
val)[i]); break;
+       case  TYPE_wrd:
+               for(i=0; i< *size; i++)
+               mnstr_printf(cntxt->fdout,"wrd [%d] "SZFMT, i, ((wrd*) 
val)[i]); break;
        default:
                if( task->type == TYPE_date){
                }
@@ -73,6 +76,7 @@ MOSadvance_dict(MOStask task)
        case TYPE_int: task->blk = (MosaicBlk)( ((char*)task->blk) + 2* 
MosaicBlkSize + dictsize * sizeof(int)+ wordaligned(sizeof(bte) * 
MOScnt(task->blk))); break;
        case TYPE_oid: task->blk = (MosaicBlk)( ((char*)task->blk) + 2* 
MosaicBlkSize + dictsize * sizeof(oid)+ wordaligned(sizeof(bte) * 
MOScnt(task->blk))); break;
        case TYPE_lng: task->blk = (MosaicBlk)( ((char*)task->blk) + 2* 
MosaicBlkSize + dictsize * sizeof(lng)+ wordaligned(sizeof(bte) * 
MOScnt(task->blk))); break;
+       case TYPE_wrd: task->blk = (MosaicBlk)( ((char*)task->blk) + 2* 
MosaicBlkSize + dictsize * sizeof(wrd)+ wordaligned(sizeof(bte) * 
MOScnt(task->blk))); break;
        default:
                if( task->type == TYPE_timestamp)
                                task->blk = (MosaicBlk)( ((char*)task->blk) + 
2* MosaicBlkSize + dictsize * sizeof(timestamp)+ wordaligned(sizeof(bte) * 
MOScnt(task->blk))); 
@@ -122,6 +126,7 @@ MOSestimate_dict(Client cntxt, MOStask t
        case TYPE_sht: estimateDict(sht); break;
        case TYPE_oid: estimateDict(oid); break;
        case TYPE_lng: estimateDict(lng); break;
+       case TYPE_wrd: estimateDict(wrd); break;
        case TYPE_int:
                {       int val = *(int*)task->src;
                        int *dict = (int*)((char*)task->dst + 2 * 
MosaicBlkSize);
@@ -186,6 +191,7 @@ MOScompress_dict(Client cntxt, MOStask t
        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_lng:
                {       lng *val = (lng*)task->src;
                        lng *dict = (lng*)((char*)task->blk+ 2 * MosaicBlkSize);
@@ -241,6 +247,7 @@ MOSdecompress_dict(Client cntxt, MOStask
        case TYPE_sht: DICTdecompress(sht); break;
        case TYPE_oid: DICTdecompress(oid); break;
        case TYPE_lng: DICTdecompress(lng); break;
+       case TYPE_wrd: DICTdecompress(wrd); break;
        case TYPE_int:
                {       bte *idx = (bte*)(compressed + dictsize * sizeof(int));
                        int *dict = (int*) compressed;
@@ -343,6 +350,7 @@ MOSsubselect_dict(Client cntxt,  MOStask
        case TYPE_sht: subselect_dict(sht); break;
        case TYPE_oid: subselect_dict(oid); break;
        case TYPE_lng: subselect_dict(lng); break;
+       case TYPE_wrd: subselect_dict(wrd); break;
        case TYPE_int:
        // Expanded MOSselect_dict for debugging
        {       int *dict= (int*) (((char*) task->blk) + 2 * MosaicBlkSize );
@@ -543,6 +551,7 @@ MOSthetasubselect_dict(Client cntxt,  MO
        case TYPE_sht: thetasubselect_dict(sht); break;
        case TYPE_oid: thetasubselect_dict(oid); break;
        case TYPE_lng: thetasubselect_dict(lng); break;
+       case TYPE_wrd: thetasubselect_dict(wrd); break;
        case TYPE_int:
                {       int low,hgh;
                        int *dict= (int*) (((char*) task->blk) + 2 * 
MosaicBlkSize );
@@ -650,6 +659,7 @@ MOSleftfetchjoin_dict(Client cntxt,  MOS
                case TYPE_sht: leftfetchjoin_dict(sht); break;
                case TYPE_oid: leftfetchjoin_dict(oid); break;
                case TYPE_lng: leftfetchjoin_dict(lng); break;
+               case TYPE_wrd: leftfetchjoin_dict(wrd); break;
                case TYPE_int:
                {       int *v;
                        int *dict= (int*) (((char*) task->blk) + 2 * 
MosaicBlkSize );
@@ -696,6 +706,7 @@ MOSjoin_dict(Client cntxt,  MOStask task
                case TYPE_sht: join_dict(sht); break;
                case TYPE_oid: join_dict(oid); break;
                case TYPE_lng: join_dict(lng); break;
+               case TYPE_wrd: join_dict(wrd); break;
                case TYPE_int:
                {       int  *w;
                        int *dict= (int*) (((char*) task->blk) + 2 * 
MosaicBlkSize );
diff --git a/monetdb5/modules/mal/mosaic_linear.c 
b/monetdb5/modules/mal/mosaic_linear.c
--- a/monetdb5/modules/mal/mosaic_linear.c
+++ b/monetdb5/modules/mal/mosaic_linear.c
@@ -36,6 +36,7 @@ linear_step(MOStask task, MosaicBlk blk)
        case TYPE_sht : return (void*) ( ((char*)blk)+ MosaicBlkSize+ 
sizeof(sht));
        case TYPE_int : return (void*) ( ((char*)blk)+ MosaicBlkSize+ 
sizeof(int));
        case TYPE_lng : return (void*) ( ((char*)blk)+ MosaicBlkSize+ 
sizeof(lng));
+       case TYPE_wrd : return (void*) ( ((char*)blk)+ MosaicBlkSize+ 
sizeof(wrd));
        case TYPE_oid : return (void*) ( ((char*)blk)+ MosaicBlkSize+ 
sizeof(oid));
        case TYPE_flt : return (void*) ( ((char*)blk)+ MosaicBlkSize+ 
sizeof(flt));
        case TYPE_dbl : return (void*) ( ((char*)blk)+ MosaicBlkSize+ 
sizeof(dbl));
@@ -59,6 +60,8 @@ MOSdump_linear(Client cntxt, MOStask tas
                mnstr_printf(cntxt->fdout,"int %d %d", *(int*) 
linear_base(blk), *(int*) linear_step(task,blk)); break;
        case  TYPE_lng:
                mnstr_printf(cntxt->fdout,"int "LLFMT" " LLFMT, *(lng*) 
linear_base(blk), *(lng*) linear_step(task,blk)); break;
+       case  TYPE_wrd:
+               mnstr_printf(cntxt->fdout,"int "SZFMT" " SZFMT, *(wrd*) 
linear_base(blk), *(wrd*) linear_step(task,blk)); break;
        case TYPE_flt:
                mnstr_printf(cntxt->fdout,"flt  %f %f", *(flt*) 
linear_base(blk), *(flt*) linear_step(task,blk)); break;
        case TYPE_dbl:
@@ -84,6 +87,7 @@ MOSadvance_linear(MOStask task)
        case TYPE_int: task->blk = (MosaicBlk)( ((char*)task->blk) + 
MosaicBlkSize + wordaligned(2 * sizeof(int))); break;
        case TYPE_oid: task->blk = (MosaicBlk)( ((char*)task->blk) + 
MosaicBlkSize + wordaligned(2 * sizeof(oid))); break;
        case TYPE_lng: task->blk = (MosaicBlk)( ((char*)task->blk) + 
MosaicBlkSize + wordaligned(2 * sizeof(lng))); break;
+       case TYPE_wrd: task->blk = (MosaicBlk)( ((char*)task->blk) + 
MosaicBlkSize + wordaligned(2 * sizeof(wrd))); break;
        case TYPE_flt: task->blk = (MosaicBlk)( ((char*)task->blk) + 
MosaicBlkSize + wordaligned(2 * sizeof(flt))); break;
        case TYPE_dbl: task->blk = (MosaicBlk)( ((char*)task->blk) + 
MosaicBlkSize + wordaligned(2 * sizeof(dbl))); break;
        default:
@@ -126,6 +130,7 @@ MOSestimate_linear(Client cntxt, MOStask
        case TYPE_sht: Estimate(sht); break;
        case TYPE_oid: Estimate(oid); break;
        case TYPE_lng: Estimate(lng); break;
+       case TYPE_wrd: Estimate(wrd); break;
        case TYPE_flt: Estimate(flt); break;
        case TYPE_dbl: Estimate(dbl); break;
        case TYPE_int:
@@ -172,6 +177,7 @@ MOScompress_linear(Client cntxt, MOStask
        case TYPE_sht: LINEARcompress(sht); break;
        case TYPE_oid: LINEARcompress(oid); break;
        case TYPE_lng: LINEARcompress(lng); break;
+       case TYPE_wrd: LINEARcompress(wrd); break;
        case TYPE_flt: LINEARcompress(flt); break;
        case TYPE_dbl: LINEARcompress(dbl); break;
        case TYPE_int:
@@ -216,6 +222,7 @@ MOSdecompress_linear(Client cntxt, MOSta
        case TYPE_sht: LINEARdecompress(sht); break;
        case TYPE_oid: LINEARdecompress(oid); break;
        case TYPE_lng: LINEARdecompress(lng); break;
+       case TYPE_wrd: LINEARdecompress(wrd); break;
        case TYPE_flt: LINEARdecompress(flt); break;
        case TYPE_dbl: LINEARdecompress(dbl); break;
        case TYPE_int:
@@ -316,6 +323,7 @@ MOSsubselect_linear(Client cntxt,  MOSta
        case TYPE_sht: subselect_linear(sht); break;
        case TYPE_oid: subselect_linear(oid); break;
        case TYPE_lng: subselect_linear(lng); break;
+       case TYPE_wrd: subselect_linear(wrd); break;
        case TYPE_flt: subselect_linear(flt); break;
        case TYPE_dbl: subselect_linear(dbl); break;
        case TYPE_int:
@@ -458,6 +466,7 @@ MOSthetasubselect_linear(Client cntxt,  
        case TYPE_sht: thetasubselect_linear(sht); break;
        case TYPE_oid: thetasubselect_linear(oid); break;
        case TYPE_lng: thetasubselect_linear(lng); break;
+       case TYPE_wrd: thetasubselect_linear(wrd); break;
        case TYPE_flt: thetasubselect_linear(flt); break;
        case TYPE_dbl: thetasubselect_linear(dbl); break;
        case TYPE_int:
@@ -538,6 +547,7 @@ MOSleftfetchjoin_linear(Client cntxt,  M
                case TYPE_sht: leftfetchjoin_linear(sht); break;
                case TYPE_oid: leftfetchjoin_linear(oid); break;
                case TYPE_lng: leftfetchjoin_linear(lng); break;
+               case TYPE_wrd: leftfetchjoin_linear(wrd); break;
                case TYPE_flt: leftfetchjoin_linear(flt); break;
                case TYPE_dbl: leftfetchjoin_linear(dbl); break;
                case TYPE_int:
@@ -601,6 +611,7 @@ MOSjoin_linear(Client cntxt,  MOStask ta
                case TYPE_sht: join_linear(sht); break;
                case TYPE_oid: join_linear(oid); break;
                case TYPE_lng: join_linear(lng); break;
+               case TYPE_wrd: join_linear(wrd); break;
                case TYPE_flt: join_linear(flt); break;
                case TYPE_dbl: join_linear(dbl); break;
                case TYPE_int:
diff --git a/monetdb5/modules/mal/mosaic_none.c 
b/monetdb5/modules/mal/mosaic_none.c
--- a/monetdb5/modules/mal/mosaic_none.c
+++ b/monetdb5/modules/mal/mosaic_none.c
@@ -44,6 +44,7 @@ MOSadvance_none(MOStask task)
        case TYPE_int: task->blk = (MosaicBlk)( ((char*) task->blk) + 
MosaicBlkSize + wordaligned(sizeof(int)* MOScnt(blk))); break ;
        case TYPE_oid: task->blk = (MosaicBlk)( ((char*) task->blk) + 
MosaicBlkSize + wordaligned(sizeof(oid)* MOScnt(blk))); break ;
        case TYPE_lng: task->blk = (MosaicBlk)( ((char*) task->blk) + 
MosaicBlkSize + wordaligned(sizeof(lng)* MOScnt(blk))); break ;
+       case TYPE_wrd: task->blk = (MosaicBlk)( ((char*) task->blk) + 
MosaicBlkSize + wordaligned(sizeof(wrd)* MOScnt(blk))); break ;
        case TYPE_flt: task->blk = (MosaicBlk)( ((char*) task->blk) + 
MosaicBlkSize + wordaligned(sizeof(flt)* MOScnt(blk))); break ;
        case TYPE_dbl: task->blk = (MosaicBlk)( ((char*) task->blk) + 
MosaicBlkSize + wordaligned(sizeof(dbl)* MOScnt(blk))); break;
        default:
@@ -98,6 +99,7 @@ MOScompress_none(Client cntxt, MOStask t
                break;
        case TYPE_oid: NONEcompress(oid); break;
        case TYPE_lng: NONEcompress(lng); break;
+       case TYPE_wrd: NONEcompress(wrd); break;
        case TYPE_flt: NONEcompress(flt); break;
        case TYPE_dbl: NONEcompress(dbl); break;
        }
@@ -136,6 +138,7 @@ MOSdecompress_none(Client cntxt, MOStask
                break;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to