Changeset: 7b065807f441 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7b065807f441
Modified Files:
monetdb5/modules/mosaic/mosaic_prefix.c
Branch: mosaic
Log Message:
Fix size calculation and decompress
diffs (180 lines):
diff --git a/monetdb5/modules/mosaic/mosaic_prefix.c
b/monetdb5/modules/mosaic/mosaic_prefix.c
--- a/monetdb5/modules/mosaic/mosaic_prefix.c
+++ b/monetdb5/modules/mosaic/mosaic_prefix.c
@@ -141,7 +141,7 @@ MOSadvance_prefix(Client cntxt, MOStask
unsigned char mask = *dst++;
unsigned char val = *dst++;
bits = (int)(val & (~mask));
- bytes = getBitVectorSize(MOSgetCnt(task->blk),bits) +
size;
+ bytes = getBitVectorSize(MOSgetCnt(task->blk),bits) *
sizeof(int) + 2 * size;
task->blk = (MosaicBlk) (((char*) dst) +
wordaligned(bytes, int));
}
break;
@@ -150,7 +150,7 @@ MOSadvance_prefix(Client cntxt, MOStask
unsigned short mask = *dst++;
unsigned short val = *dst++;
bits = (int)(val & (~mask));
- bytes = getBitVectorSize(MOSgetCnt(task->blk),bits) +
size;
+ bytes = getBitVectorSize(MOSgetCnt(task->blk),bits) *
sizeof(int) + 2 * size;
task->blk = (MosaicBlk) (((char*) dst) +
wordaligned(bytes, int));
}
break;
@@ -159,7 +159,7 @@ MOSadvance_prefix(Client cntxt, MOStask
unsigned int mask = *dst++;
unsigned int val = *dst++;
bits = (int)(val & (~mask));
- bytes = getBitVectorSize(MOSgetCnt(task->blk),bits) +
size;
+ bytes = getBitVectorSize(MOSgetCnt(task->blk),bits) *
sizeof(int) + 2 * size;
task->blk = (MosaicBlk) (((char*) dst) +
wordaligned(bytes, int));
}
break;
@@ -168,12 +168,12 @@ MOSadvance_prefix(Client cntxt, MOStask
ulng mask = *dst++;
ulng val = *dst++;
bits = (int)(val & (~mask));
- bytes = getBitVectorSize(MOSgetCnt(task->blk),bits) +
size;
+ bytes = getBitVectorSize(MOSgetCnt(task->blk),bits) *
sizeof(int) + 2 * size;
task->blk = (MosaicBlk) (((char*) dst) +
wordaligned(bytes, int));
}
}
#ifdef _DEBUG_MOSAIC_
- mnstr_printf(cntxt->fdout,"advance mask width %d bytes %d %d
\n",bits,bytes,(int)wordaligned(bytes,int));
+ mnstr_printf(cntxt->fdout,"advance mask width %d bytes %d %d
\n",bits,(int)bytes,(int)wordaligned(bytes,int));
#endif
}
@@ -562,7 +562,7 @@ MOSdecompress_prefix(Client cntxt, MOSta
base = (BitVector) dst;
//mnstr_printf(cntxt->fdout,"decompress bits %d mask %o
val %d\n",bits,m,val);
for(i = 0; i < lim; i++){
- v = decompress(base,i,bits);
+ v = val | decompress(base,i,bits);
hdr->checksum2.sumsht += v;
*w++ = v;
}
@@ -578,7 +578,7 @@ MOSdecompress_prefix(Client cntxt, MOSta
base = (BitVector) dst;
//mnstr_printf(cntxt->fdout,"decompress bits %d mask %o
val %d\n",bits,m,val);
for(i = 0; i < lim; i++){
- v =decompress(base,i,bits);
+ v = val | decompress(base,i,bits);
hdr->checksum2.sumsht += v;
*w++ = v;
}
@@ -594,7 +594,7 @@ MOSdecompress_prefix(Client cntxt, MOSta
base = (BitVector) dst;
//mnstr_printf(cntxt->fdout,"decompress bits %d mask %o
val %d\n",bits,m,val);
for(i = 0; i < lim; i++){
- v = decompress(base,i,bits);
+ v = val | decompress(base,i,bits);
hdr->checksum2.sumint += v;
*w++ = v;
}
@@ -610,7 +610,7 @@ MOSdecompress_prefix(Client cntxt, MOSta
base = (BitVector) dst;
//mnstr_printf(cntxt->fdout,"decompress bits %d mask %o
val %d\n",bits,m,val);
for(i = 0; i < lim; i++){
- v= decompress(base,i,bits);
+ v= val | decompress(base,i,bits);
hdr->checksum2.sumlng += v;
*w++ = v;
}
@@ -638,7 +638,7 @@ MOSdecompress_prefix(Client cntxt, MOSta
if( *(TPE*) low == TPE##_nil ){\
for( ; first < last; first++,i++){\
MOSskipit();\
- v = decompress(base,i,bits);\
+ v = val | decompress(base,i,bits);\
value = (TPE) ((TPE2)val |(TPE2) v);\
cmp = ((*hi && value <= * (TPE*)hgh ) ||
(!*hi && value < *(TPE*)hgh ));\
if (cmp )\
@@ -648,7 +648,7 @@ MOSdecompress_prefix(Client cntxt, MOSta
if( *(TPE*) hgh == TPE##_nil ){\
for( ; first < last; first++,i++){\
MOSskipit();\
- v = decompress(base,i,bits);\
+ v = val | decompress(base,i,bits);\
value = (TPE) ((TPE2)val |(TPE2) v);\
cmp = ((*li && value >= * (TPE*)low ) ||
(!*li && value > *(TPE*)low ));\
if (cmp )\
@@ -657,7 +657,7 @@ MOSdecompress_prefix(Client cntxt, MOSta
} else{\
for( ; first < last; first++,i++){\
MOSskipit();\
- v = decompress(base,i,bits);\
+ v = val | decompress(base,i,bits);\
value = (TPE) ((TPE2)val |(TPE2) v);\
cmp = ((*hi && value <= * (TPE*)hgh ) ||
(!*hi && value < *(TPE*)hgh )) &&\
((*li && value >= * (TPE*)low )
|| (!*li && value > *(TPE*)low ));\
@@ -672,7 +672,7 @@ MOSdecompress_prefix(Client cntxt, MOSta
if( *(TPE*) low == TPE##_nil ){\
for( ; first < last; first++,i++){\
MOSskipit();\
- v =decompress(base,i,bits);\
+ v = val | decompress(base,i,bits);\
value = (TPE) ((TPE2)val |(TPE2) v);\
cmp = ((*hi && value <= * (TPE*)hgh ) ||
(!*hi && value < *(TPE*)hgh ));\
if ( !cmp )\
@@ -682,7 +682,7 @@ MOSdecompress_prefix(Client cntxt, MOSta
if( *(TPE*) hgh == TPE##_nil ){\
for( ; first < last; first++, val++,i++){\
MOSskipit();\
- v = decompress(base,i,bits);\
+ v = val | decompress(base,i,bits);\
value = (TPE) ((TPE2)val |(TPE2) v);\
cmp = ((*li && value >= * (TPE*)low ) ||
(!*li && value > *(TPE*)low ));\
if ( !cmp )\
@@ -691,7 +691,7 @@ MOSdecompress_prefix(Client cntxt, MOSta
} else{\
for( ; first < last; first++, val++,i++){\
MOSskipit();\
- v = decompress(base,i,bits);\
+ v = val | decompress(base,i,bits);\
value = (TPE) ((TPE2)val |(TPE2) v);\
cmp = ((*hi && value <= * (TPE*)hgh ) ||
(!*hi && value < *(TPE*)hgh )) &&\
((*li && value >= * (TPE*)low )
|| (!*li && value > *(TPE*)low ));\
@@ -776,7 +776,7 @@ MOSsubselect_prefix(Client cntxt, MOSta
if ( !anti)\
for( ; first < last; first++,i++){\
MOSskipit();\
- v =decompress(base,i,bits);\
+ v = val | decompress(base,i,bits);\
value = (TPE) ((TPE2)val |(TPE2) v);\
if( (low == TPE##_nil || value >= low) && (value <= hgh
|| hgh == TPE##_nil) )\
*o++ = (oid) first;\
@@ -784,7 +784,7 @@ MOSsubselect_prefix(Client cntxt, MOSta
else\
for( ; first < last; first++,i++){\
MOSskipit();\
- v = decompress(base,i,bits);\
+ v = val | decompress(base,i,bits);\
value = (TPE) ((TPE2)val |(TPE2) v);\
if( !( (low == TPE##_nil || value >= low) && (value <=
hgh || hgh == TPE##_nil) ))\
*o++ = (oid) first;\
@@ -839,7 +839,7 @@ MOSthetasubselect_prefix(Client cntxt,
r= (TPE*) task->src;\
for(; first < last; first++,i++){\
MOSskipit();\
- v = decompress(base,i,bits);\
+ v = val | decompress(base,i,bits);\
value = (TPE) ((TPE2)val |(TPE2) v);\
*r++ = value;\
task->n--;\
@@ -877,7 +877,7 @@ MOSprojection_prefix(Client cntxt, MOSt
r= (flt*) task->src;
for(; first < last; first++,i++){
MOSskipit();
- v = decompress(base,i,bits);
+ v = val | decompress(base,i,bits);
value = (flt) ((unsigned int)val |(unsigned int) v);
*r++ = value;
task->n--;
@@ -915,7 +915,7 @@ break;
w = (TPE*) task->src;\
for(n = task->elm, o = 0; n -- > 0; w++,o++){\
for(i=0, oo= (oid) first; oo < (oid) last; v++, oo++,i++){\
- v = decompress(base,i,bits);\
+ v = val | decompress(base,i,bits);\
value = (TPE) ((TPE2)val |(TPE2) v);\
if ( *w == value){\
BUNappend(task->lbat, &oo, FALSE);\
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list