Changeset: f5f9791ddb6e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/f5f9791ddb6e
Branch: ppbench
Log Message:
merged with pp_hashjoin
diffs (131 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_algebra.c
b/monetdb5/modules/mal/pp_algebra.c
--- a/monetdb5/modules/mal/pp_algebra.c
+++ b/monetdb5/modules/mal/pp_algebra.c
@@ -1611,8 +1611,8 @@ LALGgroup_unique(Client ctx, bat *rid, b
#define afgroup() \
assert(h->hsh && h->cmp); \
int w = b->twidth; \
- group_(char *, \
- char *, \
+ group_(char, \
+ char, \
, \
char *ivals = Tloc(b, 0), \
, \
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/backends/monet5/bin_partition_by_slice.c
b/sql/backends/monet5/bin_partition_by_slice.c
--- a/sql/backends/monet5/bin_partition_by_slice.c
+++ b/sql/backends/monet5/bin_partition_by_slice.c
@@ -463,7 +463,6 @@ rel_groupby_prepare_pp(list **aggrresult
if ((BUN)estimate > est)
estimate = est;
- assert(!nrparts);
stmt *s = stmt_oahash_new(be, t,
nrparts?PARTITION_NRPARTS:estimate, curhash, nrparts);
if (s == NULL)
return NULL;
@@ -1104,6 +1103,13 @@ rel2bin_groupby_pp(backend *be, sql_rel
aggrstmt->key = 1;
}
}
+ if (aggrexp->shared && nrparts) { /* make sure we have fetched
the output for group unique */
+ InstrPtr mp = newStmt(be->mb, "mat", "fetch");
+ mp = pushArgument(be->mb, mp, aggrexp->shared);
+ mp = pushArgument(be->mb, mp, be->pp);
+ pushInstruction(be->mb, mp);
+ aggrexp->shared = getArg(mp, 0);
+ }
if (!aggrstmt)
aggrstmt = exp_bin(be, aggrexp, sub, NULL, grp, ext,
NULL, NULL, 0, 0, 0);
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]