Changeset: b675bac825f1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b675bac825f1
Modified Files:
gdk/gdk.h
gdk/gdk_aggr.c
gdk/gdk_batop.c
gdk/gdk_calc.c
gdk/gdk_calc_addsub.c
gdk/gdk_calc_compare.h
gdk/gdk_calc_convert.c
gdk/gdk_calc_div.c
gdk/gdk_calc_mod.c
gdk/gdk_calc_mul.c
gdk/gdk_calc_private.h
gdk/gdk_cross.c
gdk/gdk_group.c
gdk/gdk_hash.c
gdk/gdk_join.c
gdk/gdk_project.c
gdk/gdk_select.c
gdk/gdk_string.c
gdk/gdk_unique.c
monetdb5/modules/atoms/str.c
monetdb5/modules/mal/pcre.c
sql/storage/store.c
Branch: client_interrupts
Log Message:
Choose timeout/interrupted message correctly.
diffs (truncated from 2099 to 300 lines):
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -2361,22 +2361,23 @@ gdk_export BAT *BATsample_with_seed(BAT
#define CHECK_QRY_TIMEOUT_MASK (CHECK_QRY_TIMEOUT_STEP - 1)
#define TIMEOUT_MSG "Timeout was reached!"
+#define INTERRUPT_MSG "Query interrupted"
#define EXITING_MSG "Server is exiting!"
#define QRY_TIMEOUT (-1)
#define QRY_INTERRUPT (-2)
-#define TIMEOUT_HANDLER(rtpe) \
+#define TIMEOUT_HANDLER(rtpe, qc) \
do { \
- GDKerror("%s\n", GDKexiting() ? EXITING_MSG : TIMEOUT_MSG); \
+ GDKerror("%s\n", GDKexiting() ? EXITING_MSG : (qc) &&
(qc)->endtime == QRY_INTERRUPT ? INTERRUPT_MSG : TIMEOUT_MSG); \
return rtpe; \
} while(0)
#define TIMEOUT_TEST(QC) ((QC) && ((QC)->endtime < 0 || ((QC)->endtime
&& GDKusec() > (QC)->endtime && ((QC)->endtime = QRY_TIMEOUT)) ||
(bstream_getoob((QC)->bs) > 0 && ((QC)->endtime = QRY_INTERRUPT))))
-#define GOTO_LABEL_TIMEOUT_HANDLER(label) \
+#define GOTO_LABEL_TIMEOUT_HANDLER(label, qc) \
do { \
- GDKerror("%s\n", GDKexiting() ? EXITING_MSG : TIMEOUT_MSG); \
+ GDKerror("%s\n", GDKexiting() ? EXITING_MSG : (qc) &&
(qc)->endtime == QRY_INTERRUPT ? INTERRUPT_MSG : TIMEOUT_MSG); \
goto label; \
} while(0)
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -301,7 +301,7 @@ dofsum(const void *restrict values, oid
}
pergroup[grp].npartials = i;
}
- TIMEOUT_CHECK(qry_ctx, GOTO_LABEL_TIMEOUT_HANDLER(bailout));
+ TIMEOUT_CHECK(qry_ctx, GOTO_LABEL_TIMEOUT_HANDLER(bailout, qry_ctx));
for (grp = 0; grp < ngrp; grp++) {
if (pergroup[grp].partials == NULL)
continue;
@@ -446,7 +446,7 @@ dofsum(const void *restrict values, oid
goto overflow); \
} \
TIMEOUT_CHECK(qry_ctx, \
-
GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
+
GOTO_LABEL_TIMEOUT_HANDLER(bailout, qry_ctx)); \
} else { \
bool seenval = false; \
TIMEOUT_LOOP_IDX(i, ci->ncand, qry_ctx) { \
@@ -466,7 +466,7 @@ dofsum(const void *restrict values, oid
} \
} \
TIMEOUT_CHECK(qry_ctx, \
-
GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
+
GOTO_LABEL_TIMEOUT_HANDLER(bailout, qry_ctx)); \
*seen = seenval; \
} \
if (*seen) \
@@ -494,7 +494,7 @@ dofsum(const void *restrict values, oid
} \
} \
TIMEOUT_CHECK(qry_ctx, \
- GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
+ GOTO_LABEL_TIMEOUT_HANDLER(bailout,
qry_ctx)); \
if (seenval) \
*sums = sum; \
} else if (ci->tpe == cand_dense) { \
@@ -529,7 +529,7 @@ dofsum(const void *restrict values, oid
} \
} \
TIMEOUT_CHECK(qry_ctx, \
- GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
+ GOTO_LABEL_TIMEOUT_HANDLER(bailout,
qry_ctx)); \
} else { \
/* multiple groups, with candidate list */ \
*algo = "sum: with candidates, with groups"; \
@@ -563,7 +563,7 @@ dofsum(const void *restrict values, oid
} \
} \
TIMEOUT_CHECK(qry_ctx, \
- GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
+ GOTO_LABEL_TIMEOUT_HANDLER(bailout,
qry_ctx)); \
} \
} while (0)
@@ -582,7 +582,7 @@ dofsum(const void *restrict values, oid
sum += vals[ci->seq + i - seqb]; \
} \
TIMEOUT_CHECK(qry_ctx, \
-
GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
+
GOTO_LABEL_TIMEOUT_HANDLER(bailout, qry_ctx)); \
} else { \
bool seenval = false; \
*algo = "sum: no candidates, no groups, no
overflow"; \
@@ -600,7 +600,7 @@ dofsum(const void *restrict values, oid
} \
} \
TIMEOUT_CHECK(qry_ctx, \
-
GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
+
GOTO_LABEL_TIMEOUT_HANDLER(bailout, qry_ctx)); \
*seen = seenval; \
} \
if (*seen) \
@@ -625,7 +625,7 @@ dofsum(const void *restrict values, oid
} \
} \
TIMEOUT_CHECK(qry_ctx, \
- GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
+ GOTO_LABEL_TIMEOUT_HANDLER(bailout,
qry_ctx)); \
if (seenval) \
*sums = sum; \
} else if (ci->tpe == cand_dense) { \
@@ -646,7 +646,7 @@ dofsum(const void *restrict values, oid
} \
} \
TIMEOUT_CHECK(qry_ctx, \
-
GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
+
GOTO_LABEL_TIMEOUT_HANDLER(bailout, qry_ctx)); \
} else { \
*algo = "sum: no candidates, with groups, no
overflow"; \
TIMEOUT_LOOP_IDX(i, ci->ncand, qry_ctx) { \
@@ -672,7 +672,7 @@ dofsum(const void *restrict values, oid
} \
} \
TIMEOUT_CHECK(qry_ctx, \
-
GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
+
GOTO_LABEL_TIMEOUT_HANDLER(bailout, qry_ctx)); \
} \
} else { \
/* multiple groups, with candidate list */ \
@@ -701,7 +701,7 @@ dofsum(const void *restrict values, oid
} \
} \
TIMEOUT_CHECK(qry_ctx, \
- GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
+ GOTO_LABEL_TIMEOUT_HANDLER(bailout,
qry_ctx)); \
} \
} while (0)
@@ -1225,7 +1225,7 @@ BATsum(void *res, int tp, BAT *b, BAT *s
} \
} \
TIMEOUT_CHECK(qry_ctx, \
- GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
+ GOTO_LABEL_TIMEOUT_HANDLER(bailout, qry_ctx)); \
} while (0)
#ifdef HAVE_HGE
@@ -1263,7 +1263,7 @@ BATsum(void *res, int tp, BAT *b, BAT *s
} \
} \
TIMEOUT_CHECK(qry_ctx, \
- GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
+ GOTO_LABEL_TIMEOUT_HANDLER(bailout, qry_ctx)); \
} while (0)
#else
#define AGGR_PROD_LNG(TYPE) \
@@ -1303,7 +1303,7 @@ BATsum(void *res, int tp, BAT *b, BAT *s
} \
} \
TIMEOUT_CHECK(qry_ctx, \
- GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
+ GOTO_LABEL_TIMEOUT_HANDLER(bailout, qry_ctx)); \
} while (0)
#endif
@@ -1344,7 +1344,7 @@ BATsum(void *res, int tp, BAT *b, BAT *s
} \
} \
TIMEOUT_CHECK(qry_ctx, \
- GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
+ GOTO_LABEL_TIMEOUT_HANDLER(bailout, qry_ctx)); \
} while (0)
static BUN
@@ -1711,10 +1711,10 @@ BATprod(void *res, int tp, BAT *b, BAT *
/* ---------------------------------------------------------------------- */
/* average */
-#define GOTO_BAILOUT() \
- do { \
- GDKfree(avgs); \
- GOTO_LABEL_TIMEOUT_HANDLER(bailout); \
+#define GOTO_BAILOUT() \
+ do { \
+ GDKfree(avgs); \
+ GOTO_LABEL_TIMEOUT_HANDLER(bailout, qry_ctx); \
} while (0)
#define AGGR_AVG(TYPE) \
@@ -1779,7 +1779,7 @@ BATprod(void *res, int tp, BAT *b, BAT *
} \
} \
TIMEOUT_CHECK(qry_ctx, \
- GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
+ GOTO_LABEL_TIMEOUT_HANDLER(bailout, qry_ctx)); \
for (i = 0; i < ngrp; i++) { \
if (cnts[i] == 0 || is_lng_nil(cnts[i])) { \
dbls[i] = dbl_nil; \
@@ -2296,7 +2296,7 @@ BATgroupavg3(BAT **avgp, BAT **remp, BAT
#endif
}
bat_iterator_end(&bi);
- TIMEOUT_CHECK(qry_ctx, GOTO_LABEL_TIMEOUT_HANDLER(bailout));
+ TIMEOUT_CHECK(qry_ctx, GOTO_LABEL_TIMEOUT_HANDLER(bailout, qry_ctx));
BATsetcount(bn, ngrp);
BATsetcount(rn, ngrp);
BATsetcount(cn, ngrp);
@@ -2895,7 +2895,7 @@ BATgroupavg3combine(BAT *avg, BAT *rem,
bat_iterator_end(&bi);
BBPreclaim(rn);
BBPreclaim(cn);
- TIMEOUT_CHECK(qry_ctx, GOTO_LABEL_TIMEOUT_HANDLER(bailout));
+ TIMEOUT_CHECK(qry_ctx, GOTO_LABEL_TIMEOUT_HANDLER(bailout, qry_ctx));
BATsetcount(bn, ngrp);
bn->tnonil = !bn->tnil;
bn->tkey = ngrp == 1;
@@ -2964,7 +2964,7 @@ BATgroupavg3combine(BAT *avg, BAT *rem,
*avg = a + (dbl) r / n; \
} \
TIMEOUT_CHECK(qry_ctx, \
- GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
+ GOTO_LABEL_TIMEOUT_HANDLER(bailout, qry_ctx)); \
} while (0)
#ifdef HAVE_HGE
@@ -2985,7 +2985,7 @@ BATgroupavg3combine(BAT *avg, BAT *rem,
AVERAGE_ITER_FLOAT(TYPE, x, a, n); \
} \
TIMEOUT_CHECK(qry_ctx, \
- GOTO_LABEL_TIMEOUT_HANDLER(bailout)); \
+ GOTO_LABEL_TIMEOUT_HANDLER(bailout, qry_ctx)); \
*avg = n > 0 ? a : dbl_nil; \
} while (0)
@@ -3189,7 +3189,7 @@ BATgroupcount(BAT *b, BAT *g, BAT *e, BA
}
bat_iterator_end(&bi);
}
- TIMEOUT_CHECK(qry_ctx, GOTO_LABEL_TIMEOUT_HANDLER(bailout));
+ TIMEOUT_CHECK(qry_ctx, GOTO_LABEL_TIMEOUT_HANDLER(bailout, qry_ctx));
BATsetcount(bn, ngrp);
bn->tkey = BATcount(bn) <= 1;
bn->tsorted = BATcount(bn) <= 1;
@@ -3365,7 +3365,7 @@ do_groupmin(oid *restrict oids, BATiter
}
break;
}
- TIMEOUT_CHECK(qry_ctx, TIMEOUT_HANDLER(BUN_NONE));
+ TIMEOUT_CHECK(qry_ctx, TIMEOUT_HANDLER(BUN_NONE, qry_ctx));
return nils;
}
@@ -3488,7 +3488,7 @@ do_groupmax(oid *restrict oids, BATiter
}
break;
}
- TIMEOUT_CHECK(qry_ctx, TIMEOUT_HANDLER(BUN_NONE));
+ TIMEOUT_CHECK(qry_ctx, TIMEOUT_HANDLER(BUN_NONE, qry_ctx));
return nils;
}
@@ -4093,7 +4093,7 @@ doBATgroupquantile(BAT *b, BAT *g, BAT *
* of the current group, respectively) */
for (r = 0, q = BATcount(g); r < q; r = p) {
GDK_CHECK_TIMEOUT(qry_ctx, counter,
-
GOTO_LABEL_TIMEOUT_HANDLER(bunins_failed));
+
GOTO_LABEL_TIMEOUT_HANDLER(bunins_failed, qry_ctx));
BUN qindex;
prev = grps[r];
/* search for end of current group (grps is
@@ -4339,22 +4339,22 @@ BATgroupquantile_avg(BAT *b, BAT *g, BAT
/* ---------------------------------------------------------------------- */
/* standard deviation (both biased and non-biased) */
-#define AGGR_STDEV_SINGLE(TYPE) \
- do { \
- TYPE x; \
- TIMEOUT_LOOP_IDX(i, cnt, qry_ctx) { \
- x = ((const TYPE *) values)[i]; \
- if (is_##TYPE##_nil(x)) \
- continue; \
- n++; \
- delta = (dbl) x - mean; \
- mean += delta / n; \
- m2 += delta * ((dbl) x - mean); \
- if (isinf(m2)) \
- goto overflow; \
- } \
- TIMEOUT_CHECK(qry_ctx, \
- TIMEOUT_HANDLER(dbl_nil)); \
+#define AGGR_STDEV_SINGLE(TYPE)
\
+ do { \
+ TYPE x; \
+ TIMEOUT_LOOP_IDX(i, cnt, qry_ctx) { \
+ x = ((const TYPE *) values)[i]; \
+ if (is_##TYPE##_nil(x)) \
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]