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

Fix checksums
but have solve the skipit incorrect dereference


diffs (76 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
@@ -610,6 +610,7 @@ MOSdecompressInternal(Client cntxt, bat 
        BAT *bsrc, *b;
        MOStask task;
        str msg;
+       int error;
        (void) cntxt;
 
 #ifdef _DEBUG_MOSAIC_
@@ -759,7 +760,30 @@ MOSdecompressInternal(Client cntxt, bat 
                BBPunfix(b->batCacheid);
                BBPkeepref( *ret = bsrc->batCacheid);
        }
-       if( task->hdr->checksum.sumlng != task->hdr->checksum2.sumlng)
+       error = 0;
+       switch( ATOMstorage(task->type)){
+       case TYPE_bte:
+               error = task->hdr->checksum.sumbte != 
task->hdr->checksum2.sumbte;
+               break;
+       case TYPE_sht:
+               error = task->hdr->checksum.sumsht != 
task->hdr->checksum2.sumsht;
+               break;
+       case TYPE_int:
+               error = task->hdr->checksum.sumint != 
task->hdr->checksum2.sumint;
+               break;
+       case TYPE_lng:
+               error = task->hdr->checksum.sumlng != 
task->hdr->checksum2.sumlng;
+               break;
+       case TYPE_flt:
+               error = task->hdr->checksum.sumflt != 
task->hdr->checksum2.sumflt;
+               break;
+       case TYPE_dbl:
+               error = task->hdr->checksum.sumdbl != 
task->hdr->checksum2.sumdbl;
+               break;
+       default:
+               mnstr_printf(cntxt->fdout,"#unknown compression 
compatibility\n");
+       }
+       if(error)
                mnstr_printf(cntxt->fdout,"#incompatible compression\n");
        GDKfree(task);
 
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
@@ -192,7 +192,7 @@ float nextafterf(float x, float y);
 if ( task->cl && task->n){\
        while( *task->cl < (oid) first)\
                {task->cl++; task->n--;}\
-       if ( *task->cl > (oid) first  || task->n ==0)\
+       if (task->n == 0 || *task->cl > (oid) first )\
                continue;\
        if ( *task->cl == (oid) first ){\
                task->cl++; task->n--;\
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
@@ -710,7 +710,16 @@ MOSleftfetchjoin_delta(Client cntxt,  MO
                        val = *(int*) (((char*) task->blk) + MosaicBlkSize);
                        delta = (bte*) (((char*)task->blk + MosaicBlkSize) + 
sizeof(int));
                        for(; first < last; first++, val+= *delta, delta++){
-                               MOSskipit();
+                               //MOSskipit();
+if ( task->cl && task->n){
+    while( *task->cl < (oid) first)
+        {task->cl++; task->n--;}
+    if (task->n == 0 || *task->cl > (oid) first )
+        continue;
+    if ( *task->cl == (oid) first ){
+        task->cl++; task->n--;
+    }
+} else if (task->cl) continue;
                                *v++ = val;
                                task->n--;
                                task->cnt++;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to