Changeset: cf2e479f796f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/cf2e479f796f
Branch: pp_hashjoin
Log Message:
merged
diffs (92 lines):
diff --git a/gdk/gdk_sketch.c b/gdk/gdk_sketch.c
--- a/gdk/gdk_sketch.c
+++ b/gdk/gdk_sketch.c
@@ -10,7 +10,9 @@
#include "gdk.h"
+#if defined(HAVE_GETENTROPY) && defined(HAVE_SYS_RANDOM_H)
#include <sys/random.h>
+#endif
// #include "murmurhash3.h"
#define XXH_STATIC_LINKING_ONLY
#define XXH_IMPLEMENTATION
@@ -66,7 +68,7 @@ sketch_estimate(uint8_t cnt_sketch[BUCKE
int8_t C[CLZ_BUCKETS + 1] = {0};
for (size_t bucket = 0; bucket < BUCKETS; bucket++) {
int K = -1;
- for (size_t clz = 0; clz < CLZ_BUCKETS; clz++)
+ for (int clz = 0; clz < CLZ_BUCKETS; clz++)
if (cnt_sketch[bucket][clz] > 0)
K = clz;
K == -1 ? C[0]++ : C[K + 1]++;
@@ -93,11 +95,39 @@ sketch_estimate(uint8_t cnt_sketch[BUCKE
/* #define my_get_val_lng(ptr, i) ptr[i] */
/* #define my_get_val_str(ptr, i) */
+#if !defined(HAVE_GETENTROPY) && defined(HAVE_RAND_S)
+static int
+getentropy(void *buffer, size_t length)
+{
+ uint8_t *b = buffer;
+ for (size_t i = 0; i < length; i += sizeof(unsigned int)) {
+ unsigned int r;
+ if (rand_s(&r) != 0)
+ return -1;
+ for (size_t j = 0; j < sizeof(unsigned int); j++) {
+ if (i + j == length)
+ return 0;
+ b[i + j] = (uint8_t) (r >> (j * 8));
+ }
+ }
+ return 0;
+}
+static int
+leading_zeroes(uint64_t x)
+{
+ unsigned long i;
+ BitScanReverse64(&i, x);
+ return (int) (63 - i);
+}
+#else
+#define leading_zeroes(x) __builtin_clzll(x)
+#endif
+
#define SKETCH_UPDATE(CNTING_SKETCH, HASH) \
do { \
bucket = hash & BITS_MASK; \
hash |= BITS_MASK; \
- clz = __builtin_clzll(hash); \
+ clz = leading_zeroes(hash); \
assert(clz <= 58); \
if (CNTING_SKETCH[bucket][clz] <= 128) { \
CNTING_SKETCH[bucket][clz]++; \
diff --git a/monetdb5/modules/mal/pp_hash.c b/monetdb5/modules/mal/pp_hash.c
--- a/monetdb5/modules/mal/pp_hash.c
+++ b/monetdb5/modules/mal/pp_hash.c
@@ -970,7 +970,7 @@ OAHASHbuild_tbl(Client ctx, bat *slot_id
BATsetcount(g, cnt);
BATnegateprops(g);
gid last = ATOMIC_GET(&h->last);
- g->tmaxval = last;
+ g->tmaxval = (oid) last;
g->tkey = FALSE;
*slot_id = g->batCacheid;
//skip propcheck
diff --git a/sql/server/rel_optimize_sel.c b/sql/server/rel_optimize_sel.c
--- a/sql/server/rel_optimize_sel.c
+++ b/sql/server/rel_optimize_sel.c
@@ -216,11 +216,11 @@ rel_remove_redundant_join_(visitor *v, s
if (le != re)
return rel;
uint32_t nr = list_position(cols, le);
- if (used & (1<<nr)) { /* double used ??
*/
+ if (used & (UINT64_C(1)<<nr)) { /*
double used ?? */
assert(0);
return rel;
}
- used |= 1<<nr;
+ used |= UINT64_C(1)<<nr;
}
if (used == (uint64_t)((1<<nrcols)-1)) {
l = rel->l;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]