Changeset: 91443b5950d5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/91443b5950d5
Modified Files:
        gdk/gdk.h
        gdk/gdk_imprints.c
        gdk/gdk_join.c
        gdk/gdk_sample.c
Branch: default
Log Message:

Avoid global lock of BATsample by using private seed.


diffs (56 lines):

diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -2199,7 +2199,7 @@ gdk_export gdk_return BATfirstn(BAT **to
  *
  */
 gdk_export BAT *BATsample(BAT *b, BUN n);
-gdk_export BAT *BATsample_with_seed(BAT *b, BUN n, unsigned seed);
+gdk_export BAT *BATsample_with_seed(BAT *b, BUN n, uint64_t seed);
 
 /*
  *
diff --git a/gdk/gdk_imprints.c b/gdk/gdk_imprints.c
--- a/gdk/gdk_imprints.c
+++ b/gdk/gdk_imprints.c
@@ -509,7 +509,7 @@ BATimprints(BAT *b)
                                                           imprintsheap);
 
 #define SMP_SIZE 2048
-               s1 = BATsample(b, SMP_SIZE);
+               s1 = BATsample_with_seed(b, SMP_SIZE, (uint64_t) GDKusec() * 
(uint64_t) b->batCacheid);
                if (s1 == NULL) {
                        GDKfree(imprints);
                        return GDK_FAIL;
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -3118,9 +3118,9 @@ guess_uniques(BAT *b, struct canditer *c
                                  ALGOBATPAR(b));
                        return p->v.val.dval;
                }
-               s1 = BATsample(b, 1000);
+               s1 = BATsample_with_seed(b, 1000, (uint64_t) GDKusec() * 
(uint64_t) b->batCacheid);
        } else {
-               BAT *s2 = BATsample(ci->s, 1000);
+               BAT *s2 = BATsample_with_seed(ci->s, 1000, (uint64_t) GDKusec() 
* (uint64_t) b->batCacheid);
                s1 = BATproject(s2, ci->s);
                BBPreclaim(s2);
        }
diff --git a/gdk/gdk_sample.c b/gdk/gdk_sample.c
--- a/gdk/gdk_sample.c
+++ b/gdk/gdk_sample.c
@@ -173,11 +173,11 @@ do_batsample(BAT *b, BUN n, random_state
 
 /* BATsample implements sampling for BATs */
 BAT *
-BATsample_with_seed(BAT *b, BUN n, unsigned seed)
+BATsample_with_seed(BAT *b, BUN n, uint64_t seed)
 {
        random_state_engine rse;
 
-       init_random_state_engine(rse, (uint64_t) seed);
+       init_random_state_engine(rse, seed);
 
        return do_batsample(b, n, rse, NULL);
 }
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to