Changeset: a0cd2a68ca8a for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a0cd2a68ca8a Added Files: sql/test/BugTracker-2020/Tests/sysqueue.sql sql/test/BugTracker-2020/Tests/sysqueue.stable.err sql/test/BugTracker-2020/Tests/sysqueue.stable.out Modified Files: ChangeLog NT/monetdb_config.h.in clients/Tests/MAL-signatures.stable.out clients/Tests/MAL-signatures.stable.out.int128 clients/Tests/exports.stable.out clients/examples/C/smack00.c clients/examples/C/smack01.c clients/mapiclient/mclient.c clients/odbc/samples/arraytest.c clients/odbc/samples/odbcsample1.c clients/odbc/samples/testStmtAttr.c clients/odbc/samples/testgetinfo.c gdk/gdk.h gdk/gdk_aggr.c gdk/gdk_align.c gdk/gdk_analytic_bounds.c gdk/gdk_analytic_func.c gdk/gdk_atoms.c gdk/gdk_bat.c gdk/gdk_batop.c gdk/gdk_bbp.c gdk/gdk_calc.c gdk/gdk_calc_compare.h gdk/gdk_cand.c gdk/gdk_group.c gdk/gdk_hash.c gdk/gdk_heap.c gdk/gdk_imprints.c gdk/gdk_join.c gdk/gdk_logger.c gdk/gdk_orderidx.c gdk/gdk_posix.c gdk/gdk_private.h gdk/gdk_project.c gdk/gdk_sample.c gdk/gdk_select.c gdk/gdk_storage.c gdk/gdk_string.c gdk/gdk_system.c gdk/gdk_system_private.h gdk/gdk_tm.c gdk/gdk_tracer.c gdk/gdk_tracer.h gdk/gdk_unique.c gdk/gdk_utils.c geom/lib/libgeom.c monetdb5/mal/mal_client.c monetdb5/mal/mal_dataflow.c monetdb5/mal/mal_exception.c monetdb5/mal/mal_instruction.c monetdb5/mal/mal_linker.c monetdb5/mal/mal_runtime.c monetdb5/mal/mal_runtime.h monetdb5/modules/atoms/blob.c monetdb5/modules/atoms/xml.c monetdb5/modules/kernel/algebra.c monetdb5/modules/kernel/microbenchmark.c monetdb5/modules/mal/mal_mapi.c monetdb5/modules/mal/sysmon.c monetdb5/modules/mal/sysmon.mal monetdb5/modules/mal/tablet.c monetdb5/optimizer/opt_multiplex.c sql/backends/monet5/rel_bin.c sql/backends/monet5/sql.mal sql/backends/monet5/sql_statement.c sql/backends/monet5/sql_statement.h sql/backends/monet5/sql_upgrades.c sql/common/sql_mem.c sql/scripts/26_sysmon.sql sql/server/rel_select.c sql/server/rel_unnest.c sql/server/sql_query.c sql/server/sql_query.h sql/storage/store.c sql/test/BugTracker-2010/Tests/new-readonly-db.Bug-2695.stable.err sql/test/BugTracker-2014/Tests/inet_error_handling.Bug-3624.stable.err sql/test/BugTracker-2014/Tests/queueError.Bug-3604.stable.out sql/test/BugTracker-2015/Tests/float-space-parse.Bug-3691.stable.err sql/test/BugTracker-2015/Tests/sessions_crash.Bug-3759.stable.out sql/test/BugTracker-2019/Tests/rank-nan.Bug-6780.sql sql/test/BugTracker-2019/Tests/rank-nan.Bug-6780.stable.out sql/test/BugTracker-2020/Tests/All sql/test/VOC/Tests/VOC.stable.out sql/test/analytics/Tests/analytics13.sql sql/test/analytics/Tests/analytics13.stable.out sql/test/pg_regress/Tests/inet.stable.err sql/test/subquery/Tests/subquery5.sql sql/test/subquery/Tests/subquery5.stable.err sql/test/subquery/Tests/subquery5.stable.out sql/test/sys-schema/Tests/check_ForeignKey_referential_integrity.stable.out sql/test/sys-schema/Tests/systemfunctions.stable.out sql/test/sys-schema/Tests/systemfunctions.stable.out.int128 tools/merovingian/client/monetdb.c tools/merovingian/daemon/controlrunner.c tools/merovingian/daemon/merovingian.c tools/merovingian/daemon/snapshot.c Branch: scoping Log Message:
Merged with default diffs (truncated from 8001 to 300 lines): diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ # ChangeLog file for devel # This file is updated with Maddlog +* Thu Apr 2 2020 Martin Kersten <m...@cwi.nl> +- The sys.queue() has been turned into a circular buffer to allow for + inspection of both active, paused and recently executed queries. + diff --git a/NT/monetdb_config.h.in b/NT/monetdb_config.h.in --- a/NT/monetdb_config.h.in +++ b/NT/monetdb_config.h.in @@ -808,6 +808,10 @@ /* #undef size_t */ #if defined(_MSC_VER) && _MSC_VER < 1900 +/* the Visual Studio 2015 version of snprintf is C99 standard + * compliant and different from _snprintf, in older versions, the + * functions are the same and return -1 when the buffer is too + * small */ #define snprintf c99_snprintf #define vsnprintf c99_vsnprintf diff --git a/clients/Tests/MAL-signatures.stable.out b/clients/Tests/MAL-signatures.stable.out --- a/clients/Tests/MAL-signatures.stable.out +++ b/clients/Tests/MAL-signatures.stable.out @@ -14224,7 +14224,7 @@ stdout of test 'MAL-signatures` in direc [ "sql", "sysmon_pause", "pattern sql.sysmon_pause(tag:int):void ", "SYSMONpause;", "" ] [ "sql", "sysmon_pause", "pattern sql.sysmon_pause(tag:lng):void ", "SYSMONpause;", "" ] [ "sql", "sysmon_pause", "pattern sql.sysmon_pause(tag:sht):void ", "SYSMONpause;", "" ] -[ "sql", "sysmon_queue", "pattern sql.sysmon_queue() (tag:bat[:lng], sessionid:bat[:int], user:bat[:str], started:bat[:timestamp], status:bat[:str], query:bat[:str], progress:bat[:int], workers:bat[:int], memory:bat[:int]) ", "SYSMONqueue;", "" ] +[ "sql", "sysmon_queue", "pattern sql.sysmon_queue() (tag:bat[:lng], sessionid:bat[:int], user:bat[:str], started:bat[:timestamp], status:bat[:str], query:bat[:str], finished:bat[:timestamp], workers:bat[:int], memory:bat[:int]) ", "SYSMONqueue;", "" ] [ "sql", "sysmon_resume", "pattern sql.sysmon_resume(tag:bte):void ", "SYSMONresume;", "" ] [ "sql", "sysmon_resume", "pattern sql.sysmon_resume(tag:int):void ", "SYSMONresume;", "" ] [ "sql", "sysmon_resume", "pattern sql.sysmon_resume(tag:lng):void ", "SYSMONresume;", "" ] @@ -14387,7 +14387,7 @@ stdout of test 'MAL-signatures` in direc [ "sysmon", "pause", "pattern sysmon.pause(id:int):void ", "SYSMONpause;", "Suspend a running query" ] [ "sysmon", "pause", "pattern sysmon.pause(id:lng):void ", "SYSMONpause;", "Suspend a running query" ] [ "sysmon", "pause", "pattern sysmon.pause(id:sht):void ", "SYSMONpause;", "Suspend a running query" ] -[ "sysmon", "queue", "pattern sysmon.queue() (tag:bat[:lng], sessionid:bat[:int], user:bat[:str], started:bat[:timestamp], status:bat[:str], query:bat[:str], progress:bat[:int], workers:bat[:int], memory:bat[:int]) ", "SYSMONqueue;", "" ] +[ "sysmon", "queue", "pattern sysmon.queue() (tag:bat[:lng], sessionid:bat[:int], user:bat[:str], started:bat[:timestamp], status:bat[:str], query:bat[:str], finished:bat[:timestamp], workers:bat[:int], memory:bat[:int]) ", "SYSMONqueue;", "" ] [ "sysmon", "resume", "pattern sysmon.resume(id:int):void ", "SYSMONresume;", "Resume processing of a query " ] [ "sysmon", "resume", "pattern sysmon.resume(id:lng):void ", "SYSMONresume;", "Resume processing of a query " ] [ "sysmon", "resume", "pattern sysmon.resume(id:sht):void ", "SYSMONresume;", "Resume processing of a query " ] diff --git a/clients/Tests/MAL-signatures.stable.out.int128 b/clients/Tests/MAL-signatures.stable.out.int128 --- a/clients/Tests/MAL-signatures.stable.out.int128 +++ b/clients/Tests/MAL-signatures.stable.out.int128 @@ -19694,7 +19694,7 @@ stdout of test 'MAL-signatures` in direc [ "sql", "sysmon_pause", "pattern sql.sysmon_pause(tag:int):void ", "SYSMONpause;", "" ] [ "sql", "sysmon_pause", "pattern sql.sysmon_pause(tag:lng):void ", "SYSMONpause;", "" ] [ "sql", "sysmon_pause", "pattern sql.sysmon_pause(tag:sht):void ", "SYSMONpause;", "" ] -[ "sql", "sysmon_queue", "pattern sql.sysmon_queue() (tag:bat[:lng], sessionid:bat[:int], user:bat[:str], started:bat[:timestamp], status:bat[:str], query:bat[:str], progress:bat[:int], workers:bat[:int], memory:bat[:int]) ", "SYSMONqueue;", "" ] +[ "sql", "sysmon_queue", "pattern sql.sysmon_queue() (tag:bat[:lng], sessionid:bat[:int], user:bat[:str], started:bat[:timestamp], status:bat[:str], query:bat[:str], finished:bat[:timestamp], workers:bat[:int], memory:bat[:int]) ", "SYSMONqueue;", "" ] [ "sql", "sysmon_resume", "pattern sql.sysmon_resume(tag:bte):void ", "SYSMONresume;", "" ] [ "sql", "sysmon_resume", "pattern sql.sysmon_resume(tag:int):void ", "SYSMONresume;", "" ] [ "sql", "sysmon_resume", "pattern sql.sysmon_resume(tag:lng):void ", "SYSMONresume;", "" ] @@ -19861,7 +19861,7 @@ stdout of test 'MAL-signatures` in direc [ "sysmon", "pause", "pattern sysmon.pause(id:int):void ", "SYSMONpause;", "Suspend a running query" ] [ "sysmon", "pause", "pattern sysmon.pause(id:lng):void ", "SYSMONpause;", "Suspend a running query" ] [ "sysmon", "pause", "pattern sysmon.pause(id:sht):void ", "SYSMONpause;", "Suspend a running query" ] -[ "sysmon", "queue", "pattern sysmon.queue() (tag:bat[:lng], sessionid:bat[:int], user:bat[:str], started:bat[:timestamp], status:bat[:str], query:bat[:str], progress:bat[:int], workers:bat[:int], memory:bat[:int]) ", "SYSMONqueue;", "" ] +[ "sysmon", "queue", "pattern sysmon.queue() (tag:bat[:lng], sessionid:bat[:int], user:bat[:str], started:bat[:timestamp], status:bat[:str], query:bat[:str], finished:bat[:timestamp], workers:bat[:int], memory:bat[:int]) ", "SYSMONqueue;", "" ] [ "sysmon", "resume", "pattern sysmon.resume(id:int):void ", "SYSMONresume;", "Resume processing of a query " ] [ "sysmon", "resume", "pattern sysmon.resume(id:lng):void ", "SYSMONresume;", "Resume processing of a query " ] [ "sysmon", "resume", "pattern sysmon.resume(id:sht):void ", "SYSMONresume;", "Resume processing of a query " ] diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out --- a/clients/Tests/exports.stable.out +++ b/clients/Tests/exports.stable.out @@ -253,7 +253,6 @@ gdk_return GDKcopyenv(BAT **key, BAT **v gdk_return GDKcreatedir(const char *nme); gdk_return GDKcreatesem(int id, int count, int *semid); int GDKdebug; -void GDKerror(_In_z_ _Printf_format_string_ const char *format, ...) __attribute__((__format__(__printf__, 1, 2))); _Noreturn void GDKexit(int status); void GDKexit(int status); bool GDKexiting(void); @@ -301,10 +300,9 @@ void GDKsetverbose(int verbosity); ssize_t GDKstrFromStr(unsigned char *restrict dst, const unsigned char *restrict src, ssize_t len); str GDKstrdup(const char *s) __attribute__((__warn_unused_result__)); str GDKstrndup(const char *s, size_t n) __attribute__((__warn_unused_result__)); -void GDKsyserror(_In_z_ _Printf_format_string_ const char *format, ...) __attribute__((__format__(__printf__, 1, 2))); gdk_return GDKtracer_fill_comp_info(BAT *id, BAT *component, BAT *log_level); gdk_return GDKtracer_flush_buffer(void); -gdk_return GDKtracer_log(const char *file, const char *func, int lineno, log_level_t lvl, component_t comp, const char *format, ...) __attribute__((__format__(__printf__, 6, 7))); +void GDKtracer_log(const char *file, const char *func, int lineno, log_level_t lvl, component_t comp, const char *syserr, _In_z_ _Printf_format_string_ const char *format, ...) __attribute__((__format__(__printf__, 7, 8))); void GDKtracer_reinit_basic(int sig); gdk_return GDKtracer_reset_adapter(void); gdk_return GDKtracer_reset_component_level(const char *comp); @@ -2152,7 +2150,6 @@ Symbol findSymbolInModule(Module v, str int findVariable(MalBlkPtr mb, const char *name); int findVariableLength(MalBlkPtr mb, str name, int len); str finishRef; -void finishSessionProfiler(Client cntxt); str first_valueRef; str firstnRef; Module fixModule(str nme); @@ -2489,7 +2486,7 @@ str putNameLen(const char *nme, size_t l str putRef; str pyapi3Ref; str pyapi3mapRef; -lng qtop; +lng qhead, qtail, qsize; str queryRef; str querylogRef; str raiseRef; diff --git a/clients/examples/C/smack00.c b/clients/examples/C/smack00.c --- a/clients/examples/C/smack00.c +++ b/clients/examples/C/smack00.c @@ -16,10 +16,6 @@ #include <string.h> #include <mapi.h> -#ifdef _MSC_VER -#define snprintf _snprintf -#endif - #define die(dbh,hdl) do { \ if (hdl) \ mapi_explain_result(hdl,stderr); \ diff --git a/clients/examples/C/smack01.c b/clients/examples/C/smack01.c --- a/clients/examples/C/smack01.c +++ b/clients/examples/C/smack01.c @@ -16,10 +16,6 @@ #include <string.h> #include <mapi.h> -#ifdef _MSC_VER -#define snprintf _snprintf -#endif - #define die(dbh,hdl) do { \ if (hdl) \ mapi_explain_result(hdl,stderr); \ diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -1957,7 +1957,7 @@ format_result(Mapi mid, MapiHdl hdl, boo return rc; } -static int +static bool doRequest(Mapi mid, const char *buf) { MapiHdl hdl; @@ -1974,26 +1974,25 @@ doRequest(Mapi mid, const char *buf) } mapi_explain(mid, stderr); errseen = true; - return 1; + return true; } if (mapi_needmore(hdl) == MMORE) - return 0; + return false; format_result(mid, hdl, false); if (mapi_get_active(mid) == NULL) mapi_close_handle(hdl); - return 0; + return errseen; } -#define CHECK_RESULT(mid, hdl, break_or_continue, buf, fp) \ +#define CHECK_RESULT(mid, hdl, buf, fp) \ switch (mapi_error(mid)) { \ - case MOK: \ - /* everything A OK */ \ + case MOK: /* everything A OK */ \ break; \ - case MERROR: \ - /* some error, but try to continue */ \ + case MERROR: /* some error, but try to continue */ \ + case MTIMEOUT: /* lost contact with the server */ \ if (formatter == TABLEformatter) { \ mapi_noexplain(mid, ""); \ } else { \ @@ -2006,21 +2005,8 @@ doRequest(Mapi mid, const char *buf) } else \ mapi_explain(mid, stderr); \ errseen = true; \ - break_or_continue; \ - case MTIMEOUT: \ - /* lost contact with the server */ \ - if (formatter == TABLEformatter) { \ - mapi_noexplain(mid, ""); \ - } else { \ - mapi_noexplain(mid, NULL); \ - } \ - if (hdl) { \ - mapi_explain_query(hdl, stderr); \ - mapi_close_handle(hdl); \ - hdl = NULL; \ - } else \ - mapi_explain(mid, stderr); \ - errseen = true; \ + if (mapi_error(mid) == MERROR) \ + continue; /* why not in do-while */ \ timerEnd(); \ if (buf) \ free(buf); \ @@ -2072,12 +2058,12 @@ doFileBulk(Mapi mid, stream *fp) timerResume(); if (hdl == NULL) { hdl = mapi_query_prep(mid); - CHECK_RESULT(mid, hdl, continue, buf, fp); + CHECK_RESULT(mid, hdl, buf, fp); } assert(hdl != NULL); mapi_query_part(hdl, buf, (size_t) length); - CHECK_RESULT(mid, hdl, continue, buf, fp); + CHECK_RESULT(mid, hdl, buf, fp); /* if not at EOF, make sure there is a newline in the * buffer */ @@ -2096,14 +2082,14 @@ doFileBulk(Mapi mid, stream *fp) (length > 0 || mapi_query_done(hdl) == MMORE)) continue; /* get more data */ - CHECK_RESULT(mid, hdl, continue, buf, fp); + CHECK_RESULT(mid, hdl, buf, fp); rc = format_result(mid, hdl, false); if (rc == MMORE && (length > 0 || mapi_query_done(hdl) != MOK)) continue; /* get more data */ - CHECK_RESULT(mid, hdl, continue, buf, fp); + CHECK_RESULT(mid, hdl, buf, fp); mapi_close_handle(hdl); hdl = NULL; @@ -2610,7 +2596,7 @@ doFile(Mapi mid, stream *fp, bool useins hdl = mapi_query(mid, query); free(query); - CHECK_RESULT(mid, hdl, continue, buf, fp); + CHECK_RESULT(mid, hdl, buf, fp); while (fetch_row(hdl) == 3) { char *type = mapi_fetch_field(hdl, 0); char *name = mapi_fetch_field(hdl, 1); @@ -2859,7 +2845,7 @@ doFile(Mapi mid, stream *fp, bool useins if (hdl == NULL) { timerStart(); hdl = mapi_query_prep(mid); - CHECK_RESULT(mid, hdl, continue, buf, fp); + CHECK_RESULT(mid, hdl, buf, fp); } else timerResume(); @@ -2868,7 +2854,7 @@ doFile(Mapi mid, stream *fp, bool useins if (length > 0) { SQLsetSpecial(line); mapi_query_part(hdl, line, length); - CHECK_RESULT(mid, hdl, continue, buf, fp); + CHECK_RESULT(mid, hdl, buf, fp); } /* If the server wants more but we're at the @@ -2886,7 +2872,7 @@ doFile(Mapi mid, stream *fp, bool useins continue; /* done */ } } - CHECK_RESULT(mid, hdl, continue, buf, fp); + CHECK_RESULT(mid, hdl, buf, fp); if (mapi_get_querytype(hdl) == Q_PREPARE) { prepno = mapi_get_tableid(hdl); @@ -2898,7 +2884,7 @@ doFile(Mapi mid, stream *fp, bool useins if (rc == MMORE && (line != NULL || mapi_query_done(hdl) != MOK)) continue; /* get more data */ - CHECK_RESULT(mid, hdl, continue, buf, fp); + CHECK_RESULT(mid, hdl, buf, fp); timerEnd(); mapi_close_handle(hdl); diff --git a/clients/odbc/samples/arraytest.c b/clients/odbc/samples/arraytest.c --- a/clients/odbc/samples/arraytest.c +++ b/clients/odbc/samples/arraytest.c @@ -19,10 +19,6 @@ #include <sql.h> #include <sqlext.h> -#ifdef _MSC_VER -#define snprintf _snprintf -#endif - static void prerr(SQLSMALLINT tpe, SQLHANDLE hnd, const char *func, const char *pref) { diff --git a/clients/odbc/samples/odbcsample1.c b/clients/odbc/samples/odbcsample1.c --- a/clients/odbc/samples/odbcsample1.c +++ b/clients/odbc/samples/odbcsample1.c @@ -18,10 +18,6 @@ _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list