Changeset: 8be7dc635ffb for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8be7dc635ffb Modified Files: gdk/gdk.h gdk/gdk_cross.c gdk/gdk_join.c Branch: qcancel Log Message:
qry ctx maybe NULL diffs (224 lines): diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -2115,21 +2115,17 @@ gdk_export BAT *BATsample_with_seed(BAT #define CHECK_QRY_TIMEOUT_STEP 10000 -#define NULL_TIMEOUT_HANDLER() \ +#define TIMEOUT_MSG "Timeout was reached!" + +#define TIMEOUT_HANDLER(rtpe) \ do { \ - GDKerror("Timeout was reached!"); \ - return NULL; \ - } while(0) - -#define GDK_FAIL_TIMEOUT_HANDLER() \ - do { \ - GDKerror("Timeout was reached!"); \ - return GDK_FAIL; \ + GDKerror(TIMEOUT_MSG); \ + return rtpe; \ } while(0) #define GOTO_LABEL_TIMEOUT_HANDLER(label) \ do { \ - GDKerror("Timeout was reached!"); \ + GDKerror(TIMEOUT_MSG); \ goto label; \ } while(0) diff --git a/gdk/gdk_cross.c b/gdk/gdk_cross.c --- a/gdk/gdk_cross.c +++ b/gdk/gdk_cross.c @@ -27,9 +27,12 @@ BATsubcross(BAT **r1p, BAT **r2p, BAT *l cnt1 = canditer_init(&ci1, l, sl); cnt2 = canditer_init(&ci2, r, sr); + size_t counter = 0; + lng timeoffset = 0; QryCtx *qry_ctx = MT_thread_get_qry_ctx(); - lng timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ? (qry_ctx->starttime + qry_ctx->querytimeout) : 0; - size_t counter = 0; + if (qry_ctx != NULL) { + timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ? (qry_ctx->starttime + qry_ctx->querytimeout) : 0; + } if (max_one && cnt1 > 0 && cnt2 > 1) { GDKerror("more than one match"); @@ -56,7 +59,7 @@ BATsubcross(BAT **r1p, BAT **r2p, BAT *l for (i = 0; i < cnt1; i++) { oid x = canditer_next(&ci1); for (j = 0; j < cnt2; j++) { - GDK_CHECK_TIMEOUT(timeoffset, counter, GDK_FAIL_TIMEOUT_HANDLER()); + GDK_CHECK_TIMEOUT(timeoffset, counter, TIMEOUT_HANDLER(GDK_FAIL)); *p++ = x; } } @@ -73,7 +76,7 @@ BATsubcross(BAT **r1p, BAT **r2p, BAT *l counter = 0; for (i = 0; i < cnt1; i++) { for (j = 0; j < cnt2; j++) { - GDK_CHECK_TIMEOUT(timeoffset, counter, GDK_FAIL_TIMEOUT_HANDLER()); + GDK_CHECK_TIMEOUT(timeoffset, counter, TIMEOUT_HANDLER(GDK_FAIL)); *p++ = canditer_next(&ci2); } canditer_reset(&ci2); diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c --- a/gdk/gdk_join.c +++ b/gdk/gdk_join.c @@ -315,8 +315,11 @@ selectjoin(BAT **r1p, BAT **r2p, BAT *l, assert(lci->ncand == 1 || (l->tsorted && l->trevsorted)); size_t counter = 0; + lng timeoffset = 0; QryCtx *qry_ctx = MT_thread_get_qry_ctx(); - lng timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ? (qry_ctx->starttime + qry_ctx->querytimeout) : 0; + if (qry_ctx != NULL) { + timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ? (qry_ctx->starttime + qry_ctx->querytimeout) : 0; + } MT_thread_setalgorithm(__func__); oid o = canditer_next(lci); @@ -375,7 +378,7 @@ selectjoin(BAT **r1p, BAT **r2p, BAT *l, do { GDK_CHECK_TIMEOUT(timeoffset, counter, - GDK_FAIL_TIMEOUT_HANDLER()); + TIMEOUT_HANDLER(GDK_FAIL)); for (p = 0; p < q; p++) { *o1p++ = o; } @@ -394,7 +397,7 @@ selectjoin(BAT **r1p, BAT **r2p, BAT *l, do { GDK_CHECK_TIMEOUT(timeoffset, counter, - GDK_FAIL_TIMEOUT_HANDLER()); + TIMEOUT_HANDLER(GDK_FAIL)); for (p = 0; p < q; p++) { *o1p++ = o; } @@ -463,8 +466,11 @@ mergejoin_void(BAT **r1p, BAT **r2p, BAT assert(BATcount(r) > 0); size_t counter = 0; + lng timeoffset = 0; QryCtx *qry_ctx = MT_thread_get_qry_ctx(); - lng timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ? (qry_ctx->starttime + qry_ctx->querytimeout) : 0; + if (qry_ctx != NULL) { + timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ? (qry_ctx->starttime + qry_ctx->querytimeout) : 0; + } MT_thread_setalgorithm(__func__); /* figure out range [lo..hi) of values in r that we need to match */ @@ -716,7 +722,7 @@ mergejoin_void(BAT **r1p, BAT **r2p, BAT if (l->ttype == TYPE_void && l->tvheap != NULL) { for (i = 0; i < lci->ncand; i++) { GDK_CHECK_TIMEOUT(timeoffset, counter, - GDK_FAIL_TIMEOUT_HANDLER()); + TIMEOUT_HANDLER(GDK_FAIL)); oid c = canditer_next(lci); o = BUNtoid(l, c - l->hseqbase); @@ -732,7 +738,7 @@ mergejoin_void(BAT **r1p, BAT **r2p, BAT } else { for (i = 0; i < lci->ncand; i++) { GDK_CHECK_TIMEOUT(timeoffset, counter, - GDK_FAIL_TIMEOUT_HANDLER()); + TIMEOUT_HANDLER(GDK_FAIL)); oid c = canditer_next(lci); o = lvals[c - l->hseqbase]; @@ -811,8 +817,11 @@ mergejoin_int(BAT **r1p, BAT **r2p, BAT rvals = (const int *) Tloc(r, 0); assert(!r->tvarsized || !r->ttype); size_t counter = 0; + lng timeoffset = 0; QryCtx *qry_ctx = MT_thread_get_qry_ctx(); - lng timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ? (qry_ctx->starttime + qry_ctx->querytimeout) : 0; + if (qry_ctx != NULL) { + timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ? (qry_ctx->starttime + qry_ctx->querytimeout) : 0; + } /* basic properties will be adjusted if necessary later on, * they were initially set by joininitresults() */ @@ -1116,8 +1125,11 @@ mergejoin_lng(BAT **r1p, BAT **r2p, BAT rvals = (const lng *) Tloc(r, 0); assert(!r->tvarsized || !r->ttype); size_t counter = 0; + lng timeoffset = 0; QryCtx *qry_ctx = MT_thread_get_qry_ctx(); - lng timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ? (qry_ctx->starttime + qry_ctx->querytimeout) : 0; + if (qry_ctx != NULL) { + timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ? (qry_ctx->starttime + qry_ctx->querytimeout) : 0; + } /* basic properties will be adjusted if necessary later on, * they were initially set by joininitresults() */ @@ -1428,8 +1440,11 @@ mergejoin_cand(BAT **r1p, BAT **r2p, BAT assert(r->ttype == TYPE_void && r->tvheap != NULL); canditer_init(&rci, NULL, r); size_t counter = 0; + lng timeoffset = 0; QryCtx *qry_ctx = MT_thread_get_qry_ctx(); - lng timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ? (qry_ctx->starttime + qry_ctx->querytimeout) : 0; + if (qry_ctx != NULL) { + timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ? (qry_ctx->starttime + qry_ctx->querytimeout) : 0; + } /* basic properties will be adjusted if necessary later on, * they were initially set by joininitresults() */ @@ -1749,8 +1764,11 @@ mergejoin(BAT **r1p, BAT **r2p, BAT *l, assert(r->tsorted || r->trevsorted); size_t counter = 0; + lng timeoffset = 0; QryCtx *qry_ctx = MT_thread_get_qry_ctx(); - lng timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ? (qry_ctx->starttime + qry_ctx->querytimeout) : 0; + if (qry_ctx != NULL) { + timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ? (qry_ctx->starttime + qry_ctx->querytimeout) : 0; + } MT_thread_setalgorithm(__func__); if (BATtvoid(l)) { @@ -2567,8 +2585,11 @@ hashjoin(BAT **r1p, BAT **r2p, BAT *l, B assert(ATOMtype(l->ttype) == ATOMtype(r->ttype)); size_t counter = 0; + lng timeoffset = 0; QryCtx *qry_ctx = MT_thread_get_qry_ctx(); - lng timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ? (qry_ctx->starttime + qry_ctx->querytimeout) : 0; + if (qry_ctx != NULL) { + timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ? (qry_ctx->starttime + qry_ctx->querytimeout) : 0; + } int t = ATOMbasetype(r->ttype); if (r->ttype == TYPE_void || l->ttype == TYPE_void) @@ -3221,8 +3242,11 @@ thetajoin(BAT **r1p, BAT **r2p, BAT *l, oid lval = oid_nil, rval = oid_nil; size_t counter = 0; + lng timeoffset = 0; QryCtx *qry_ctx = MT_thread_get_qry_ctx(); - lng timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ? (qry_ctx->starttime + qry_ctx->querytimeout) : 0; + if (qry_ctx != NULL) { + timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ? (qry_ctx->starttime + qry_ctx->querytimeout) : 0; + } assert(ATOMtype(l->ttype) == ATOMtype(r->ttype)); assert(sl == NULL || sl->tsorted); @@ -3992,8 +4016,12 @@ BATbandjoin(BAT **r1p, BAT **r2p, BAT *l TRC_DEBUG_IF(ALGO) t0 = GDKusec(); size_t counter = 0; + lng timeoffset = 0; QryCtx *qry_ctx = MT_thread_get_qry_ctx(); - lng timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ? (qry_ctx->starttime + qry_ctx->querytimeout) : 0; + if (qry_ctx != NULL) { + timeoffset = (qry_ctx->starttime && qry_ctx->querytimeout) ? (qry_ctx->starttime + qry_ctx->querytimeout) : 0; + } + MT_thread_setalgorithm(__func__); *r1p = NULL; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list