Changeset: c6dada6109ea for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c6dada6109ea Added Files: sql/test/BugTracker-2017/Tests/date_to_str.Bug-6467.sql sql/test/BugTracker-2017/Tests/date_to_str.Bug-6467.stable.err sql/test/BugTracker-2017/Tests/date_to_str.Bug-6467.stable.out sql/test/BugTracker-2017/Tests/limit.Bug-6322.sql sql/test/BugTracker-2017/Tests/limit.Bug-6322.stable.err sql/test/BugTracker-2017/Tests/limit.Bug-6322.stable.out sql/test/BugTracker-2017/Tests/python_loader_clobbers_default_with_null.Bug-6464.sql sql/test/BugTracker-2017/Tests/python_loader_clobbers_default_with_null.Bug-6464.stable.err sql/test/BugTracker-2017/Tests/python_loader_clobbers_default_with_null.Bug-6464.stable.out sql/test/BugTracker-2017/Tests/skip_problem_best_effort.Bug-6442.sql sql/test/BugTracker-2017/Tests/skip_problem_best_effort.Bug-6442.stable.err sql/test/BugTracker-2017/Tests/skip_problem_best_effort.Bug-6442.stable.out sql/test/mergetables/Tests/mergedb.Bug-6820.reqtests sql/test/mergetables/Tests/mergedb_drop.reqtests sql/test/mergetables/Tests/qlsmith-exist-lateral.reqtests sql/test/mergetables/Tests/sqlsmith-apply-outer-join-or.sql sql/test/mergetables/Tests/sqlsmith-apply-outer-join-or.stable.err sql/test/mergetables/Tests/sqlsmith-apply-outer-join-or.stable.out sql/test/mergetables/Tests/sqlsmith-exist-lateral.reqtests sql/test/mergetables/Tests/sqlsmith-exist-lateral.sql sql/test/mergetables/Tests/sqlsmith-exist-lateral.stable.err sql/test/mergetables/Tests/sqlsmith-exist-lateral.stable.out sql/test/mergetables/Tests/sqlsmith.Bug-6426.reqtests sql/test/mergetables/Tests/sqlsmith.Bug-6451.reqtests sql/test/mergetables/Tests/sqlsmith.Bug-6453.reqtests sql/test/mergetables/Tests/sqlsmith.Bug-6455.reqtests sql/test/mergetables/Tests/sqlsmith.Bug-6459.reqtests sql/test/mergetables/Tests/sqlsmith.Bug-6459.stable.out.int128 Removed Files: sql/benchmarks/tpch/fileleak/Tests/All sql/benchmarks/tpch/fileleak/Tests/check0.reqtests sql/benchmarks/tpch/fileleak/Tests/check0.sql sql/benchmarks/tpch/fileleak/Tests/check0.stable.err sql/benchmarks/tpch/fileleak/Tests/check0.stable.out sql/benchmarks/tpch/fileleak/Tests/check1.reqtests sql/benchmarks/tpch/fileleak/Tests/check1.sql sql/benchmarks/tpch/fileleak/Tests/check1.stable.err sql/benchmarks/tpch/fileleak/Tests/check1.stable.out sql/benchmarks/tpch/fileleak/Tests/create.sql.src sql/benchmarks/tpch/fileleak/Tests/create.stable.err sql/benchmarks/tpch/fileleak/Tests/create.stable.out sql/benchmarks/tpch/fileleak/Tests/delete_all.SQL.py sql/benchmarks/tpch/fileleak/Tests/delete_all.stable.err sql/benchmarks/tpch/fileleak/Tests/delete_all.stable.out sql/benchmarks/tpch/fileleak/Tests/leaks.SQL.py sql/benchmarks/tpch/fileleak/Tests/leaks.stable.err sql/benchmarks/tpch/fileleak/Tests/leaks.stable.out sql/benchmarks/tpch/fileleak/Tests/leaks.stable.out.Windows sql/benchmarks/tpch/fileleak/Tests/load.SQL.py sql/benchmarks/tpch/fileleak/Tests/load.reqtests sql/benchmarks/tpch/fileleak/Tests/load.stable.err sql/benchmarks/tpch/fileleak/Tests/load.stable.out sql/benchmarks/tpch/fileleak/Tests/test.py sql/benchmarks/tpch/fileleak/Tests/test.sql sql/test/BugTracker-2017/Tests/limit.bug-6322.sql sql/test/leaks/Tests/All sql/test/leaks/Tests/check1.reqtests sql/test/leaks/Tests/check1.sql sql/test/leaks/Tests/check1.stable.err sql/test/leaks/Tests/check1.stable.out sql/test/leaks/Tests/check1.stable.out.int128 sql/test/leaks/Tests/check2.reqtests sql/test/leaks/Tests/check2.sql.src sql/test/leaks/Tests/check2.stable.err sql/test/leaks/Tests/check2.stable.out sql/test/leaks/Tests/check2.stable.out.int128 sql/test/leaks/Tests/check3.reqtests sql/test/leaks/Tests/check3.sql.src sql/test/leaks/Tests/check3.stable.err sql/test/leaks/Tests/check3.stable.out sql/test/leaks/Tests/check3.stable.out.int128 sql/test/leaks/Tests/check4.reqtests sql/test/leaks/Tests/check4.sql.src sql/test/leaks/Tests/check4.stable.err sql/test/leaks/Tests/check4.stable.out sql/test/leaks/Tests/check4.stable.out.int128 sql/test/leaks/Tests/check5.reqtests sql/test/leaks/Tests/check5.sql.src sql/test/leaks/Tests/check5.stable.err sql/test/leaks/Tests/check5.stable.out sql/test/leaks/Tests/check5.stable.out.int128 sql/test/leaks/Tests/drop3.reqtests sql/test/leaks/Tests/drop3.sql sql/test/leaks/Tests/drop3.stable.err sql/test/leaks/Tests/drop3.stable.out sql/test/leaks/Tests/drop3.stable.out.int128 sql/test/leaks/Tests/initialize.sql sql/test/leaks/Tests/initialize.stable.err sql/test/leaks/Tests/initialize.stable.out sql/test/leaks/Tests/select1.reqtests sql/test/leaks/Tests/select1.sql sql/test/leaks/Tests/select1.stable.err sql/test/leaks/Tests/select1.stable.out sql/test/leaks/Tests/select1.stable.out.int128 sql/test/leaks/Tests/select2.reqtests sql/test/leaks/Tests/select2.sql sql/test/leaks/Tests/select2.stable.err sql/test/leaks/Tests/select2.stable.out sql/test/leaks/Tests/select2.stable.out.int128 sql/test/leaks/Tests/temp1.reqtests sql/test/leaks/Tests/temp1.sql sql/test/leaks/Tests/temp1.stable.err sql/test/leaks/Tests/temp1.stable.out sql/test/leaks/Tests/temp1.stable.out.int128 sql/test/leaks/Tests/temp2.reqtests sql/test/leaks/Tests/temp2.sql sql/test/leaks/Tests/temp2.stable.err sql/test/leaks/Tests/temp2.stable.out sql/test/leaks/Tests/temp2.stable.out.int128 sql/test/leaks/Tests/temp3.reqtests sql/test/leaks/Tests/temp3.sql sql/test/leaks/Tests/temp3.stable.err sql/test/leaks/Tests/temp3.stable.out sql/test/leaks/Tests/temp3.stable.out.int128 Modified Files: NT/monetdb_config.h.in clients/ChangeLog clients/Tests/MAL-signatures.stable.out clients/Tests/MAL-signatures.stable.out.int128 clients/Tests/exports.stable.out clients/examples/C/sample4.c clients/mapiclient/ReadlineTools.c clients/mapiclient/dump.c clients/mapiclient/mclient.c clients/mapilib/mapi.c clients/mapilib/mapi.h clients/odbc/driver/SQLExecute.c clients/odbc/driver/SQLPrepare.c common/stream/stream.c common/utils/msabaoth.c configure.ag gdk/gdk.h gdk/gdk_aggr.c gdk/gdk_atoms.c gdk/gdk_atoms.h gdk/gdk_batop.c gdk/gdk_bbp.c gdk/gdk_calc.c gdk/gdk_heap.c gdk/gdk_logger.c gdk/gdk_private.h gdk/gdk_storage.c gdk/gdk_utils.c geom/monetdb5/geom.h monetdb5/mal/mal.c monetdb5/mal/mal.h monetdb5/mal/mal_atom.c monetdb5/mal/mal_import.c monetdb5/mal/mal_linker.c monetdb5/mal/mal_parser.c monetdb5/mal/mal_profiler.c monetdb5/mal/mal_readline.c monetdb5/mal/mal_session.c monetdb5/mal/mal_type.c monetdb5/modules/atoms/mtime.c monetdb5/modules/kernel/batmmath.h monetdb5/modules/kernel/mmath.h monetdb5/modules/mal/batcalc.c monetdb5/modules/mal/bbp.c monetdb5/modules/mal/calc.c monetdb5/modules/mal/language.c monetdb5/modules/mal/mal_mapi.c monetdb5/modules/mal/tablet.c monetdb5/modules/mal/tokenizer.c monetdb5/modules/mal/wlc.c monetdb5/modules/mal/wlc.h monetdb5/optimizer/opt_candidates.c sql/backends/monet5/Tests/pyloader01.sql sql/backends/monet5/Tests/pyloader01.stable.out sql/backends/monet5/Tests/pyloader07.stable.out sql/backends/monet5/Tests/pyloader07.stable.out.Windows sql/backends/monet5/UDF/pyapi/convert_loops.h sql/backends/monet5/UDF/pyapi/emit.c sql/backends/monet5/UDF/pyapi/pyapi.c sql/backends/monet5/UDF/pyapi/pyloader.c sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_01.stable.out sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_02.stable.out sql/backends/monet5/UDF/pyapi3/Tests/pyloader3_05.stable.out sql/backends/monet5/UDF/udf/udf.c sql/backends/monet5/generator/generator.c sql/backends/monet5/prog.c sql/backends/monet5/rel_bin.c sql/backends/monet5/sql.mal sql/backends/monet5/sql_cat.c sql/backends/monet5/sql_execute.c sql/backends/monet5/sql_scenario.c sql/backends/monet5/sql_scenario.h sql/backends/monet5/sql_transaction.c sql/backends/monet5/sql_upgrades.c sql/backends/monet5/sql_user.c sql/backends/monet5/vaults/vault.c sql/backends/monet5/wlr.c sql/common/sql_list.c sql/common/sql_types.c sql/include/sql_catalog.h sql/scripts/99_system.sql sql/server/rel_optimizer.c sql/server/rel_psm.c sql/server/rel_select.c sql/server/rel_semantic.c sql/server/rel_sequence.c sql/server/rel_updates.c sql/server/sql_atom.c sql/server/sql_mvc.c sql/server/sql_mvc.h sql/server/sql_parser.y sql/server/sql_privileges.c sql/server/sql_semantic.c sql/server/sql_semantic.h sql/storage/bat/bat_storage.c sql/storage/sql_storage.h sql/storage/store.c sql/storage/store_dependency.c sql/storage/store_sequence.c sql/storage/store_sequence.h sql/test/BugTracker-2010/Tests/LIMIT_OFFSET_big-endian.Bug-2622.stable.out sql/test/BugTracker-2017/Tests/All sql/test/BugTracker-2017/Tests/drop_system_schema.Bug-6437.stable.err sql/test/BugTracker-2017/Tests/exist-bigint-missing.Bug-6315.sql sql/test/BugTracker-2017/Tests/exist-bigint-missing.Bug-6315.stable.out sql/test/BugTracker-2017/Tests/side-effect.Bug-6397.stable.out sql/test/BugTracker-2017/Tests/sqlsmith.Bug-6418.sql sql/test/BugTracker-2017/Tests/sqlsmith.Bug-6418.stable.out sql/test/BugTracker-2017/Tests/statistics_nils_not_eq_zero.Bug-6331.stable.out sql/test/BugTracker-2017/Tests/table_returning_with.Bug-6444.stable.err sql/test/Dependencies/Tests/Dependencies.stable.out sql/test/Dependencies/Tests/Dependencies.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/mergetables/Tests/All sql/test/mergetables/Tests/sqlsmith.Bug-6459.stable.out 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/merovingian/daemon/forkmserver.c tools/merovingian/daemon/handlers.c tools/merovingian/daemon/merovingian.c tools/merovingian/daemon/multiplex-funnel.c tools/mserver/mserver5.c Branch: jitudf Log Message:
Merge with default diffs (truncated from 52730 to 300 lines): 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 @@ -33,12 +33,6 @@ #define _CRT_SECURE_NO_DEPRECATE 1 #endif -/* include Intel's mathimf.h early, before any other include files - * might try to include math.h */ -#ifdef __INTEL_COMPILER -#include <mathimf.h> -#endif - #include <malloc.h> #if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC) diff --git a/clients/ChangeLog b/clients/ChangeLog --- a/clients/ChangeLog +++ b/clients/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog file for clients # This file is updated with Maddlog +* Thu Nov 16 2017 Sjoerd Mullender <[email protected]> +- The functions in the mapi library that require 64 bit integers now + use the standard type int64_t instead of the non-standard mapi_int64. + This requires a compilation environment that has the stdint.h include + file (standardized in C99). Compilation of the library also requires + the inttypes.h include file (also standardized in C99). + * Mon Jul 17 2017 Panagiotis Koutsourakis <[email protected]> - Add a new pretty printing option to stethoscope Running stethoscope with the flag -j will produce not pretty printed 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 @@ -8447,6 +8447,8 @@ Ready. [ "sql", "transaction_release", "pattern sql.transaction_release(chain:int, name:str):void ", "SQLtransaction_release;", "A transaction statement (type can be commit,release,rollback or start)" ] [ "sql", "transaction_rollback", "pattern sql.transaction_rollback(chain:int, name:str):void ", "SQLtransaction_rollback;", "A transaction statement (type can be commit,release,rollback or start)" ] [ "sql", "update", "pattern sql.update(mvc:int, sname:str, tname:str, cname:str, rids:any, upd:any):int ", "mvc_update_wrap;", "Update the values of the column tname.cname. Returns sequence number for order dependence)" ] +[ "sql", "update_schemas", "pattern sql.update_schemas():void ", "SYSupdate_schemas;", "Procedure triggered on update of the sys.schemas table" ] +[ "sql", "update_tables", "pattern sql.update_tables():void ", "SYSupdate_tables;", "Procedure triggered on update of the sys._tables table" ] [ "sql", "vacuum", "pattern sql.vacuum(sch:str, tbl:str):void ", "SQLvacuum;", "Choose an approach to consolidate the deletions" ] [ "sql", "zero_or_one", "command sql.zero_or_one(col:bat[:any_1]):any_1 ", "zero_or_one;", "if col contains exactly one value return this. Incase of more raise an exception else return nil" ] [ "sqlblob", "#fromstr", "command sqlblob.#fromstr():void ", "SQLBLOBfromstr;", "" ] 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 @@ -10811,6 +10811,8 @@ Ready. [ "sql", "transaction_release", "pattern sql.transaction_release(chain:int, name:str):void ", "SQLtransaction_release;", "A transaction statement (type can be commit,release,rollback or start)" ] [ "sql", "transaction_rollback", "pattern sql.transaction_rollback(chain:int, name:str):void ", "SQLtransaction_rollback;", "A transaction statement (type can be commit,release,rollback or start)" ] [ "sql", "update", "pattern sql.update(mvc:int, sname:str, tname:str, cname:str, rids:any, upd:any):int ", "mvc_update_wrap;", "Update the values of the column tname.cname. Returns sequence number for order dependence)" ] +[ "sql", "update_schemas", "pattern sql.update_schemas():void ", "SYSupdate_schemas;", "Procedure triggered on update of the sys.schemas table" ] +[ "sql", "update_tables", "pattern sql.update_tables():void ", "SYSupdate_tables;", "Procedure triggered on update of the sys._tables table" ] [ "sql", "vacuum", "pattern sql.vacuum(sch:str, tbl:str):void ", "SQLvacuum;", "Choose an approach to consolidate the deletions" ] [ "sql", "zero_or_one", "command sql.zero_or_one(col:bat[:any_1]):any_1 ", "zero_or_one;", "if col contains exactly one value return this. Incase of more raise an exception else return nil" ] [ "sqlblob", "#fromstr", "command sqlblob.#fromstr():void ", "SQLBLOBfromstr;", "" ] 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 @@ -512,7 +512,7 @@ MapiMsg mapi_execute(MapiHdl hdl); MapiMsg mapi_explain(Mapi mid, FILE *fd); MapiMsg mapi_explain_query(MapiHdl hdl, FILE *fd); MapiMsg mapi_explain_result(MapiHdl hdl, FILE *fd); -mapi_int64 mapi_fetch_all_rows(MapiHdl hdl); +int64_t mapi_fetch_all_rows(MapiHdl hdl); char *mapi_fetch_field(MapiHdl hdl, int fnr); size_t mapi_fetch_field_len(MapiHdl hdl, int fnr); char *mapi_fetch_line(MapiHdl hdl); @@ -527,7 +527,7 @@ int mapi_get_field_count(MapiHdl hdl); stream *mapi_get_from(Mapi mid); char *mapi_get_host(Mapi mid); char *mapi_get_lang(Mapi mid); -mapi_int64 mapi_get_last_id(MapiHdl hdl); +int64_t mapi_get_last_id(MapiHdl hdl); int mapi_get_len(MapiHdl hdl, int fnr); char *mapi_get_mapi_version(Mapi mid); char *mapi_get_monet_version(Mapi mid); @@ -535,7 +535,7 @@ char *mapi_get_motd(Mapi mid); char *mapi_get_name(MapiHdl hdl, int fnr); char *mapi_get_query(MapiHdl hdl); int mapi_get_querytype(MapiHdl hdl); -mapi_int64 mapi_get_row_count(MapiHdl hdl); +int64_t mapi_get_row_count(MapiHdl hdl); int mapi_get_scale(MapiHdl hdl, int fnr); char *mapi_get_table(MapiHdl hdl, int fnr); int mapi_get_tableid(MapiHdl hdl); @@ -572,8 +572,8 @@ MapiMsg mapi_release_id(Mapi mid, int id char **mapi_resolve(const char *host, int port, const char *pattern); const char *mapi_result_error(MapiHdl hdl); const char *mapi_result_errorcode(MapiHdl hdl); -mapi_int64 mapi_rows_affected(MapiHdl hdl); -MapiMsg mapi_seek_row(MapiHdl hdl, mapi_int64 rowne, int whence); +int64_t mapi_rows_affected(MapiHdl hdl); +MapiMsg mapi_seek_row(MapiHdl hdl, int64_t rowne, int whence); MapiHdl mapi_send(Mapi mid, const char *cmd); MapiMsg mapi_setAutocommit(Mapi mid, int autocommit); MapiMsg mapi_set_size_header(Mapi mid, int value); @@ -2337,8 +2337,8 @@ int mnstr_writeInt_wrap(Stream *S, int * str mnstr_writeIntwrap(void *ret, Stream *S, int *data); int mnstr_write_string(Stream *S, str data); str mnstr_write_stringwrap(void *ret, Stream *S, str *data); -char monet_characteristics[PATHLENGTH]; -char monet_cwd[PATHLENGTH]; +char monet_characteristics[4096]; +char monet_cwd[FILENAME_MAX]; size_t monet_memory; void moveInstruction(MalBlkPtr mb, int pc, int target); void mserver_reset(int exit); @@ -2604,7 +2604,7 @@ str vectorRef; str wlcRef; int wlc_batches; int wlc_beat; -char wlc_dir[PATHLENGTH]; +char wlc_dir[FILENAME_MAX]; lng wlc_id; MT_Lock wlc_lock; int wlc_state; diff --git a/clients/examples/C/sample4.c b/clients/examples/C/sample4.c --- a/clients/examples/C/sample4.c +++ b/clients/examples/C/sample4.c @@ -9,12 +9,8 @@ #include <stdlib.h> #include <stdio.h> #include <string.h> +#include <inttypes.h> #include <mapi.h> -#ifdef _MSC_VER -#define LLFMT "%I64d" -#else -#define LLFMT "%lld" -#endif #define die(dbh,hdl) do { \ if (hdl) \ @@ -31,7 +27,7 @@ main(int argc, char **argv) { Mapi dbh; MapiHdl hdl = NULL; - mapi_int64 rows; + int64_t rows; if (argc != 4) { printf("usage:%s <host> <port> <language>\n", argv[0]); @@ -66,7 +62,7 @@ main(int argc, char **argv) rows = mapi_fetch_all_rows(hdl); if (mapi_error(dbh)) die(dbh, hdl); - printf("rows received " LLFMT "\n", rows); + printf("rows received %" PRId64 "\n", rows); while (mapi_fetch_row(hdl)) { char *nme = mapi_fetch_field(hdl, 0); char *age = mapi_fetch_field(hdl, 1); @@ -97,7 +93,7 @@ main(int argc, char **argv) rows = mapi_fetch_all_rows(hdl); if (mapi_error(dbh)) die(dbh, hdl); - printf("rows received " LLFMT "\n", rows); + printf("rows received %" PRId64 "\n", rows); while (mapi_fetch_row(hdl)) { char *nme = mapi_fetch_field(hdl, 1); char *age = mapi_fetch_field(hdl, 2); diff --git a/clients/mapiclient/ReadlineTools.c b/clients/mapiclient/ReadlineTools.c --- a/clients/mapiclient/ReadlineTools.c +++ b/clients/mapiclient/ReadlineTools.c @@ -30,8 +30,6 @@ #include <errno.h> -#define PATHLENGTH 256 /* maximum file pathname length. */ - static const char *sql_commands[] = { "SELECT", "INSERT", @@ -49,7 +47,7 @@ static const char *sql_commands[] = { }; static Mapi _mid; -static char _history_file[PATHLENGTH]; +static char _history_file[FILENAME_MAX]; static int _save_history = 0; static char *language; @@ -57,7 +55,8 @@ static char * sql_tablename_generator(const char *text, int state) { - static int seekpos, len, rowcount; + static int64_t seekpos, rowcount; + static size_t len; static MapiHdl table_hdl; if (!state) { @@ -170,7 +169,7 @@ static int mal_help(int cnt, int key) { char *name, *c, *buf; - int seekpos = 0, rowcount; + int64_t seekpos = 0, rowcount; MapiHdl table_hdl; (void) cnt; @@ -215,7 +214,8 @@ mal_command_generator(const char *text, { static int idx; - static int seekpos, len, rowcount; + static int64_t seekpos, rowcount; + static size_t len; static MapiHdl table_hdl; char *name, *buf; @@ -330,13 +330,13 @@ init_readline(Mapi mid, char *lang, int if (save_history) { #ifndef NATIVE_WIN32 if (getenv("HOME") != NULL) { - snprintf(_history_file, PATHLENGTH, + snprintf(_history_file, FILENAME_MAX, "%s/.mapiclient_history_%s", getenv("HOME"), language); _save_history = 1; } #else - snprintf(_history_file, PATHLENGTH, + snprintf(_history_file, FILENAME_MAX, "%s%c_mapiclient_history_%s", mo_find_option(NULL, 0, "prefix"), DIR_SEP, language); _save_history = 1; diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c --- a/clients/mapiclient/dump.c +++ b/clients/mapiclient/dump.c @@ -1214,30 +1214,32 @@ dump_table(Mapi mid, const char *schema, } static int -dump_function(Mapi mid, stream *toConsole, const char *sname, const char *fname, int hashge) +dump_function(Mapi mid, stream *toConsole, const char *fid, int hashge) { MapiHdl hdl; - size_t qlen = 200 + strlen(sname) + strlen(fname); + size_t qlen = 200 + strlen(fid); char *query = malloc(qlen); const char *sep; - char *fid, *ffunc; + char *ffunc, *sname, *fname; int flang, ftype; - snprintf(query, qlen, "select f.id, f.func, f.language, f.type from sys.functions f, sys.schemas s where f.schema_id = s.id and s.name = '%s' and f.name = '%s'", sname, fname); + snprintf(query, qlen, "SELECT f.id, f.func, f.language, f.type, s.name, f.name FROM sys.functions f, sys.schemas s WHERE f.schema_id = s.id AND f.id = %s", fid); hdl = mapi_query(mid, query); if (mapi_fetch_row(hdl) == 0) { free(query); mapi_close_handle(hdl); return 0; /* no such function, apparently */ } - fid = mapi_fetch_field(hdl, 0); ffunc = mapi_fetch_field(hdl, 1); flang = atoi(mapi_fetch_field(hdl, 2)); ftype = atoi(mapi_fetch_field(hdl, 3)); + sname = mapi_fetch_field(hdl, 4); + fname = mapi_fetch_field(hdl, 5); if (flang == 1 || flang == 2) { /* all information is stored in the func column */ mnstr_printf(toConsole, "%s\n", ffunc); mapi_close_handle(hdl); + free(query); return 0; } mnstr_printf(toConsole, "CREATE "); @@ -1356,22 +1358,14 @@ dump_function(Mapi mid, stream *toConsol int dump_functions(Mapi mid, stream *toConsole, const char *sname, const char *fname) { - const char functions[] = - "SELECT s.name, f.name " - "FROM sys.schemas s, " - "sys.functions f " - "WHERE s.id = f.schema_id AND " - "f.id NOT IN (SELECT function_id FROM sys.systemfunctions) " - "%s%s%s" - "ORDER BY f.func"; MapiHdl hdl; char *q; size_t l; int hashge = has_hugeint(mid); + const char *fid; if (fname != NULL) { /* dump a single function */ - int rc; char *schema = NULL; if (sname == NULL) { @@ -1388,27 +1382,42 @@ dump_functions(Mapi mid, stream *toConso } sname = schema; } - rc = dump_function(mid, toConsole, sname, fname, hashge); + l = 200 + strlen(sname) + strlen(fname); + q = malloc(l); _______________________________________________ checkin-list mailing list [email protected] https://www.monetdb.org/mailman/listinfo/checkin-list
