Changeset: 7291d90cbd13 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7291d90cbd13 Branch: default Log Message:
Merge with Oct2020 branch diffs (truncated from 5226 to 300 lines): diff --git a/README.rst b/README.rst --- a/README.rst +++ b/README.rst @@ -1,15 +1,28 @@ The MonetDB Database System =========================== -The MonetDB database is developed by the CWI database research group -(see https://www.monetdb.org/). +The MonetDB database was originally developed by the `CWI`__ `database +research group`__ (see https://www.monetdb.org/). Development has now +shifted to the spin-off company `MonetDB Solutions`__. -Via the MonetDB project we have brought the MonetDB system in open source, -where it is accessible at https://www.monetdb.org/Downloads/ +Via the MonetDB project we have brought the MonetDB system in open +source, where it is accessible at https://www.monetdb.org/Downloads/. +Even though development happens mostly in a company, the MonetDB +database system will remain open source. The MonetDB database system is a high-performance database kernel for -query-intensive applications. The MonetDB source can be found at our `Mercurial -server`__. There is also a `github mirror`__ that is updated once a day. +query-intensive applications. The MonetDB source can be found at our +`Mercurial server`__. There is also a `github mirror`__ that is updated +once a day. + +.. _CWI: https://www.cwi.nl/ +__ CWI_ + +.. _DA: https://www.cwi.nl/research/groups/database-architectures +__ DA_ + +.. _solutions: https://www.monetdbsolutions.com +__ solutions_ .. _MonetDB: https://dev.monetdb.org/hg/MonetDB/ __ MonetDB_ @@ -17,12 +30,19 @@ server`__. There is also a `github mirro .. _github: https://github.com/MonetDB/MonetDB __ github_ -If you got a source distribution, please compile and install MonetDB first, -following the instructions in the file `HowToStart.rst`__ (for Unix) -or `buildtools/doc/windowsbuild.rst`__ (for Windows). +If you got a source distribution, please compile and install MonetDB +first, following the instructions in the file `build.rst`__. + +__ documentation/source/build.rst -__ HowToStart.rst -__ buildtools/doc/windowsbuild.rst +Bugs +==== + +We of course hope there aren't any, but if you do find one, you can +report bugs in our `bugzilla`__ instance. + +.. _bugzilla: https://bugs.monetdb.org +__ bugzilla_ Copyright Notice ================ 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 @@ -66,9 +66,9 @@ stdout of test 'MAL-signatures` in direc % clob, clob, clob, clob, clob # type % 12, 28, 313, 42, 0 # length [ "aggr", "all", "command aggr.all(X_1:bat[:any_1]):any_1 ", "SQLall;", "" ] -[ "aggr", "allnotequal", "command aggr.allnotequal(X_1:bat[:any_1], X_2:bat[:any_1]):bit ", "SQLallnotequal;", "" ] +[ "aggr", "allnotequal", "pattern aggr.allnotequal(X_1:bat[:any_1], X_2:bat[:any_1]):bit ", "SQLallnotequal;", "" ] [ "aggr", "anyequal", "pattern aggr.anyequal(X_1:any_1, X_2:any_1):bit ", "CMDvarEQ;", "" ] -[ "aggr", "anyequal", "command aggr.anyequal(X_1:bat[:any_1], X_2:bat[:any_1]):bit ", "SQLanyequal;", "" ] +[ "aggr", "anyequal", "pattern aggr.anyequal(X_1:bat[:any_1], X_2:bat[:any_1]):bit ", "SQLanyequal;", "" ] [ "aggr", "avg", "command aggr.avg(X_1:bat[:bte], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ", "AGGRavg13_dbl;", "" ] [ "aggr", "avg", "command aggr.avg(X_1:bat[:dbl], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ", "AGGRavg13_dbl;", "" ] [ "aggr", "avg", "command aggr.avg(X_1:bat[:flt], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ", "AGGRavg13_dbl;", "" ] @@ -751,6 +751,8 @@ stdout of test 'MAL-signatures` in direc [ "bat", "setPersistent", "command bat.setPersistent(X_1:bat[:any_1]):void ", "BKCsetPersistent;", "" ] [ "bat", "setTransient", "command bat.setTransient(X_1:bat[:any_1]):void ", "BKCsetTransient;", "" ] [ "bat", "single", "pattern bat.single(X_1:any_1):bat[:any_1] ", "CMDBATsingle;", "" ] +[ "bataggr", "allnotequal", "pattern bataggr.allnotequal(X_1:bat[:any_1], X_2:bat[:any_1]):bit ", "SQLallnotequal;", "" ] +[ "bataggr", "anyequal", "pattern bataggr.anyequal(X_1:bat[:any_1], X_2:bat[:any_1]):bat[:bit] ", "SQLanyequal;", "" ] [ "bataggr", "exist", "pattern bataggr.exist(X_1:any_1):bat[:bit] ", "SQLexist;", "" ] [ "bataggr", "exist", "pattern bataggr.exist(X_1:bat[:any_1]):bat[:bit] ", "SQLexist;", "" ] [ "bataggr", "exist", "pattern bataggr.exist(X_1:bat[:any_1]):bit ", "SQLexist;", "" ] @@ -5890,6 +5892,7 @@ stdout of test 'MAL-signatures` in direc [ "batstr", "nbytes", "command batstr.nbytes(X_1:bat[:str]):bat[:int] ", "STRbatBytes;", "" ] [ "batstr", "r_search", "command batstr.r_search(X_1:bat[:str], X_2:bat[:str]):bat[:int] ", "STRbatRstrSearch;", "" ] [ "batstr", "r_search", "command batstr.r_search(X_1:bat[:str], X_2:str):bat[:int] ", "STRbatRstrSearchcst;", "" ] +[ "batstr", "repeat", "command batstr.repeat(X_1:bat[:str], X_2:int):bat[:str] ", "STRbatrepeat;", "" ] [ "batstr", "rpad", "command batstr.rpad(X_1:bat[:str], X_2:bat[:int], X_3:bat[:str]):bat[:str] ", "STRbatRpad2_bat_bat;", "" ] [ "batstr", "rpad", "command batstr.rpad(X_1:bat[:str], X_2:bat[:int], X_3:str):bat[:str] ", "STRbatRpad2_bat_const;", "" ] [ "batstr", "rpad", "command batstr.rpad(X_1:bat[:str], X_2:int, X_3:bat[:str]):bat[:str] ", "STRbatRpad2_const_bat;", "" ] @@ -5905,6 +5908,8 @@ stdout of test 'MAL-signatures` in direc [ "batstr", "startsWith", "command batstr.startsWith(X_1:bat[:str], X_2:str):bat[:bit] ", "STRbatPrefixcst;", "" ] [ "batstr", "string", "command batstr.string(X_1:bat[:str], X_2:bat[:int]):bat[:str] ", "STRbatTail;", "" ] [ "batstr", "string", "command batstr.string(X_1:bat[:str], X_2:int):bat[:str] ", "STRbatTailcst;", "" ] +[ "batstr", "stringleft", "command batstr.stringleft(X_1:bat[:str], X_2:int):bat[:str] ", "STRbatprefix;", "" ] +[ "batstr", "stringright", "command batstr.stringright(X_1:bat[:str], X_2:int):bat[:str] ", "STRbatsuffix;", "" ] [ "batstr", "substitute", "command batstr.substitute(X_1:bat[:str], X_2:str, X_3:str, X_4:bit):bat[:str] ", "STRbatSubstitutecst;", "" ] [ "batstr", "substring", "command batstr.substring(X_1:bat[:str], X_2:bat[:int], X_3:bat[:int]):bat[:str] ", "STRbatsubstring;", "" ] [ "batstr", "substring", "command batstr.substring(X_1:bat[:str], X_2:int, X_3:int):bat[:str] ", "STRbatsubstringcst;", "" ] 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 @@ -70,9 +70,9 @@ stdout of test 'MAL-signatures` in direc % clob, clob, clob, clob, clob # type % 12, 28, 313, 42, 0 # length [ "aggr", "all", "command aggr.all(X_1:bat[:any_1]):any_1 ", "SQLall;", "" ] -[ "aggr", "allnotequal", "command aggr.allnotequal(X_1:bat[:any_1], X_2:bat[:any_1]):bit ", "SQLallnotequal;", "" ] +[ "aggr", "allnotequal", "pattern aggr.allnotequal(X_1:bat[:any_1], X_2:bat[:any_1]):bit ", "SQLallnotequal;", "" ] [ "aggr", "anyequal", "pattern aggr.anyequal(X_1:any_1, X_2:any_1):bit ", "CMDvarEQ;", "" ] -[ "aggr", "anyequal", "command aggr.anyequal(X_1:bat[:any_1], X_2:bat[:any_1]):bit ", "SQLanyequal;", "" ] +[ "aggr", "anyequal", "pattern aggr.anyequal(X_1:bat[:any_1], X_2:bat[:any_1]):bit ", "SQLanyequal;", "" ] [ "aggr", "avg", "command aggr.avg(X_1:bat[:bte], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ", "AGGRavg13_dbl;", "" ] [ "aggr", "avg", "command aggr.avg(X_1:bat[:dbl], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ", "AGGRavg13_dbl;", "" ] [ "aggr", "avg", "command aggr.avg(X_1:bat[:flt], X_2:bat[:oid], X_3:bat[:any_1]):bat[:dbl] ", "AGGRavg13_dbl;", "" ] @@ -866,6 +866,8 @@ stdout of test 'MAL-signatures` in direc [ "bat", "setPersistent", "command bat.setPersistent(X_1:bat[:any_1]):void ", "BKCsetPersistent;", "" ] [ "bat", "setTransient", "command bat.setTransient(X_1:bat[:any_1]):void ", "BKCsetTransient;", "" ] [ "bat", "single", "pattern bat.single(X_1:any_1):bat[:any_1] ", "CMDBATsingle;", "" ] +[ "bataggr", "allnotequal", "pattern bataggr.allnotequal(X_1:bat[:any_1], X_2:bat[:any_1]):bit ", "SQLallnotequal;", "" ] +[ "bataggr", "anyequal", "pattern bataggr.anyequal(X_1:bat[:any_1], X_2:bat[:any_1]):bat[:bit] ", "SQLanyequal;", "" ] [ "bataggr", "exist", "pattern bataggr.exist(X_1:any_1):bat[:bit] ", "SQLexist;", "" ] [ "bataggr", "exist", "pattern bataggr.exist(X_1:bat[:any_1]):bat[:bit] ", "SQLexist;", "" ] [ "bataggr", "exist", "pattern bataggr.exist(X_1:bat[:any_1]):bit ", "SQLexist;", "" ] @@ -8166,6 +8168,7 @@ stdout of test 'MAL-signatures` in direc [ "batstr", "nbytes", "command batstr.nbytes(X_1:bat[:str]):bat[:int] ", "STRbatBytes;", "" ] [ "batstr", "r_search", "command batstr.r_search(X_1:bat[:str], X_2:bat[:str]):bat[:int] ", "STRbatRstrSearch;", "" ] [ "batstr", "r_search", "command batstr.r_search(X_1:bat[:str], X_2:str):bat[:int] ", "STRbatRstrSearchcst;", "" ] +[ "batstr", "repeat", "command batstr.repeat(X_1:bat[:str], X_2:int):bat[:str] ", "STRbatrepeat;", "" ] [ "batstr", "rpad", "command batstr.rpad(X_1:bat[:str], X_2:bat[:int], X_3:bat[:str]):bat[:str] ", "STRbatRpad2_bat_bat;", "" ] [ "batstr", "rpad", "command batstr.rpad(X_1:bat[:str], X_2:bat[:int], X_3:str):bat[:str] ", "STRbatRpad2_bat_const;", "" ] [ "batstr", "rpad", "command batstr.rpad(X_1:bat[:str], X_2:int, X_3:bat[:str]):bat[:str] ", "STRbatRpad2_const_bat;", "" ] @@ -8181,6 +8184,8 @@ stdout of test 'MAL-signatures` in direc [ "batstr", "startsWith", "command batstr.startsWith(X_1:bat[:str], X_2:str):bat[:bit] ", "STRbatPrefixcst;", "" ] [ "batstr", "string", "command batstr.string(X_1:bat[:str], X_2:bat[:int]):bat[:str] ", "STRbatTail;", "" ] [ "batstr", "string", "command batstr.string(X_1:bat[:str], X_2:int):bat[:str] ", "STRbatTailcst;", "" ] +[ "batstr", "stringleft", "command batstr.stringleft(X_1:bat[:str], X_2:int):bat[:str] ", "STRbatprefix;", "" ] +[ "batstr", "stringright", "command batstr.stringright(X_1:bat[:str], X_2:int):bat[:str] ", "STRbatsuffix;", "" ] [ "batstr", "substitute", "command batstr.substitute(X_1:bat[:str], X_2:str, X_3:str, X_4:bit):bat[:str] ", "STRbatSubstitutecst;", "" ] [ "batstr", "substring", "command batstr.substring(X_1:bat[:str], X_2:bat[:int], X_3:bat[:int]):bat[:str] ", "STRbatsubstring;", "" ] [ "batstr", "substring", "command batstr.substring(X_1:bat[:str], X_2:int, X_3:int):bat[:str] ", "STRbatsubstringcst;", "" ] 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 @@ -576,98 +576,97 @@ int win_unlink(const char *); int winerror(int); # mapi -MapiMsg mapi_bind(MapiHdl hdl, int fnr, char **ptr); -MapiMsg mapi_bind_numeric(MapiHdl hdl, int fnr, int scale, int precision, void *ptr); -MapiMsg mapi_bind_var(MapiHdl hdl, int fnr, int type, void *ptr); -MapiMsg mapi_cache_freeup(MapiHdl hdl, int percentage); -MapiMsg mapi_cache_limit(Mapi mid, int limit); -MapiMsg mapi_clear_bindings(MapiHdl hdl); -MapiMsg mapi_clear_params(MapiHdl hdl); +MapiMsg mapi_bind(MapiHdl hdl, int fnr, char **ptr) __attribute__((__nonnull__(1))); +MapiMsg mapi_bind_numeric(MapiHdl hdl, int fnr, int scale, int precision, void *ptr) __attribute__((__nonnull__(1))); +MapiMsg mapi_bind_var(MapiHdl hdl, int fnr, int type, void *ptr) __attribute__((__nonnull__(1))); +MapiMsg mapi_cache_freeup(MapiHdl hdl, int percentage) __attribute__((__nonnull__(1))); +MapiMsg mapi_cache_limit(Mapi mid, int limit) __attribute__((__nonnull__(1))); +MapiMsg mapi_clear_bindings(MapiHdl hdl) __attribute__((__nonnull__(1))); +MapiMsg mapi_clear_params(MapiHdl hdl) __attribute__((__nonnull__(1))); MapiMsg mapi_close_handle(MapiHdl hdl); Mapi mapi_connect(const char *host, int port, const char *username, const char *password, const char *lang, const char *dbname); -MapiMsg mapi_destroy(Mapi mid); -MapiMsg mapi_disconnect(Mapi mid); -MapiMsg mapi_error(Mapi mid); -const char *mapi_error_str(Mapi mid); -MapiMsg mapi_execute(MapiHdl hdl); -void mapi_explain(Mapi mid, FILE *fd); -void mapi_explain_query(MapiHdl hdl, FILE *fd); +MapiMsg mapi_destroy(Mapi mid) __attribute__((__nonnull__(1))); +MapiMsg mapi_disconnect(Mapi mid) __attribute__((__nonnull__(1))); +MapiMsg mapi_error(Mapi mid) __attribute__((__nonnull__(1))); +const char *mapi_error_str(Mapi mid) __attribute__((__nonnull__(1))); +MapiMsg mapi_execute(MapiHdl hdl) __attribute__((__nonnull__(1))); +void mapi_explain(Mapi mid, FILE *fd) __attribute__((__nonnull__(1))); +void mapi_explain_query(MapiHdl hdl, FILE *fd) __attribute__((__nonnull__(1))); void mapi_explain_result(MapiHdl hdl, FILE *fd); -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); -MapiMsg mapi_fetch_reset(MapiHdl hdl); -int mapi_fetch_row(MapiHdl hdl); -MapiMsg mapi_finish(MapiHdl hdl); -MapiHdl mapi_get_active(Mapi mid); -bool mapi_get_autocommit(Mapi mid); -const char *mapi_get_dbname(Mapi mid); -int mapi_get_digits(MapiHdl hdl, int fnr); -int mapi_get_field_count(MapiHdl hdl); -stream *mapi_get_from(Mapi mid); -const char *mapi_get_host(Mapi mid); -const char *mapi_get_lang(Mapi mid); -int64_t mapi_get_last_id(MapiHdl hdl); -int mapi_get_len(MapiHdl hdl, int fnr); -int64_t mapi_get_maloptimizertime(MapiHdl hdl); -const char *mapi_get_mapi_version(Mapi mid); -const char *mapi_get_monet_version(Mapi mid); -const char *mapi_get_motd(Mapi mid); -char *mapi_get_name(MapiHdl hdl, int fnr); -char *mapi_get_query(MapiHdl hdl); -int64_t mapi_get_querytime(MapiHdl hdl); -int mapi_get_querytype(MapiHdl hdl); -int64_t mapi_get_row_count(MapiHdl hdl); -int mapi_get_scale(MapiHdl hdl, int fnr); -int64_t mapi_get_sqloptimizertime(MapiHdl hdl); -char *mapi_get_table(MapiHdl hdl, int fnr); -int mapi_get_tableid(MapiHdl hdl); -stream *mapi_get_to(Mapi mid); -bool mapi_get_trace(Mapi mid); -char *mapi_get_type(MapiHdl hdl, int fnr); -const char *mapi_get_uri(Mapi mid); -const char *mapi_get_user(Mapi mid); -bool mapi_is_connected(Mapi mid); -MapiMsg mapi_log(Mapi mid, const char *nme); +int64_t mapi_fetch_all_rows(MapiHdl hdl) __attribute__((__nonnull__(1))); +char *mapi_fetch_field(MapiHdl hdl, int fnr) __attribute__((__nonnull__(1))); +size_t mapi_fetch_field_len(MapiHdl hdl, int fnr) __attribute__((__nonnull__(1))); +char *mapi_fetch_line(MapiHdl hdl) __attribute__((__nonnull__(1))); +MapiMsg mapi_fetch_reset(MapiHdl hdl) __attribute__((__nonnull__(1))); +int mapi_fetch_row(MapiHdl hdl) __attribute__((__nonnull__(1))); +MapiMsg mapi_finish(MapiHdl hdl) __attribute__((__nonnull__(1))); +MapiHdl mapi_get_active(Mapi mid) __attribute__((__nonnull__(1))); +bool mapi_get_autocommit(Mapi mid) __attribute__((__nonnull__(1))); +const char *mapi_get_dbname(Mapi mid) __attribute__((__nonnull__(1))); +int mapi_get_digits(MapiHdl hdl, int fnr) __attribute__((__nonnull__(1))); +int mapi_get_field_count(MapiHdl hdl) __attribute__((__nonnull__(1))); +stream *mapi_get_from(Mapi mid) __attribute__((__nonnull__(1))); +const char *mapi_get_host(Mapi mid) __attribute__((__nonnull__(1))); +const char *mapi_get_lang(Mapi mid) __attribute__((__nonnull__(1))); +int64_t mapi_get_last_id(MapiHdl hdl) __attribute__((__nonnull__(1))); +int mapi_get_len(MapiHdl hdl, int fnr) __attribute__((__nonnull__(1))); +int64_t mapi_get_maloptimizertime(MapiHdl hdl) __attribute__((__nonnull__(1))); +const char *mapi_get_mapi_version(Mapi mid) __attribute__((__nonnull__(1))); +const char *mapi_get_monet_version(Mapi mid) __attribute__((__nonnull__(1))); +const char *mapi_get_motd(Mapi mid) __attribute__((__nonnull__(1))); +char *mapi_get_name(MapiHdl hdl, int fnr) __attribute__((__nonnull__(1))); +char *mapi_get_query(MapiHdl hdl) __attribute__((__nonnull__(1))); +int64_t mapi_get_querytime(MapiHdl hdl) __attribute__((__nonnull__(1))); +int mapi_get_querytype(MapiHdl hdl) __attribute__((__nonnull__(1))); +int64_t mapi_get_row_count(MapiHdl hdl) __attribute__((__nonnull__(1))); +int mapi_get_scale(MapiHdl hdl, int fnr) __attribute__((__nonnull__(1))); +int64_t mapi_get_sqloptimizertime(MapiHdl hdl) __attribute__((__nonnull__(1))); +char *mapi_get_table(MapiHdl hdl, int fnr) __attribute__((__nonnull__(1))); +int mapi_get_tableid(MapiHdl hdl) __attribute__((__nonnull__(1))); +stream *mapi_get_to(Mapi mid) __attribute__((__nonnull__(1))); +bool mapi_get_trace(Mapi mid) __attribute__((__nonnull__(1))); +char *mapi_get_type(MapiHdl hdl, int fnr) __attribute__((__nonnull__(1))); +const char *mapi_get_uri(Mapi mid) __attribute__((__nonnull__(1))); +const char *mapi_get_user(Mapi mid) __attribute__((__nonnull__(1))); +bool mapi_is_connected(Mapi mid) __attribute__((__nonnull__(1))); +MapiMsg mapi_log(Mapi mid, const char *nme) __attribute__((__nonnull__(1))); Mapi mapi_mapi(const char *host, int port, const char *username, const char *password, const char *lang, const char *dbname); Mapi mapi_mapiuri(const char *url, const char *user, const char *pass, const char *lang); -bool mapi_more_results(MapiHdl hdl); -MapiMsg mapi_needmore(MapiHdl hdl); -MapiHdl mapi_new_handle(Mapi mid); -MapiMsg mapi_next_result(MapiHdl hdl); -void mapi_noexplain(Mapi mid, const char *errorprefix); -MapiMsg mapi_param(MapiHdl hdl, int fnr, char **ptr); -MapiMsg mapi_param_numeric(MapiHdl hdl, int fnr, int scale, int precision, void *ptr); -MapiMsg mapi_param_string(MapiHdl hdl, int fnr, int sqltype, char *ptr, int *sizeptr); -MapiMsg mapi_param_type(MapiHdl hdl, int fnr, int ctype, int sqltype, void *ptr); -MapiMsg mapi_ping(Mapi mid); -MapiHdl mapi_prepare(Mapi mid, const char *cmd); -MapiMsg mapi_prepare_handle(MapiHdl hdl, const char *cmd); -MapiHdl mapi_query(Mapi mid, const char *cmd); -MapiMsg mapi_query_done(MapiHdl hdl); -MapiMsg mapi_query_handle(MapiHdl hdl, const char *cmd); -MapiMsg mapi_query_part(MapiHdl hdl, const char *cmd, size_t size); -MapiHdl mapi_query_prep(Mapi mid); -char *mapi_quote(const char *msg, int size); -MapiMsg mapi_read_response(MapiHdl hdl); -MapiMsg mapi_reconnect(Mapi mid); -MapiMsg mapi_release_id(Mapi mid, int id); +bool mapi_more_results(MapiHdl hdl) __attribute__((__nonnull__(1))); +MapiMsg mapi_needmore(MapiHdl hdl) __attribute__((__nonnull__(1))); +MapiHdl mapi_new_handle(Mapi mid) __attribute__((__nonnull__(1))); +MapiMsg mapi_next_result(MapiHdl hdl) __attribute__((__nonnull__(1))); +void mapi_noexplain(Mapi mid, const char *errorprefix) __attribute__((__nonnull__(1))); +MapiMsg mapi_param(MapiHdl hdl, int fnr, char **ptr) __attribute__((__nonnull__(1))); +MapiMsg mapi_param_numeric(MapiHdl hdl, int fnr, int scale, int precision, void *ptr) __attribute__((__nonnull__(1))); +MapiMsg mapi_param_string(MapiHdl hdl, int fnr, int sqltype, char *ptr, int *sizeptr) __attribute__((__nonnull__(1))); +MapiMsg mapi_param_type(MapiHdl hdl, int fnr, int ctype, int sqltype, void *ptr) __attribute__((__nonnull__(1))); +MapiMsg mapi_ping(Mapi mid) __attribute__((__nonnull__(1))); +MapiHdl mapi_prepare(Mapi mid, const char *cmd) __attribute__((__nonnull__(1))); +MapiMsg mapi_prepare_handle(MapiHdl hdl, const char *cmd) __attribute__((__nonnull__(1))); +MapiHdl mapi_query(Mapi mid, const char *cmd) __attribute__((__nonnull__(1))); +MapiMsg mapi_query_done(MapiHdl hdl) __attribute__((__nonnull__(1))); +MapiMsg mapi_query_handle(MapiHdl hdl, const char *cmd) __attribute__((__nonnull__(1))); +MapiMsg mapi_query_part(MapiHdl hdl, const char *cmd, size_t size) __attribute__((__nonnull__(1))); +MapiHdl mapi_query_prep(Mapi mid) __attribute__((__nonnull__(1))); +char *mapi_quote(const char *msg, int size) __attribute__((__nonnull__(1))); +MapiMsg mapi_read_response(MapiHdl hdl) __attribute__((__nonnull__(1))); +MapiMsg mapi_reconnect(Mapi mid) __attribute__((__nonnull__(1))); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list