Changeset: da9703b6adb6 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=da9703b6adb6
Modified Files:
        monetdb5/modules/mal/mosaic_delta.c
Branch: mosaic
Log Message:

Fix delta compression.


diffs (46 lines):

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
@@ -51,6 +51,7 @@ MOSadvance_delta(Client cntxt, MOStask t
                case 4: task->blk = (MosaicBlk)( ((char*) blk) + MosaicBlkSize 
+ wordaligned(sizeof(int)* MOSgetCnt(blk)-1,int)); break ;
                case 8: task->blk = (MosaicBlk)( ((char*) blk) + MosaicBlkSize 
+ wordaligned(sizeof(lng)* MOSgetCnt(blk)-1,lng)); break ;
                }
+               break;
        default:
                if( task->type == TYPE_timestamp)
                        task->blk = (MosaicBlk)( ((char*) blk) + MosaicBlkSize 
+ wordaligned(sizeof(timestamp) + MOSgetCnt(blk)-1,timestamp)); 
@@ -82,13 +83,12 @@ MOSskip_delta(Client cntxt, MOStask task
 {      TYPE *w = (TYPE*)task->src, val= *w, delta = 0;\
        for(w++,i =1; i<task->elm; i++,w++){\
                delta = *w -val;\
-               if ( EXPR)\
-               if ( delta < -127 || delta >127)\
+               if ( !(EXPR))\
                        break;\
                val = *w;\
        }\
        if ( i > MOSlimit() ) i = MOSlimit();\
-       factor = ((float) i * sizeof(TYPE))/  (2 * MosaicBlkSize + 
sizeof(TYPE)+(bte)i-1);\
+       factor = ((float) i * sizeof(TYPE))/  (2 * MosaicBlkSize + 
sizeof(TYPE)+i-1);\
 }
 
 // estimate the compression level 
@@ -124,7 +124,8 @@ MOSestimate_delta(Client cntxt, MOStask 
                                        break;
                                val = *w;
                        }
-                       factor = ((float) i * sizeof(int))/  (2 * MosaicBlkSize 
+ sizeof(int)+(bte)i-1);
+                       if ( i > MOSlimit() ) i = MOSlimit();
+                       factor = ((float) i * sizeof(int))/  (2 * MosaicBlkSize 
+ sizeof(int)+i-1);
                }
                break;
        //case TYPE_flt: case TYPE_dbl: to be looked into.
@@ -143,7 +144,7 @@ MOSestimate_delta(Client cntxt, MOStask 
        task->dst += sizeof(TYPE);\
        for(w++,i =1; i<limit; i++,w++){\
                delta = *w -val;\
-               if ( EXPR )\
+               if ( !(EXPR) )\
                        break;\
                *(bte*)task->dst++ = (bte) delta;\
                val = *w;\
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to