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]

Reply via email to