Changeset: c859aeb0e378 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c859aeb0e378 Removed Files: monetdb5/optimizer/opt_statistics.c monetdb5/optimizer/opt_statistics.h Modified Files: clients/Tests/MAL-signatures.stable.out clients/Tests/MAL-signatures.stable.out.int128 clients/Tests/exports.stable.out clients/mapiclient/eventparser.c clients/mapiclient/eventparser.h gdk/gdk.h gdk/gdk_align.c gdk/gdk_atoms.c gdk/gdk_bat.c gdk/gdk_bbp.c gdk/gdk_hash.c gdk/gdk_heap.c gdk/gdk_logger.c gdk/gdk_logger.h gdk/gdk_private.h gdk/gdk_storage.c gdk/gdk_tm.c gdk/gdk_utils.c gdk/gdk_utils.h geom/monetdb5/geom.c geom/monetdb5/geomBulk.c geom/monetdb5/geom_upgrade.c monetdb5/extras/mal_optimizer_template/opt_sql_append.c monetdb5/mal/mal.c monetdb5/mal/mal_authorize.c monetdb5/mal/mal_client.c monetdb5/mal/mal_dataflow.c monetdb5/mal/mal_factory.c monetdb5/mal/mal_function.c monetdb5/mal/mal_function.h monetdb5/mal/mal_instruction.c monetdb5/mal/mal_interpreter.c monetdb5/mal/mal_listing.c monetdb5/mal/mal_listing.h monetdb5/mal/mal_profiler.c monetdb5/mal/mal_resolve.c monetdb5/mal/mal_resource.c monetdb5/modules/atoms/color.c monetdb5/modules/atoms/mtime.c monetdb5/modules/atoms/str.c monetdb5/modules/atoms/uuid.c monetdb5/modules/kernel/aggr.c monetdb5/modules/kernel/bat5.c monetdb5/modules/mal/batExtensions.c monetdb5/modules/mal/batcalc.c monetdb5/modules/mal/bbp.c monetdb5/modules/mal/calc.c monetdb5/modules/mal/clients.c monetdb5/modules/mal/groupby.c monetdb5/modules/mal/groupby.h monetdb5/modules/mal/inspect.c monetdb5/modules/mal/json_util.h monetdb5/modules/mal/mal_mapi.c monetdb5/modules/mal/manifold.c monetdb5/modules/mal/mdb.c monetdb5/modules/mal/oltp.c monetdb5/modules/mal/orderidx.c monetdb5/modules/mal/querylog.c monetdb5/modules/mal/remote.c monetdb5/modules/mal/tablet.c monetdb5/optimizer/Makefile.ag monetdb5/optimizer/opt_aliases.c monetdb5/optimizer/opt_aliases.h monetdb5/optimizer/opt_candidates.c monetdb5/optimizer/opt_candidates.h monetdb5/optimizer/opt_coercion.c monetdb5/optimizer/opt_coercion.h monetdb5/optimizer/opt_commonTerms.c monetdb5/optimizer/opt_commonTerms.h monetdb5/optimizer/opt_constants.c monetdb5/optimizer/opt_constants.h monetdb5/optimizer/opt_costModel.c monetdb5/optimizer/opt_costModel.h monetdb5/optimizer/opt_dataflow.c monetdb5/optimizer/opt_dataflow.h monetdb5/optimizer/opt_datavaults.c monetdb5/optimizer/opt_datavaults.h monetdb5/optimizer/opt_deadcode.c monetdb5/optimizer/opt_deadcode.h monetdb5/optimizer/opt_emptybind.c monetdb5/optimizer/opt_emptybind.h monetdb5/optimizer/opt_evaluate.c monetdb5/optimizer/opt_evaluate.h monetdb5/optimizer/opt_garbageCollector.c monetdb5/optimizer/opt_garbageCollector.h monetdb5/optimizer/opt_generator.c monetdb5/optimizer/opt_generator.h monetdb5/optimizer/opt_inline.c monetdb5/optimizer/opt_inline.h monetdb5/optimizer/opt_jit.c monetdb5/optimizer/opt_jit.h monetdb5/optimizer/opt_json.c monetdb5/optimizer/opt_json.h monetdb5/optimizer/opt_macro.c monetdb5/optimizer/opt_macro.h monetdb5/optimizer/opt_matpack.c monetdb5/optimizer/opt_matpack.h monetdb5/optimizer/opt_mergetable.c monetdb5/optimizer/opt_mergetable.h monetdb5/optimizer/opt_mitosis.c monetdb5/optimizer/opt_mitosis.h monetdb5/optimizer/opt_multiplex.c monetdb5/optimizer/opt_multiplex.h monetdb5/optimizer/opt_oltp.c monetdb5/optimizer/opt_oltp.h monetdb5/optimizer/opt_profiler.c monetdb5/optimizer/opt_profiler.h monetdb5/optimizer/opt_projectionpath.c monetdb5/optimizer/opt_projectionpath.h monetdb5/optimizer/opt_pushselect.c monetdb5/optimizer/opt_pushselect.h monetdb5/optimizer/opt_querylog.c monetdb5/optimizer/opt_querylog.h monetdb5/optimizer/opt_reduce.c monetdb5/optimizer/opt_reduce.h monetdb5/optimizer/opt_remap.c monetdb5/optimizer/opt_remap.h monetdb5/optimizer/opt_remoteQueries.c monetdb5/optimizer/opt_remoteQueries.h monetdb5/optimizer/opt_reorder.c monetdb5/optimizer/opt_reorder.h monetdb5/optimizer/opt_support.c monetdb5/optimizer/opt_support.h monetdb5/optimizer/opt_volcano.c monetdb5/optimizer/opt_volcano.h monetdb5/optimizer/opt_wrapper.c monetdb5/optimizer/optimizer.mal monetdb5/scheduler/run_memo.c monetdb5/scheduler/run_pipeline.c monetdb5/scheduler/srvpool.c sql/backends/monet5/sql_execute.c sql/backends/monet5/sql_orderidx.c sql/backends/monet5/sql_scenario.c sql/backends/monet5/sql_statistics.c sql/backends/monet5/sql_upgrades.c sql/benchmarks/tpch/01.sql sql/benchmarks/tpch/02.sql sql/benchmarks/tpch/03.sql sql/benchmarks/tpch/04.sql sql/benchmarks/tpch/05.sql sql/benchmarks/tpch/06.sql sql/benchmarks/tpch/07.sql sql/benchmarks/tpch/08.sql sql/benchmarks/tpch/09.sql sql/benchmarks/tpch/10.sql sql/benchmarks/tpch/11.sql sql/benchmarks/tpch/12.sql sql/benchmarks/tpch/13.sql sql/benchmarks/tpch/14.sql sql/benchmarks/tpch/15.sql sql/benchmarks/tpch/16.sql sql/benchmarks/tpch/17.sql sql/benchmarks/tpch/18.sql sql/benchmarks/tpch/19.sql sql/benchmarks/tpch/20.sql sql/benchmarks/tpch/21.sql sql/benchmarks/tpch/22.sql sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out sql/benchmarks/tpch/LOCKED/Tests/01-22.stable.out.int128 sql/benchmarks/tpch/LOCKED/Tests/01.stable.out sql/benchmarks/tpch/LOCKED/Tests/01.stable.out.int128 sql/benchmarks/tpch/LOCKED/Tests/02.stable.out sql/benchmarks/tpch/LOCKED/Tests/03.stable.out sql/benchmarks/tpch/LOCKED/Tests/03.stable.out.int128 sql/benchmarks/tpch/LOCKED/Tests/04.stable.out sql/benchmarks/tpch/LOCKED/Tests/05.stable.out sql/benchmarks/tpch/LOCKED/Tests/05.stable.out.int128 sql/benchmarks/tpch/LOCKED/Tests/06.stable.out sql/benchmarks/tpch/LOCKED/Tests/06.stable.out.int128 sql/benchmarks/tpch/LOCKED/Tests/07.stable.out sql/benchmarks/tpch/LOCKED/Tests/07.stable.out.int128 sql/benchmarks/tpch/LOCKED/Tests/08.stable.out sql/benchmarks/tpch/LOCKED/Tests/08.stable.out.int128 sql/benchmarks/tpch/LOCKED/Tests/09.stable.out sql/benchmarks/tpch/LOCKED/Tests/09.stable.out.int128 sql/benchmarks/tpch/LOCKED/Tests/10.stable.out sql/benchmarks/tpch/LOCKED/Tests/10.stable.out.int128 sql/benchmarks/tpch/LOCKED/Tests/11.stable.out sql/benchmarks/tpch/LOCKED/Tests/11.stable.out.int128 sql/benchmarks/tpch/LOCKED/Tests/12.stable.out sql/benchmarks/tpch/LOCKED/Tests/12.stable.out.int128 sql/benchmarks/tpch/LOCKED/Tests/13.stable.out sql/benchmarks/tpch/LOCKED/Tests/14.stable.out sql/benchmarks/tpch/LOCKED/Tests/14.stable.out.int128 sql/benchmarks/tpch/LOCKED/Tests/15.stable.out sql/benchmarks/tpch/LOCKED/Tests/15.stable.out.int128 sql/benchmarks/tpch/LOCKED/Tests/16.stable.out sql/benchmarks/tpch/LOCKED/Tests/17.stable.out sql/benchmarks/tpch/LOCKED/Tests/17.stable.out.int128 sql/benchmarks/tpch/LOCKED/Tests/18.stable.out sql/benchmarks/tpch/LOCKED/Tests/18.stable.out.int128 sql/benchmarks/tpch/LOCKED/Tests/19.stable.out sql/benchmarks/tpch/LOCKED/Tests/19.stable.out.int128 sql/benchmarks/tpch/LOCKED/Tests/20.stable.out sql/benchmarks/tpch/LOCKED/Tests/21.stable.out sql/benchmarks/tpch/LOCKED/Tests/21.stable.out.int128 sql/benchmarks/tpch/LOCKED/Tests/22.stable.out sql/benchmarks/tpch/LOCKED/Tests/22.stable.out.int128 sql/benchmarks/tpch/Tests/01-22.stable.out sql/benchmarks/tpch/Tests/01-22.stable.out.int128 sql/benchmarks/tpch/Tests/01.stable.out sql/benchmarks/tpch/Tests/01.stable.out.int128 sql/benchmarks/tpch/Tests/02.stable.out sql/benchmarks/tpch/Tests/03.stable.out sql/benchmarks/tpch/Tests/03.stable.out.int128 sql/benchmarks/tpch/Tests/04.stable.out sql/benchmarks/tpch/Tests/05.stable.out sql/benchmarks/tpch/Tests/05.stable.out.int128 sql/benchmarks/tpch/Tests/06.stable.out sql/benchmarks/tpch/Tests/06.stable.out.int128 sql/benchmarks/tpch/Tests/07.stable.out sql/benchmarks/tpch/Tests/07.stable.out.int128 sql/benchmarks/tpch/Tests/08.stable.out sql/benchmarks/tpch/Tests/08.stable.out.int128 sql/benchmarks/tpch/Tests/09.stable.out sql/benchmarks/tpch/Tests/09.stable.out.int128 sql/benchmarks/tpch/Tests/10.stable.out sql/benchmarks/tpch/Tests/10.stable.out.int128 sql/benchmarks/tpch/Tests/11.stable.out sql/benchmarks/tpch/Tests/11.stable.out.int128 sql/benchmarks/tpch/Tests/12.stable.out sql/benchmarks/tpch/Tests/12.stable.out.int128 sql/benchmarks/tpch/Tests/13.stable.out sql/benchmarks/tpch/Tests/14.stable.out sql/benchmarks/tpch/Tests/14.stable.out.int128 sql/benchmarks/tpch/Tests/15.stable.out sql/benchmarks/tpch/Tests/15.stable.out.int128 sql/benchmarks/tpch/Tests/16.stable.out sql/benchmarks/tpch/Tests/17.stable.out sql/benchmarks/tpch/Tests/17.stable.out.int128 sql/benchmarks/tpch/Tests/18.stable.out sql/benchmarks/tpch/Tests/18.stable.out.int128 sql/benchmarks/tpch/Tests/19.stable.out sql/benchmarks/tpch/Tests/19.stable.out.int128 sql/benchmarks/tpch/Tests/20.stable.out sql/benchmarks/tpch/Tests/21.stable.out sql/benchmarks/tpch/Tests/22.stable.out sql/benchmarks/tpch/Tests/22.stable.out.int128 sql/scripts/25_debug.sql sql/storage/bat/bat_logger.c sql/storage/bat/bat_logger.h sql/storage/bat/bat_storage.c sql/storage/bat/bat_storage.h sql/storage/bat/bat_table.c sql/storage/bat/bat_table.h sql/storage/sql_storage.h sql/storage/store.c sql/test/BugTracker-2010/Tests/new-readonly-db.Bug-2695.stable.err sql/test/BugTracker-2010/Tests/new-readonly-db.Bug-2695.stable.out sql/test/Dump/Tests/dump.stable.out sql/test/Dump/Tests/load.sql sql/test/Dump/Tests/load.stable.out sql/test/Tests/systemfunctions.stable.out sql/test/Tests/systemfunctions.stable.out.int128 sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade/Tests/upgrade.stable.out sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128 sql/test/emptydb/Tests/check.stable.out sql/test/emptydb/Tests/check.stable.out.32bit sql/test/emptydb/Tests/check.stable.out.int128 sql/test/leaks/Tests/check0.stable.out sql/test/leaks/Tests/check0.stable.out.int128 sql/test/leaks/Tests/check1.stable.out sql/test/leaks/Tests/check2.stable.out sql/test/leaks/Tests/check3.stable.out sql/test/leaks/Tests/check4.stable.out sql/test/leaks/Tests/check5.stable.out sql/test/leaks/Tests/select1.stable.out.int128 sql/test/leaks/Tests/select2.stable.out.int128 sql/test/leaks/Tests/temp1.stable.out sql/test/leaks/Tests/temp1.stable.out.int128 sql/test/leaks/Tests/temp2.stable.out sql/test/leaks/Tests/temp2.stable.out.int128 sql/test/leaks/Tests/temp3.stable.out sql/test/leaks/Tests/temp3.stable.out.int128 sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade/Tests/upgrade.stable.out sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128 tools/mserver/mserver5.c tools/mserver/shutdowntest.c Branch: data-vaults Log Message:
Merge with default The API for optimizers has changed, and some changes were needed for this to compile. diffs (truncated from 13810 to 300 lines): 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 @@ -7767,8 +7767,8 @@ Ready. [ "inspect", "getSize", "pattern inspect.getSize(mod:str, fcn:str):lng ", "INSPECTgetFunctionSize;", "Return the storage size for a function (in bytes)." ] [ "inspect", "getSize", "pattern inspect.getSize():lng ", "INSPECTgetSize;", "Return the storage size for the current function (in bytes)." ] [ "inspect", "getSource", "pattern inspect.getSource(mod:str, fcn:str):str ", "INSPECTgetSource;", "Return the original input for a function." ] -[ "inspect", "getStatistics", "command inspect.getStatistics(nme:str):bat[:any_2] ", "QOTgetStatistics;", "Get optimizer property statistics \nsuch as #calls, #total actions, #total time" ] [ "inspect", "getType", "pattern inspect.getType(v:any_1):str ", "INSPECTtypeName;", "Return the concrete type of a variable (expression)." ] +[ "inspect", "optimizer_stats", "pattern inspect.optimizer_stats() (X_0:bat[:str], X_1:bat[:int], X_2:bat[:lng]) ", "OPTstatistics;", "Get optimizer use statistics, i.e. calls and total time" ] [ "io", "export", "command io.export(b:bat[:any_2], filepath:str):void ", "IOexport;", "Export a BAT as ASCII to a file. If the 'filepath' is not absolute, it\n is put into the $DBPATH directory. Success of failure is indicated." ] [ "io", "import", "command io.import(b:bat[:any_2], filepath:str):void ", "IOimport;", "Import a BAT from an ASCII dump. The tuples are appended to the\n first argument. Its signature must match the dump,\n else parsing errors will occur as an exception." ] [ "io", "print", "pattern io.print(val:any_1):void ", "IOprint_val;", "Print a MAL value." ] 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 @@ -10123,8 +10123,8 @@ Ready. [ "inspect", "getSize", "pattern inspect.getSize(mod:str, fcn:str):lng ", "INSPECTgetFunctionSize;", "Return the storage size for a function (in bytes)." ] [ "inspect", "getSize", "pattern inspect.getSize():lng ", "INSPECTgetSize;", "Return the storage size for the current function (in bytes)." ] [ "inspect", "getSource", "pattern inspect.getSource(mod:str, fcn:str):str ", "INSPECTgetSource;", "Return the original input for a function." ] -[ "inspect", "getStatistics", "command inspect.getStatistics(nme:str):bat[:any_2] ", "QOTgetStatistics;", "Get optimizer property statistics \nsuch as #calls, #total actions, #total time" ] [ "inspect", "getType", "pattern inspect.getType(v:any_1):str ", "INSPECTtypeName;", "Return the concrete type of a variable (expression)." ] +[ "inspect", "optimizer_stats", "pattern inspect.optimizer_stats() (X_0:bat[:str], X_1:bat[:int], X_2:bat[:lng]) ", "OPTstatistics;", "Get optimizer use statistics, i.e. calls and total time" ] [ "io", "export", "command io.export(b:bat[:any_2], filepath:str):void ", "IOexport;", "Export a BAT as ASCII to a file. If the 'filepath' is not absolute, it\n is put into the $DBPATH directory. Success of failure is indicated." ] [ "io", "import", "command io.import(b:bat[:any_2], filepath:str):void ", "IOimport;", "Import a BAT from an ASCII dump. The tuples are appended to the\n first argument. Its signature must match the dump,\n else parsing errors will occur as an exception." ] [ "io", "print", "pattern io.print(val:any_1):void ", "IOprint_val;", "Print a MAL value." ] 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 @@ -152,7 +152,6 @@ BAT *BATmergecand(BAT *a, BAT *b); void *BATmin(BAT *b, void *aggr); gdk_return BATmode(BAT *b, int onoff); void BATmsync(BAT *b); -int BATname(BAT *b, const char *nme); int BATordered(BAT *b); int BATordered_rev(BAT *b); gdk_return BATorderidx(BAT *b, int stable); @@ -220,6 +219,7 @@ size_t GDKbatcopysize(BAT *bat, str coln size_t GDKbatread(char *src, BAT **bat, str *colname); gdk_return GDKchangesemval(int sem_id, int number, int change, str *msg); gdk_return GDKchangesemval_timeout(int sem_id, int number, int change, int timeout_mseconds, bool *succeed, str *msg); +void GDKclrerr(void); gdk_return GDKcreatedir(const char *nme); gdk_return GDKcreatesem(int id, int count, int *semid, str *msg); int GDKdebug; @@ -265,7 +265,7 @@ void GDKregister(MT_Id pid); gdk_return GDKreleasemmap(void *ptr, size_t size, size_t id, str *msg); gdk_return GDKreleasesem(int sem_id, str *msg); void GDKreset(int status, int exit); -void GDKsetenv(str name, str value); +gdk_return GDKsetenv(const char *name, const char *value); void GDKsetmallocsuccesscount(lng count); ssize_t GDKstrFromStr(unsigned char *dst, const unsigned char *src, ssize_t len); str GDKstrdup(const char *s) __attribute__((__warn_unused_result__)); @@ -409,27 +409,27 @@ const int int_nil; int lngFromStr(const char *src, int *len, lng **dst); int lngToStr(str *dst, int *len, const lng *src); const lng lng_nil; -int log_abort(logger *lg); -int log_bat(logger *lg, BAT *b, const char *n); -int log_bat_clear(logger *lg, const char *n); -int log_bat_persists(logger *lg, BAT *b, const char *n); -int log_bat_transient(logger *lg, const char *n); -int log_delta(logger *lg, BAT *uid, BAT *uval, const char *n); -int log_sequence(logger *lg, int seq, lng id); -int log_tend(logger *lg); -int log_tstart(logger *lg); -log_bid logger_add_bat(logger *lg, BAT *b, const char *name); +gdk_return log_abort(logger *lg); +gdk_return log_bat(logger *lg, BAT *b, const char *n); +gdk_return log_bat_clear(logger *lg, const char *n); +gdk_return log_bat_persists(logger *lg, BAT *b, const char *n); +gdk_return log_bat_transient(logger *lg, const char *n); +gdk_return log_delta(logger *lg, BAT *uid, BAT *uval, const char *n); +gdk_return log_sequence(logger *lg, int seq, lng id); +gdk_return log_tend(logger *lg); +gdk_return log_tstart(logger *lg); +gdk_return logger_add_bat(logger *lg, BAT *b, const char *name) __attribute__((__warn_unused_result__)); lng logger_changes(logger *lg); -int logger_cleanup(logger *lg, int keep_persisted_log_files); +gdk_return logger_cleanup(logger *lg, int keep_persisted_log_files); logger *logger_create(int debug, const char *fn, const char *logdir, int version, preversionfix_fptr prefuncp, postversionfix_fptr postfuncp, int keep_persisted_log_files); logger *logger_create_shared(int debug, const char *fn, const char *logdir, const char *slave_logdir, int version, preversionfix_fptr prefuncp, postversionfix_fptr postfuncp); -void logger_del_bat(logger *lg, log_bid bid); +gdk_return logger_del_bat(logger *lg, log_bid bid) __attribute__((__warn_unused_result__)); void logger_destroy(logger *lg); -int logger_exit(logger *lg); +gdk_return logger_exit(logger *lg); log_bid logger_find_bat(logger *lg, const char *name); lng logger_read_last_transaction_id(logger *lg, char *dir, char *logger_file, int role); -int logger_reload(logger *lg); -int logger_restart(logger *lg); +gdk_return logger_reload(logger *lg); +gdk_return logger_restart(logger *lg); int logger_sequence(logger *lg, int seq, lng *id); void *mdlopen(const char *library, int mode); int mo_add_option(opt **Set, int setlen, opt_kind kind, const char *name, const char *value); @@ -1539,42 +1539,43 @@ str OLTPrelease(Client cntxt, MalBlkPtr str OLTPreset(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); str OLTPtable(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); void OPTaliasRemap(InstrPtr p, int *alias); -int OPTaliasesImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); -int OPTcandidatesImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); -int OPTcoercionImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -int OPTcommonTermsImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -int OPTconstantsImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); -int OPTcostModelImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -int OPTdataflowImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); -int OPTdatavaultsImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -int OPTdeadcodeImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -int OPTemptybindImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); -int OPTevaluateImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -int OPTgarbageCollectorImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -int OPTgeneratorImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -int OPTinlineImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +str OPTaliasesImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +str OPTcandidatesImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +str OPTcoercionImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str OPTcommonTermsImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str OPTconstantsImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +str OPTcostModelImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str OPTdataflowImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +str OPTdatavaultsImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str OPTdeadcodeImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str OPTemptybindImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +str OPTevaluateImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str OPTgarbageCollectorImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str OPTgeneratorImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str OPTinlineImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); int OPTisAlias(InstrPtr p); -int OPTjitImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); -int OPTjsonImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str OPTjitImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +str OPTjsonImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); str OPTmacro(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); -int OPTmacroImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); -int OPTmatpackImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -int OPTmergetableImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); -int OPTmitosisImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); -int OPTmultiplexImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str OPTmacroImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +str OPTmatpackImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str OPTmergetableImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +str OPTmitosisImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +str OPTmultiplexImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); str OPTmultiplexSimple(Client cntxt, MalBlkPtr mb); -int OPToltpImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str OPToltpImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); str OPTorcam(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); -int OPTorcamImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); -int OPTprofilerImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); -int OPTprojectionpathImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); -int OPTpushselectImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -int OPTquerylogImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -int OPTreduceImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); -int OPTremapImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -int OPTremoteQueriesImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -int OPTreorderImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); -int OPTvolcanoImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +str OPTorcamImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +str OPTprofilerImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +str OPTprojectionpathImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +str OPTpushselectImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str OPTquerylogImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str OPTreduceImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +str OPTremapImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str OPTremoteQueriesImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); +str OPTreorderImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +str OPTstatistics(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); +str OPTvolcanoImplementation(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); str OPTwrapper(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); str PCREilike2(bit *ret, const str *s, const str *pat); str PCREilike3(bit *ret, const str *s, const str *pat, const str *esc); @@ -1610,10 +1611,7 @@ str QLOGenable(void *ret); str QLOGenableThreshold(void *ret, int *threshold); int QLOGisset(void); str QLOGissetFcn(int *ret); -str QOTgetStatistics(bat *ret, str *nme); str QOToptimize(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); -void QOTstatisticsExit(void); -void QOTupdateStatistics(str nme, int prop, lng val); QueryQueue QRYqueue; str RMTbatload(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); str RMTbincopyfrom(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci); @@ -2077,6 +2075,8 @@ void finishSessionProfiler(Client cntxt) str firstnRef; Module fixModule(Module scope, str nme); int fndConstant(MalBlkPtr mb, const ValRecord *cst, int depth); +void fprintFunction(FILE *fd, MalBlkPtr mb, MalStkPtr stk, int flg); +void fprintInstruction(FILE *fd, MalBlkPtr mb, MalStkPtr stk, InstrPtr p, int flg); void freeException(str); void freeInstruction(InstrPtr p); void freeMalBlk(MalBlkPtr mb); @@ -2345,7 +2345,6 @@ int open_block_stream(Stream *S, Stream str open_block_streamwrap(Stream *S, Stream *is); str operatorName(int i); str optimizeMALBlock(Client cntxt, MalBlkPtr mb); -str optimizerCheck(Client cntxt, MalBlkPtr mb, str name, int actions, lng usec); int optimizerIsApplied(MalBlkPtr mb, str name); str optimizerRef; str optimizer_prelude(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr p); diff --git a/clients/mapiclient/eventparser.c b/clients/mapiclient/eventparser.c --- a/clients/mapiclient/eventparser.c +++ b/clients/mapiclient/eventparser.c @@ -27,6 +27,8 @@ extern char *strptime(const char *, cons #include "strptime.c" #endif +#define DATETIME_CHAR_LENGTH 27 + static void clearArguments(void) { @@ -112,6 +114,8 @@ resetEventRecord(EventRecord *ev) if( ev->stmt) free(ev->stmt); if( ev->fcn) free(ev->fcn); if( ev->numa) free(ev->numa); + if(ev->beauty) free(ev->beauty); + if(ev->prereq) free(ev->prereq); memset( (char*) ev, 0, sizeof(EventRecord)); ev->eventnr = -1; clearArguments(); @@ -173,9 +177,7 @@ int keyvalueparser(char *txt, EventRecord *ev) { char *c, *s, *key, *val; - struct tm stm; - - c= txt; + c = txt; if( strstr(c,"\"argument\":") || strstr(c,"\"result\":")) return parseArgument(txt,ev); @@ -205,20 +207,35 @@ keyvalueparser(char *txt, EventRecord *e } else val =c; if( strstr(key,"clk")){ - ev->clk = atol(val); + ev->clk = atol(val); return 0; } if( strstr(key,"ctime")){ - /* convert time to epoch in seconds*/ - ev->time= strdup(val); - memset(&stm, 0, sizeof(struct tm)); - c = strptime(val + 1, "%H:%M:%S", &stm); - ev->clkticks = (((lng) stm.tm_hour * 60 + stm.tm_min) * 60 + stm.tm_sec) * 1000000; - c= strchr(val,'.'); + time_t sec; + struct tm curr_time; + + c = strchr(val,'.'); + if (c != NULL) { + *c = '\0'; + c++; + } + + sec = atol(val); +#ifdef HAVE_LOCALTIME_R + (void)localtime_r(&sec, &curr_time); +#else + curr_time = *localtime(&sec); +#endif + ev->time = malloc(DATETIME_CHAR_LENGTH*sizeof(char)); + snprintf(ev->time, DATETIME_CHAR_LENGTH, "%d/%02d/%02d %02d:%02d:%02d.%s", + curr_time.tm_year + 1900, curr_time.tm_mon, curr_time.tm_mday, + curr_time.tm_hour, curr_time.tm_min, curr_time.tm_sec, + c); + ev->clkticks = sec * 1000000; if (c != NULL) { lng usec; /* microseconds */ - usec = strtoll(c + 1, NULL, 10); + usec = strtoll(c, NULL, 10); assert(usec >= 0 && usec < 1000000); ev->clkticks += usec; } diff --git a/clients/mapiclient/eventparser.h b/clients/mapiclient/eventparser.h --- a/clients/mapiclient/eventparser.h +++ b/clients/mapiclient/eventparser.h @@ -29,15 +29,11 @@ #include <signal.h> #include <unistd.h> -#ifdef TIME_WITH_SYS_TIME -# include <sys/time.h> -# include <time.h> -#else -# ifdef HAVE_SYS_TIME_H -# include <sys/time.h> -# else -# include <time.h> -# endif +#ifdef HAVE_SYS_TIME_H +#include <sys/time.h> +#endif +#ifdef HAVE_TIME_H +#include <time.h> #endif _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list