Changeset: fead0ce024d7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fead0ce024d7
Modified Files:
        monetdb5/modules/mosaic/TODO_MOSAIC.txt
        monetdb5/modules/mosaic/mosaic.c
Branch: mosaic
Log Message:

Keep bad performing singleton compressions.


diffs (36 lines):

diff --git a/monetdb5/modules/mosaic/TODO_MOSAIC.txt 
b/monetdb5/modules/mosaic/TODO_MOSAIC.txt
--- a/monetdb5/modules/mosaic/TODO_MOSAIC.txt
+++ b/monetdb5/modules/mosaic/TODO_MOSAIC.txt
@@ -4,8 +4,8 @@ Fix/check/test MOSlayout.
 Add negative values to tests
 Add test for huge
 create mix compression test cases.
+benchmark using TPC-H
 Introduce mosaic into gdk: create hooks in scanselect functions/macro's, joins 
and projections.
-benchmark using TPC-H
 make mitosis work with mosaic and see how this relates to the previous 
landmark stuff.
 Transform control dependency into data dependency select loops.
 Apply compressed operations more directly: on constant value in runlength 
compression
diff --git a/monetdb5/modules/mosaic/mosaic.c b/monetdb5/modules/mosaic/mosaic.c
--- a/monetdb5/modules/mosaic/mosaic.c
+++ b/monetdb5/modules/mosaic/mosaic.c
@@ -1493,7 +1493,18 @@ MOSAnalysis(BAT *b, BAT *btech, BAT *bou
 
                // analyse result block distribution to exclude complicated 
compression combination that (probably) won't improve compression rate.
                if ( i < MOSAIC_METHODS-1 && pat[i].xf >= 0 && pat[i].xf < 1.0) 
{
-                               antipattern[antipatternSize++] = pattern[i];
+                               bool keep = false;
+                               for(j=0, bit=1; j < MOSAIC_METHODS-1; j++, 
bit<<=1){
+                                       if (pattern[i] == bit ) {
+                                               /* We'll keep it if is a 
singleton compression strategy.
+                                                * It might still compress well 
in combination with another compressor.
+                                                */
+                                               keep = true;
+                                       }
+                               }
+                               if (!keep) {
+                                       antipattern[antipatternSize++] = 
pattern[i];
+                               }
                }
                else {
                        for(j=1; j < MOSAIC_METHODS-1; j++){
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to