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

Reply via email to