Changeset: 6490e5495d55 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6490e5495d55 Modified Files: monetdb5/modules/mal/Tests/mosaic_prefix.mal monetdb5/modules/mal/Tests/mosaic_prefix.stable.out monetdb5/modules/mal/mosaic_prefix.c Branch: mosaic Log Message:
snapshot commit diffs (truncated from 399 to 300 lines): diff --git a/monetdb5/modules/mal/Tests/mosaic_prefix.mal b/monetdb5/modules/mal/Tests/mosaic_prefix.mal --- a/monetdb5/modules/mal/Tests/mosaic_prefix.mal +++ b/monetdb5/modules/mal/Tests/mosaic_prefix.mal @@ -31,3 +31,36 @@ x:= mosaic.compress(b,"prefix"); #mosaic.dump(x); z:= mosaic.decompress(x); io.print(z); + +c:= bat.new(:oid,:sht); +bat.append(c,50:sht); +bat.append(c,51:sht); +bat.append(c,51:sht); +bat.append(c,51:sht); +bat.append(c,51:sht); +bat.append(c,51:sht); +bat.append(c,51:sht); +bat.append(c,60:sht); +bat.append(c,67:sht); +bat.append(c,67:sht); +bat.append(c,67:sht); +bat.append(c,67:sht); +bat.append(c,67:sht); +bat.append(c,67:sht); +bat.append(c,67:sht); +bat.append(c,255:sht); +bat.append(c,256:sht); +bat.append(c,256:sht); +bat.append(c,256:sht); +bat.append(c,256:sht); +bat.append(c,256:sht); +bat.append(c,255:sht); +bat.append(c,255:sht); +bat.append(c,255:sht); +bat.append(c,255:sht); +bat.append(c,255:sht); + +xc:= mosaic.compress(c,"prefix"); +#mosaic.dump(xc); +zc:= mosaic.decompress(xc); +io.print(zc); diff --git a/monetdb5/modules/mal/Tests/mosaic_prefix.stable.out b/monetdb5/modules/mal/Tests/mosaic_prefix.stable.out --- a/monetdb5/modules/mal/Tests/mosaic_prefix.stable.out +++ b/monetdb5/modules/mal/Tests/mosaic_prefix.stable.out @@ -50,6 +50,37 @@ function user.main():void; #mosaic.dump(x); z := mosaic.decompress(x); io.print(z); + c := bat.new(:oid,:sht); + bat.append(c,50:sht); + bat.append(c,51:sht); + bat.append(c,51:sht); + bat.append(c,51:sht); + bat.append(c,51:sht); + bat.append(c,51:sht); + bat.append(c,51:sht); + bat.append(c,60:sht); + bat.append(c,67:sht); + bat.append(c,67:sht); + bat.append(c,67:sht); + bat.append(c,67:sht); + bat.append(c,67:sht); + bat.append(c,67:sht); + bat.append(c,67:sht); + bat.append(c,255:sht); + bat.append(c,256:sht); + bat.append(c,256:sht); + bat.append(c,256:sht); + bat.append(c,256:sht); + bat.append(c,256:sht); + bat.append(c,255:sht); + bat.append(c,255:sht); + bat.append(c,255:sht); + bat.append(c,255:sht); + bat.append(c,255:sht); + xc := mosaic.compress(c,"prefix"); +#mosaic.dump(xc); + zc := mosaic.decompress(xc); + io.print(zc); end main; #--------------------------# # h t # name @@ -111,6 +142,36 @@ end main; [ 23@0, 255 ] [ 24@0, 255 ] [ 25@0, 255 ] +#--------------------------# +# h t # name +# void sht # type +#--------------------------# +[ 0@0, 50 ] +[ 1@0, 51 ] +[ 2@0, 51 ] +[ 3@0, 51 ] +[ 4@0, 51 ] +[ 5@0, 51 ] +[ 6@0, 51 ] +[ 7@0, 60 ] +[ 8@0, 67 ] +[ 9@0, 67 ] +[ 10@0, 67 ] +[ 11@0, 67 ] +[ 12@0, 67 ] +[ 13@0, 67 ] +[ 14@0, 67 ] +[ 15@0, 255 ] +[ 16@0, 256 ] +[ 17@0, 256 ] +[ 18@0, 256 ] +[ 19@0, 256 ] +[ 20@0, 256 ] +[ 21@0, 255 ] +[ 22@0, 255 ] +[ 23@0, 255 ] +[ 24@0, 255 ] +[ 25@0, 255 ] # 12:42:06 > # 12:42:06 > "Done." diff --git a/monetdb5/modules/mal/mosaic_prefix.c b/monetdb5/modules/mal/mosaic_prefix.c --- a/monetdb5/modules/mal/mosaic_prefix.c +++ b/monetdb5/modules/mal/mosaic_prefix.c @@ -248,16 +248,16 @@ MOSestimate_prefix(Client cntxt, MOStask return factor; } -#define compress(Vector) \ +#define compress(Vector,I, Bits, Value) \ { int cell, lshift, rshift;\ - cell = (i * rbits)/64;\ - lshift= 64 -((i * rbits) % 64) ;\ - if ( lshift > rbits){\ - Vector[cell]= Vector[cell] | (((unsigned long)m) << (lshift-rbits));\ + cell = (I * Bits)/64;\ + lshift= 64 -((I * Bits) % 64) ;\ + if ( lshift > Bits){\ + Vector[cell]= Vector[cell] | (((unsigned long)Value) << (lshift-Bits));\ }else{ \ - rshift= 64 - ((i+1) * rbits) % 64;\ - Vector[cell]= Vector[cell] | (((unsigned long)m) >> (rbits-lshift));\ - Vector[cell+1]= 0 | (((unsigned long)m) << rshift);\ + rshift= 64 - ((I+1) * Bits) % 64;\ + Vector[cell]= Vector[cell] | (((unsigned long)Value) >> (Bits-lshift));\ + Vector[cell+1]= 0 | (((unsigned long)Value) << rshift);\ }\ } @@ -304,7 +304,7 @@ MOScompress_prefix(Client cntxt, MOStask if ( val != (*w & mask) ) break; m = (unsigned long)( *w & (~mask)); // residu - compress(base); + compress(base,i,rbits,m); } MOSincCnt(blk,i); task->src += i; @@ -340,7 +340,7 @@ MOScompress_prefix(Client cntxt, MOStask if ( val != (*w & mask) ) break; m = *w & (~mask); // residu - compress(base); + compress(base,i,rbits,m); } MOSincCnt(blk,i); task->src += i * 2; @@ -426,7 +426,7 @@ MOScompress_prefix(Client cntxt, MOStask if ( val != (*w & mask) ) break; m = *w & (~mask); // residu - compress(base); + compress(base,i,rbits,m); } MOSincCnt(blk,i); task->src += i * 8 ; @@ -438,14 +438,14 @@ MOScompress_prefix(Client cntxt, MOStask #endif } -#define decompress(Vector)\ -{ int cell = (i * rbits)/64, lshift,rshift;\ - lshift= 64 -((i * rbits) % 64) ;\ +#define decompress(Vector,I)\ +{ int cell = (I * rbits)/64, lshift,rshift;\ + lshift= 64 -((I * rbits) % 64) ;\ if ( lshift > (int)rbits){\ m1 = (Vector[cell]>> (lshift-rbits)) & ((unsigned long) m);\ v = val | m1;\ }else{ \ - rshift= 64 - ((i+1) * rbits) % 64;\ + rshift= 64 - ((I+1) * rbits) % 64;\ m1 =(Vector[cell] & (((unsigned long)m) >> (rbits-lshift)));\ m2 = Vector[cell+1] >>rshift;\ v= val | (m1 <<(rbits-lshift)) | m2;\ @@ -478,7 +478,7 @@ MOSdecompress_prefix(Client cntxt, MOSta base = (unsigned long*) dst; //mnstr_printf(cntxt->fdout,"decompress rbits %d mask %o val %d\n",rbits,m,val); for(i = 0; i < lim; i++){ - decompress(base); + decompress(base,i); ((bte*)task->src)[i] = v; } task->src += i; @@ -498,7 +498,7 @@ MOSdecompress_prefix(Client cntxt, MOSta base = (unsigned long*) dst; //mnstr_printf(cntxt->fdout,"decompress rbits %d mask %o val %d\n",rbits,m,val); for(i = 0; i < lim; i++){ - decompress(base); + decompress(base,i); ((sht*)task->src)[i] = v; } task->src += i * 2; @@ -550,7 +550,7 @@ MOSdecompress_prefix(Client cntxt, MOSta base = (unsigned long*) dst; //mnstr_printf(cntxt->fdout,"decompress rbits %d mask %o val %d\n",rbits,m,val); for(i = 0; i < lim; i++){ - decompress(base); + decompress(base,i); ((lng*)task->src)[i] = v; } task->src += i * 8; @@ -583,7 +583,7 @@ MOSdecompress_prefix(Client cntxt, MOSta if( *(TPE*) low == TPE##_nil ){\ for( ; first < last; first++,i++){\ MOSskipit();\ - decompress(base);\ + decompress(base,i);\ value = (TPE) v;\ cmp = ((*hi && value <= * (TPE*)hgh ) || (!*hi && value < *(TPE*)hgh ));\ if (cmp )\ @@ -593,7 +593,7 @@ MOSdecompress_prefix(Client cntxt, MOSta if( *(TPE*) hgh == TPE##_nil ){\ for( ; first < last; first++,i++){\ MOSskipit();\ - decompress(base);\ + decompress(base,i);\ value = (TPE) v;\ cmp = ((*li && value >= * (TPE*)low ) || (!*li && value > *(TPE*)low ));\ if (cmp )\ @@ -602,7 +602,7 @@ MOSdecompress_prefix(Client cntxt, MOSta } else{\ for( ; first < last; first++,i++){\ MOSskipit();\ - decompress(base);\ + decompress(base,i);\ value = (TPE) v;\ cmp = ((*hi && value <= * (TPE*)hgh ) || (!*hi && value < *(TPE*)hgh )) &&\ ((*li && value >= * (TPE*)low ) || (!*li && value > *(TPE*)low ));\ @@ -617,7 +617,7 @@ MOSdecompress_prefix(Client cntxt, MOSta if( *(TPE*) low == TPE##_nil ){\ for( ; first < last; first++,i++){\ MOSskipit();\ - decompress(base);\ + decompress(base,i);\ value = (TPE) v;\ cmp = ((*hi && value <= * (TPE*)hgh ) || (!*hi && value < *(TPE*)hgh ));\ if ( !cmp )\ @@ -627,7 +627,7 @@ MOSdecompress_prefix(Client cntxt, MOSta if( *(TPE*) hgh == TPE##_nil ){\ for( ; first < last; first++, val++,i++){\ MOSskipit();\ - decompress(base);\ + decompress(base,i);\ value = (TPE) v;\ cmp = ((*li && value >= * (TPE*)low ) || (!*li && value > *(TPE*)low ));\ if ( !cmp )\ @@ -636,7 +636,7 @@ MOSdecompress_prefix(Client cntxt, MOSta } else{\ for( ; first < last; first++, val++,i++){\ MOSskipit();\ - decompress(base);\ + decompress(base,i);\ value = (TPE) v;\ cmp = ((*hi && value <= * (TPE*)hgh ) || (!*hi && value < *(TPE*)hgh )) &&\ ((*li && value >= * (TPE*)low ) || (!*li && value > *(TPE*)low ));\ @@ -700,7 +700,7 @@ MOSsubselect_prefix(Client cntxt, MOSta if( *(int*) low == int_nil ){ for( ; first < last; i++, first++){ MOSskipit(); - decompress(base); + decompress(base,i); cmp = ((*hi && v <= * (int*)hgh ) || (!*hi && v < *(int*)hgh )); if (cmp ) *o++ = (oid) first; @@ -709,7 +709,7 @@ MOSsubselect_prefix(Client cntxt, MOSta if( *(int*) hgh == int_nil ){ for( ; first < last; first++,i++){ MOSskipit(); - decompress(base); + decompress(base,i); cmp = ((*li && v >= * (int*)low ) || (!*li && v > *(int*)low )); if (cmp ) *o++ = (oid) first; @@ -717,7 +717,7 @@ MOSsubselect_prefix(Client cntxt, MOSta } else{ for( ; first < last; first++,i++){ MOSskipit(); - decompress(base); + decompress(base,i); cmp = ((*hi && v <= * (int*)hgh ) || (!*hi && v < *(int*)hgh )) && ((*li && v >= * (int*)low ) || (!*li && v > *(int*)low )); if (cmp ) _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list