Changeset: 3394725e7975 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3394725e7975 Added Files: sql/test/BugTracker-2020/Tests/global_table_propagation.Bug-6846.py sql/test/BugTracker-2020/Tests/global_table_propagation.Bug-6846.stable.err sql/test/BugTracker-2020/Tests/global_table_propagation.Bug-6846.stable.out 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/All clients/Tests/MAL-signatures.stable.out clients/Tests/MAL-signatures.stable.out.int128 clients/Tests/SingleServer clients/Tests/exports.stable.out clients/examples/C/smack00.c clients/examples/C/smack01.c clients/mapiclient/mclient.1 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.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_parser.c monetdb5/mal/mal_resolve.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 monetdb5/optimizer/opt_pushselect.c monetdb5/tools/Tests/mserver5--help.stable.err monetdb5/tools/Tests/mserver5--help.stable.err.Windows sql/ChangeLog.Jun2020 sql/backends/monet5/rel_bin.c sql/backends/monet5/sql.c sql/backends/monet5/sql.mal sql/backends/monet5/sql_cat.c sql/backends/monet5/sql_execute.c sql/backends/monet5/sql_result.c sql/backends/monet5/sql_statement.c sql/backends/monet5/sql_statement.h sql/backends/monet5/sql_upgrades.c sql/common/sql_list.c sql/common/sql_mem.c sql/include/sql_catalog.h sql/include/sql_list.h sql/scripts/26_sysmon.sql sql/server/rel_propagate.c sql/server/rel_schema.c sql/server/rel_select.c sql/server/rel_semantic.c sql/server/rel_unnest.c sql/server/rel_updates.c sql/server/sql_mvc.c sql/server/sql_partition.c sql/server/sql_query.c sql/server/sql_query.h sql/storage/bat/bat_storage.c sql/storage/sql_catalog.c sql/storage/sql_storage.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-2018/Tests/nested-merge-tables.Bug-6585.stable.err sql/test/BugTracker-2019/Tests/grant-select-column.Bug-6765.py sql/test/BugTracker-2019/Tests/grant-select-column.Bug-6765.stable.err sql/test/BugTracker-2019/Tests/grant-select-column.Bug-6765.stable.out sql/test/BugTracker-2019/Tests/python-loader-string.Bug-6759.py sql/test/BugTracker-2019/Tests/python-loader-string.Bug-6759.stable.err sql/test/BugTracker-2019/Tests/python-loader-string.Bug-6759.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/BugTracker-2020/Tests/alter-table-add-column.Bug-6816.py sql/test/BugTracker-2020/Tests/alter-table-add-column.Bug-6816.stable.err sql/test/BugTracker-2020/Tests/alter-table-add-column.Bug-6816.stable.out sql/test/BugTracker-2020/Tests/functions-not-persist.Bug-6819.SQL.py sql/test/BugTracker-2020/Tests/functions-not-persist.Bug-6819.stable.err sql/test/BugTracker-2020/Tests/functions-not-persist.Bug-6819.stable.out sql/test/VOC/Tests/VOC.stable.out sql/test/analytics/Tests/analytics13.sql sql/test/analytics/Tests/analytics13.stable.out sql/test/merge-partitions/Tests/mergepart05.stable.err sql/test/merge-partitions/Tests/mergepart07.stable.err sql/test/merge-partitions/Tests/mergepart23.SQL.py sql/test/merge-partitions/Tests/mergepart23.stable.err sql/test/mergetables/Tests/mergedropcrash.stable.err sql/test/pg_regress/Tests/alter_table.stable.err sql/test/pg_regress/Tests/drop.stable.err 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.1 tools/merovingian/client/monetdb.c tools/merovingian/daemon/controlrunner.c tools/merovingian/daemon/merovingian.c tools/merovingian/daemon/monetdbd.1.in tools/merovingian/daemon/snapshot.c tools/mserver/mserver5.1.in tools/mserver/mserver5.c Branch: unlock Log Message:
merged with default diffs (truncated from 10683 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/All b/clients/Tests/All --- a/clients/Tests/All +++ b/clients/Tests/All @@ -1,4 +1,4 @@ exports -HAVE_FITS&HAVE_GEOM&HAVE_LIBR&HAVE_LIDAR&HAVE_NETCDF&HAVE_SHP?MAL-signatures +HAVE_FITS&HAVE_GEOM&HAVE_LIBR&HAVE_LIBPY3&HAVE_LIDAR&HAVE_NETCDF&HAVE_SHP&NOT_WIN32?MAL-signatures MERCURIAL?malcheck mclient-uri 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 @@ -64,7 +64,7 @@ stdout of test 'MAL-signatures` in direc % .%1, .%1, .%1, .%1, .%1 # table_name % module, function, signature, address, comment # name % clob, clob, clob, clob, clob # type -% 10, 28, 364, 38, 874 # length +% 12, 28, 364, 38, 874 # length [ "aggr", "allnotequal", "command aggr.allnotequal(l:bat[:any_1], r:bat[:any_1]):bit ", "SQLallnotequal;", "if all values in r are not equal to l return true, else if r has nil nil else false" ] [ "aggr", "anyequal", "pattern aggr.anyequal(l:any_1, r:any_1):bit ", "CMDvarEQ;", "" ] [ "aggr", "anyequal", "command aggr.anyequal(l:bat[:any_1], r:bat[:any_1]):bit ", "SQLanyequal;", "if any value in r is equal to l return true, else if r has nil nil else false" ] @@ -11242,6 +11242,14 @@ stdout of test 'MAL-signatures` in direc [ "batmtime", "year", "command batmtime.year(d:bat[:date]):bat[:int] ", "MTIMEdate_extract_year_bulk;", "" ] [ "batpcre", "replace", "command batpcre.replace(orig:bat[:str], pat:str, repl:str, flag:str):bat[:str] ", "PCREreplace_bat_wrap;", "" ] [ "batpcre", "replace_first", "command batpcre.replace_first(orig:bat[:str], pat:str, repl:str, flag:str):bat[:str] ", "PCREreplacefirst_bat_wrap;", "" ] +[ "batpyapi3", "eval", "unsafe pattern batpyapi3.eval(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalStd;", "Execute a simple Python script value" ] +[ "batpyapi3", "eval_aggr", "unsafe pattern batpyapi3.eval_aggr(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalAggr;", "grouped aggregates through Python" ] +[ "batpyapi3", "eval_loader", "unsafe pattern batpyapi3.eval_loader(fptr:ptr, expr:str):any... ", "PYAPI3PyAPIevalLoader;", "loader functions through Python" ] +[ "batpyapi3", "eval_loader", "unsafe pattern batpyapi3.eval_loader(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalLoader;", "loader functions through Python" ] +[ "batpyapi3", "subeval_aggr", "unsafe pattern batpyapi3.subeval_aggr(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalAggr;", "grouped aggregates through Python" ] +[ "batpyapi3map", "eval", "pattern batpyapi3map.eval(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalStdMap;", "Execute a simple Python script value" ] +[ "batpyapi3map", "eval_aggr", "pattern batpyapi3map.eval_aggr(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalAggrMap;", "grouped aggregates through Python" ] +[ "batpyapi3map", "subeval_aggr", "pattern batpyapi3map.subeval_aggr(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalAggrMap;", "grouped aggregates through Python" ] [ "batrapi", "eval", "pattern batrapi.eval(fptr:ptr, expr:str, arg:any...):any... ", "RAPIevalStd;", "Execute a simple R script value" ] [ "batrapi", "eval_aggr", "pattern batrapi.eval_aggr(fptr:ptr, expr:str, arg:any...):any... ", "RAPIevalAggr;", "grouped aggregates through R" ] [ "batrapi", "subeval_aggr", "pattern batrapi.subeval_aggr(fptr:ptr, expr:str, arg:any...):any... ", "RAPIevalAggr;", "grouped aggregates through R" ] @@ -13949,6 +13957,17 @@ stdout of test 'MAL-signatures` in direc [ "profiler", "starttrace", "pattern profiler.starttrace():void ", "CMDstartTrace;", "Start collecting trace information" ] [ "profiler", "stop", "pattern profiler.stop():void ", "CMDstopProfiler;", "Stop offline performance profiling" ] [ "profiler", "stoptrace", "pattern profiler.stoptrace():void ", "CMDstopTrace;", "Stop collecting trace information" ] +[ "pyapi3", "eval", "unsafe pattern pyapi3.eval(fptr:ptr, expr:str):any ", "PYAPI3PyAPIevalStd;", "Execute a simple Python script returning a single value" ] +[ "pyapi3", "eval", "unsafe pattern pyapi3.eval(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalStd;", "Execute a simple Python script value" ] +[ "pyapi3", "eval_aggr", "unsafe pattern pyapi3.eval_aggr(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalAggr;", "grouped aggregates through Python" ] +[ "pyapi3", "eval_loader", "unsafe pattern pyapi3.eval_loader(fptr:ptr, expr:str):any... ", "PYAPI3PyAPIevalLoader;", "loader functions through Python" ] +[ "pyapi3", "eval_loader", "unsafe pattern pyapi3.eval_loader(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalLoader;", "loader functions through Python" ] +[ "pyapi3", "prelude", "command pyapi3.prelude():void ", "PYAPI3PyAPIprelude;", "" ] +[ "pyapi3", "subeval_aggr", "unsafe pattern pyapi3.subeval_aggr(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalAggr;", "grouped aggregates through Python" ] +[ "pyapi3map", "eval", "pattern pyapi3map.eval(fptr:ptr, expr:str):any ", "PYAPI3PyAPIevalStdMap;", "Execute a simple Python script returning a single value" ] +[ "pyapi3map", "eval", "pattern pyapi3map.eval(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalStdMap;", "Execute a simple Python script value" ] +[ "pyapi3map", "eval_aggr", "pattern pyapi3map.eval_aggr(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalAggrMap;", "grouped aggregates through Python" ] +[ "pyapi3map", "subeval_aggr", "pattern pyapi3map.subeval_aggr(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalAggrMap;", "grouped aggregates through Python" ] [ "querylog", "append", "pattern querylog.append(q:str, pipe:str, usr:str, tick:timestamp):void ", "QLOGappend;", "Add a new query call to the query log" ] [ "querylog", "call", "pattern querylog.call(tick1:timestamp, tick2:timestamp, arg:str, tuples:lng, xtime:lng, rtime:lng, cpu:int, iowait:int):void ", "QLOGcall;", "Add a new query call to the query log" ] [ "querylog", "context", "command querylog.context(release:str, version:str, revision:str, uri:str):void ", "QLOGcontextNaive;", "Noop operation, just marking the query" ] @@ -14205,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;", "" ] @@ -14368,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 @@ -68,7 +68,7 @@ stdout of test 'MAL-signatures` in direc % .%1, .%1, .%1, .%1, .%1 # table_name % module, function, signature, address, comment # name % clob, clob, clob, clob, clob # type -% 10, 28, 364, 38, 874 # length +% 12, 28, 364, 38, 874 # length [ "aggr", "allnotequal", "command aggr.allnotequal(l:bat[:any_1], r:bat[:any_1]):bit ", "SQLallnotequal;", "if all values in r are not equal to l return true, else if r has nil nil else false" ] [ "aggr", "anyequal", "pattern aggr.anyequal(l:any_1, r:any_1):bit ", "CMDvarEQ;", "" ] [ "aggr", "anyequal", "command aggr.anyequal(l:bat[:any_1], r:bat[:any_1]):bit ", "SQLanyequal;", "if any value in r is equal to l return true, else if r has nil nil else false" ] @@ -15997,6 +15997,14 @@ stdout of test 'MAL-signatures` in direc [ "batmtime", "year", "command batmtime.year(d:bat[:date]):bat[:int] ", "MTIMEdate_extract_year_bulk;", "" ] [ "batpcre", "replace", "command batpcre.replace(orig:bat[:str], pat:str, repl:str, flag:str):bat[:str] ", "PCREreplace_bat_wrap;", "" ] [ "batpcre", "replace_first", "command batpcre.replace_first(orig:bat[:str], pat:str, repl:str, flag:str):bat[:str] ", "PCREreplacefirst_bat_wrap;", "" ] +[ "batpyapi3", "eval", "unsafe pattern batpyapi3.eval(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalStd;", "Execute a simple Python script value" ] +[ "batpyapi3", "eval_aggr", "unsafe pattern batpyapi3.eval_aggr(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalAggr;", "grouped aggregates through Python" ] +[ "batpyapi3", "eval_loader", "unsafe pattern batpyapi3.eval_loader(fptr:ptr, expr:str):any... ", "PYAPI3PyAPIevalLoader;", "loader functions through Python" ] +[ "batpyapi3", "eval_loader", "unsafe pattern batpyapi3.eval_loader(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalLoader;", "loader functions through Python" ] +[ "batpyapi3", "subeval_aggr", "unsafe pattern batpyapi3.subeval_aggr(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalAggr;", "grouped aggregates through Python" ] +[ "batpyapi3map", "eval", "pattern batpyapi3map.eval(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalStdMap;", "Execute a simple Python script value" ] +[ "batpyapi3map", "eval_aggr", "pattern batpyapi3map.eval_aggr(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalAggrMap;", "grouped aggregates through Python" ] +[ "batpyapi3map", "subeval_aggr", "pattern batpyapi3map.subeval_aggr(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalAggrMap;", "grouped aggregates through Python" ] [ "batrapi", "eval", "pattern batrapi.eval(fptr:ptr, expr:str, arg:any...):any... ", "RAPIevalStd;", "Execute a simple R script value" ] [ "batrapi", "eval_aggr", "pattern batrapi.eval_aggr(fptr:ptr, expr:str, arg:any...):any... ", "RAPIevalAggr;", "grouped aggregates through R" ] [ "batrapi", "subeval_aggr", "pattern batrapi.subeval_aggr(fptr:ptr, expr:str, arg:any...):any... ", "RAPIevalAggr;", "grouped aggregates through R" ] @@ -19401,6 +19409,17 @@ stdout of test 'MAL-signatures` in direc [ "profiler", "starttrace", "pattern profiler.starttrace():void ", "CMDstartTrace;", "Start collecting trace information" ] [ "profiler", "stop", "pattern profiler.stop():void ", "CMDstopProfiler;", "Stop offline performance profiling" ] [ "profiler", "stoptrace", "pattern profiler.stoptrace():void ", "CMDstopTrace;", "Stop collecting trace information" ] +[ "pyapi3", "eval", "unsafe pattern pyapi3.eval(fptr:ptr, expr:str):any ", "PYAPI3PyAPIevalStd;", "Execute a simple Python script returning a single value" ] +[ "pyapi3", "eval", "unsafe pattern pyapi3.eval(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalStd;", "Execute a simple Python script value" ] +[ "pyapi3", "eval_aggr", "unsafe pattern pyapi3.eval_aggr(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalAggr;", "grouped aggregates through Python" ] +[ "pyapi3", "eval_loader", "unsafe pattern pyapi3.eval_loader(fptr:ptr, expr:str):any... ", "PYAPI3PyAPIevalLoader;", "loader functions through Python" ] +[ "pyapi3", "eval_loader", "unsafe pattern pyapi3.eval_loader(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalLoader;", "loader functions through Python" ] +[ "pyapi3", "prelude", "command pyapi3.prelude():void ", "PYAPI3PyAPIprelude;", "" ] +[ "pyapi3", "subeval_aggr", "unsafe pattern pyapi3.subeval_aggr(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalAggr;", "grouped aggregates through Python" ] +[ "pyapi3map", "eval", "pattern pyapi3map.eval(fptr:ptr, expr:str):any ", "PYAPI3PyAPIevalStdMap;", "Execute a simple Python script returning a single value" ] +[ "pyapi3map", "eval", "pattern pyapi3map.eval(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalStdMap;", "Execute a simple Python script value" ] +[ "pyapi3map", "eval_aggr", "pattern pyapi3map.eval_aggr(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalAggrMap;", "grouped aggregates through Python" ] +[ "pyapi3map", "subeval_aggr", "pattern pyapi3map.subeval_aggr(fptr:ptr, expr:str, arg:any...):any... ", "PYAPI3PyAPIevalAggrMap;", "grouped aggregates through Python" ] [ "querylog", "append", "pattern querylog.append(q:str, pipe:str, usr:str, tick:timestamp):void ", "QLOGappend;", "Add a new query call to the query log" ] [ "querylog", "call", "pattern querylog.call(tick1:timestamp, tick2:timestamp, arg:str, tuples:lng, xtime:lng, rtime:lng, cpu:int, iowait:int):void ", "QLOGcall;", "Add a new query call to the query log" ] [ "querylog", "context", "command querylog.context(release:str, version:str, revision:str, uri:str):void ", "QLOGcontextNaive;", "Noop operation, just marking the query" ] @@ -19675,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;", "" ] @@ -19842,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/SingleServer b/clients/Tests/SingleServer --- a/clients/Tests/SingleServer +++ b/clients/Tests/SingleServer @@ -1,2 +1,3 @@ ---set embedded_py=2 +--set embedded_py=3 --set embedded_r=true +--set embedded_c=true 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); @@ -2153,7 +2151,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); @@ -2490,7 +2487,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.1 b/clients/mapiclient/mclient.1 --- a/clients/mapiclient/mclient.1 +++ b/clients/mapiclient/mclient.1 @@ -169,8 +169,12 @@ All timings are reported on stderr. .br \fBNote\fP that the client-measured wall-clock time is reported per query \fBonly\fP when options \fB\-\-interactive\fP or \fB\-\-echo\fP are used, -because only then does mclient send individual lines (statements) of the SQL -script to the server. Otherwise, when mclient sends the SQL script in +because only then does +.I mclient +send individual lines (statements) of the SQL +script to the server. Otherwise, when +.I mclient +sends the SQL script in large(r) batch(es), only the total wall-clock time per batch is measured and reported. The server-measured detailed performance timings are always measured and reported per query. @@ -454,7 +458,9 @@ is the name of the database. mclient \-d $db \-s \(dqCOPY INTO $table FROM '$file' USING DELIMITERS ',',E'\e\en','\e\(dq'\(dq .PP Efficiently import data from a CSV file into a table when the file is -to be read by mclient (e.g. the server has no access to the file). +to be read by +.I mclient +(e.g. the server has no access to the file). .I $file is the (absolute or relative) path name of the file, .I $table 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)) { \ _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list