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