Changeset: eb190566557a for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=eb190566557a Modified Files: gdk/gdk_imprints.c gdk/gdk_join.c Branch: imprints-join Log Message:
fix compilation error
diffs (147 lines):
diff --git a/gdk/gdk_imprints.c b/gdk/gdk_imprints.c
--- a/gdk/gdk_imprints.c
+++ b/gdk/gdk_imprints.c
@@ -329,7 +329,7 @@ IMPSinternal(BAT *b, BAT *g)
}
if (g->timprints == NULL) {
- fprintf(stderr, "IMPSinternal: g contains no imprints");
+ fprintf(stderr, "IMPSinternal: g contains no
imprints\n");
return GDK_FAIL;
}
@@ -390,6 +390,7 @@ IMPSinternal(BAT *b, BAT *g)
/* determine the # of bits for b's imprints, directly
use g's # of bits at this moment */
imprints->bits = g->timprints->bits;
+ cnt = 0; //for compilation issue, temporarily use
} else {
s1 = BATsample(b, SMP_SIZE);
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -2588,7 +2588,43 @@ do { \
Z += ((X) >= bins[_i]); \
} while (0)
-#define HASHJOIN(TYPE, WIDTH) \
+#define HASHJOIN(TYPE, WIDTH) \
+ do { \
+ BUN hashnil = HASHnil(hsh);
\
+ for (lo = lstart + l->hseqbase;
\
+ lstart < lend;
\
+ lo++) {
\
+ v = FVALUE(l, lstart);
\
+ lstart++;
\
+ nr = 0;
\
+ if (*(const TYPE*)v != TYPE##_nil) {
\
+ for (rb =
HASHget##WIDTH(hsh, hash_##TYPE(hsh, v)); \
+ rb != hashnil;
\
+ rb =
HASHgetlink##WIDTH(hsh, rb)) \
+ if (rb
>= rl && rb < rh && \
+
* (const TYPE *) v == ((const TYPE *) base)[rb]) { \
+
ro = (oid) (rb - rl + rseq); \
+
HASHLOOPBODY(); \
+ }
\
+ }
\
+ if (nr == 0) {
\
+ lskipped = BATcount(r1)
> 0; \
+ } else {
\
+ if (lskipped) {
\
+
r1->tdense = 0; \
+ }
\
+ if (nr > 1) {
\
+
r1->tkey = 0; \
+
r1->tdense = 0; \
+ }
\
+ if (BATcount(r1) > nr)
\
+
r1->trevsorted = 0; \
+ }
\
+ }
\
+ } while (0)
+
+
+#define HASHJOIN_IMPS(TYPE, WIDTH)
\
do { \
BUN hashnil = HASHnil(hsh); \
int bin;
\
@@ -2681,6 +2717,8 @@ imps_hashjoin(BAT *r1, BAT *r2, BAT *l,
swapped ? " swapped" : "",
*reason ? " " : "", reason);
+ fprintf(stderr, "Invoke imps_hashjoin\n");
+
/* check imprints for the smaller side (r); if not exist, build it;
* for the larger side (l), if imprint exists, destroy it first, then
re-build it according to r's bin borders
*/
@@ -2791,17 +2829,19 @@ imps_hashjoin(BAT *r1, BAT *r2, BAT *l,
* function */
const void *restrict base = Tloc(r, 0);
+ fprintf(stderr, "deal with the case wo candidate list and type
int or lng \n");
+
if (t == TYPE_int) {
switch (hsh->width) {
case BUN2:
- HASHJOIN(int, 2);
+ HASHJOIN_IMPS(int, 2);
break;
case BUN4:
- HASHJOIN(int, 4);
+ HASHJOIN_IMPS(int, 4);
break;
#ifdef BUN8
case BUN8:
- HASHJOIN(int, 8);
+ HASHJOIN_IMPS(int, 8);
break;
#endif
}
@@ -2809,14 +2849,14 @@ imps_hashjoin(BAT *r1, BAT *r2, BAT *l,
/* t == TYPE_lng */
switch (hsh->width) {
case BUN2:
- HASHJOIN(lng, 2);
+ HASHJOIN_IMPS(lng, 2);
break;
case BUN4:
- HASHJOIN(lng, 4);
+ HASHJOIN_IMPS(lng, 4);
break;
#ifdef BUN8
case BUN8:
- HASHJOIN(lng, 8);
+ HASHJOIN_IMPS(lng, 8);
break;
#endif
}
@@ -3150,6 +3190,8 @@ hashjoin(BAT *r1, BAT *r2, BAT *l, BAT *
swapped ? " swapped" : "",
*reason ? " " : "", reason);
+ fprintf(stderr, "invoke hashjoin\n");
+
assert(r->ttype != TYPE_void);
assert(ATOMtype(l->ttype) == ATOMtype(r->ttype));
assert(sl == NULL || sl->tsorted);
@@ -4546,9 +4588,17 @@ BATjoin(BAT **r1p, BAT **r2p, BAT *l, BA
reason = "left is smaller";
}
if (swap) {
- return imps_hashjoin(r2, r1, r, l, sr, sl, nil_matches, 0, 0,
0, maxsize, t0, 1, reason);
+ if ((sr == NULL) && (sl == NULL)) {
+ return imps_hashjoin(r2, r1, r, l, sr, sl, nil_matches,
0, 0, 0, maxsize, t0, 1, reason);
+ } else {
+ return hashjoin(r2, r1, r, l, sr, sl, nil_matches, 0,
0, 0, maxsize, t0, 1, reason);
+ }
} else {
- return imps_hashjoin(r1, r2, l, r, sl, sr, nil_matches, 0, 0,
0, maxsize, t0, 0, reason);
+ if ((sr == NULL) && (sl == NULL)) {
+ return imps_hashjoin(r1, r2, l, r, sl, sr, nil_matches,
0, 0, 0, maxsize, t0, 0, reason);
+ } else {
+ return hashjoin(r1, r2, l, r, sl, sr, nil_matches, 0,
0, 0, maxsize, t0, 0, reason);
+ }
}
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list
