Changeset: 4df708e57d55 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4df708e57d55
Modified Files:
gdk/gdk_join.c
gdk/gdk_select.c
Branch: qcancel
Log Message:
range and band joins
diffs (64 lines):
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -3991,6 +3991,10 @@ BATbandjoin(BAT **r1p, BAT **r2p, BAT *l
TRC_DEBUG_IF(ALGO) t0 = GDKusec();
+ size_t counter = 0;
+ QryCtx *qry_ctx = MT_thread_get_qry_ctx();
+ lng timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ?
(qry_ctx->starttime + qry_ctx->querytimeout) : 0;
+
MT_thread_setalgorithm(__func__);
*r1p = NULL;
if (r2p) {
@@ -4104,6 +4108,8 @@ BATbandjoin(BAT **r1p, BAT **r2p, BAT *l
/* nested loop implementation for band join */
for (BUN li = 0; li < lcnt; li++) {
+ GDK_CHECK_TIMEOUT(timeoffset, counter,
+ GOTO_LABEL_TIMEOUT_HANDLER(bailout));
lo = canditer_next(&lci);
vl = FVALUE(l, lo - l->hseqbase);
if (cmp(vl, nil) == 0)
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -1782,6 +1782,10 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT
bool use_orderidx = false;
const char *algo = NULL;
+ size_t counter = 0;
+ QryCtx *qry_ctx = MT_thread_get_qry_ctx();
+ lng timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ?
(qry_ctx->starttime + qry_ctx->querytimeout) : 0;
+
assert(ATOMtype(l->ttype) == ATOMtype(rl->ttype));
assert(ATOMtype(l->ttype) == ATOMtype(rh->ttype));
assert(BATcount(rl) == BATcount(rh));
@@ -1842,6 +1846,8 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT
/* left column is sorted, use binary search */
sorted = 2;
for (BUN i = 0; i < rci->ncand; i++) {
+ GDK_CHECK_TIMEOUT(timeoffset, counter,
+ GOTO_LABEL_TIMEOUT_HANDLER(bailout));
BUN low, high;
ro = canditer_next(rci);
@@ -1973,6 +1979,8 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT
sorted = 2;
cnt = 0;
for (BUN i = 0; i < rci->ncand; i++) {
+ GDK_CHECK_TIMEOUT(timeoffset, counter,
+ GOTO_LABEL_TIMEOUT_HANDLER(bailout));
maxsize = cnt + (rci->ncand - i) * lci->ncand;
ro = canditer_next(rci);
if (rlvals) {
@@ -2245,6 +2253,8 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT
lvals = l->ttype == TYPE_void ? NULL : (const char *) Tloc(l,
0);
vl = &lval;
for (BUN i = 0; i < lci->ncand; i++) {
+ GDK_CHECK_TIMEOUT(timeoffset, counter,
+ GOTO_LABEL_TIMEOUT_HANDLER(bailout));
oid lo;
lo = canditer_next(lci);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list