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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list