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

Reply via email to