Changeset: c06ee03df112 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/c06ee03df112
Modified Files:
        gdk/gdk_strimps.c
        gdk/gdk_strimps.h
Branch: strimps_update
Log Message:

Refuse to create strimps on small bats


diffs (35 lines):

diff --git a/gdk/gdk_strimps.c b/gdk/gdk_strimps.c
--- a/gdk/gdk_strimps.c
+++ b/gdk/gdk_strimps.c
@@ -725,6 +725,12 @@ BATsetstrimps(BAT *b)
                pb = b;
        }
 
+       if (pb->batCount < STRIMP_CREATION_THRESHOLD) {
+               GDKerror("Cannot create strimps index on columns with fewer 
than %ud elements\n", STRIMP_CREATION_THRESHOLD);
+               return GDK_FAIL;
+       }
+
+
        MT_lock_set(&pb->batIdxLock);
        if (pb->tstrimps == NULL) {
                pb->tstrimps = (Strimps *)2;
@@ -742,6 +748,7 @@ BATsetstrimps(BAT *b)
 #define STRIMP_COMPLETE(b)                                             \
        b->tstrimps != NULL &&                                          \
                b->tstrimps != (Strimps *)1 &&                          \
+               b->tstrimps != (Strimps *)2 &&                          \
                ((b->tstrimps->strimps.free - ((char 
*)b->tstrimps->bitstrings_base - b->tstrimps->strimps.base)) == 
b->batCount*sizeof(uint64_t))
 
 
diff --git a/gdk/gdk_strimps.h b/gdk/gdk_strimps.h
--- a/gdk/gdk_strimps.h
+++ b/gdk/gdk_strimps.h
@@ -16,6 +16,7 @@
 #define STRIMP_HISTSIZE 256*256
 #define STRIMP_HEADER_SIZE 64
 #define STRIMP_PAIRS (STRIMP_HEADER_SIZE - 1)
+#define STRIMP_CREATION_THRESHOLD 5000
 
 typedef struct {
        uint8_t *pbytes;
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to