Changeset: 60c4208b7605 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=60c4208b7605
Branch: Oct2020
Log Message:
merged
diffs (truncated from 673 to 300 lines):
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)));
+MapiMsg mapi_release_id(Mapi mid, int id) __attribute__((__nonnull__(1)));
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);
-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, bool autocommit);
-MapiMsg mapi_set_size_header(Mapi mid, bool value);
-void mapi_setfilecallback(Mapi mid, char *(*getfunc)(void *priv, const char
*filename, bool binary, uint64_t offset, size_t *size), char *(*putfunc)(void
*priv, const char *filename, const void *data, size_t size), void *priv);
-int mapi_split_line(MapiHdl hdl);
-MapiMsg mapi_start_talking(Mapi mid);
-MapiMsg mapi_store_field(MapiHdl hdl, int fnr, int outtype, void *outparam);
-MapiMsg mapi_timeout(Mapi mid, unsigned int time);
-void mapi_trace(Mapi mid, bool flag);
-char *mapi_unquote(char *msg);
+int64_t mapi_rows_affected(MapiHdl hdl) __attribute__((__nonnull__(1)));
+MapiMsg mapi_seek_row(MapiHdl hdl, int64_t rowne, int whence)
__attribute__((__nonnull__(1)));
+MapiHdl mapi_send(Mapi mid, const char *cmd) __attribute__((__nonnull__(1)));
+MapiMsg mapi_setAutocommit(Mapi mid, bool autocommit)
__attribute__((__nonnull__(1)));
+MapiMsg mapi_set_size_header(Mapi mid, bool value)
__attribute__((__nonnull__(1)));
+void mapi_setfilecallback(Mapi mid, char *(*getfunc)(void *priv, const char
*filename, bool binary, uint64_t offset, size_t *size), char *(*putfunc)(void
*priv, const char *filename, const void *data, size_t size), void *priv)
__attribute__((__nonnull__(1)));
+int mapi_split_line(MapiHdl hdl) __attribute__((__nonnull__(1)));
+MapiMsg mapi_store_field(MapiHdl hdl, int fnr, int outtype, void *outparam)
__attribute__((__nonnull__(1)));
+MapiMsg mapi_timeout(Mapi mid, unsigned int time)
__attribute__((__nonnull__(1)));
+void mapi_trace(Mapi mid, bool flag) __attribute__((__nonnull__(1)));
+char *mapi_unquote(char *msg) __attribute__((__nonnull__(1)));
char *mcrypt_BackendSum(const char *string, size_t len);
char *mcrypt_MD5Sum(const char *string, size_t len);
char *mcrypt_RIPEMD160Sum(const char *string, size_t len);
diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c
--- a/clients/mapilib/mapi.c
+++ b/clients/mapilib/mapi.c
@@ -1045,6 +1045,10 @@ static char nomem[] = "Memory allocation
static void
mapi_clrError(Mapi mid)
+ __attribute__((__nonnull__));
+
+static void
+mapi_clrError(Mapi mid)
{
assert(mid);
if (mid->errorstr && mid->errorstr != nomem)
@@ -1056,6 +1060,10 @@ mapi_clrError(Mapi mid)
static MapiMsg
mapi_setError(Mapi mid, const char *msg, const char *action, MapiMsg error)
+ __attribute__((__nonnull__(2, 3)));
+
+static MapiMsg
+mapi_setError(Mapi mid, const char *msg, const char *action, MapiMsg error)
{
assert(msg);
REALLOC(mid->errorstr, strlen(msg) + 1);
@@ -1801,6 +1809,8 @@ finish_handle(MapiHdl hdl)
MapiMsg
mapi_close_handle(MapiHdl hdl)
{
+ if (hdl == NULL)
+ return MOK;
debugprint("entering %s\n", "mapi_close_handle");
/* don't use mapi_check_hdl: it's ok if we're not connected */
@@ -2512,10 +2522,10 @@ mapi_reconnect(Mapi mid)
if (!isa_block_stream(mid->to)) {
mid->to = block_stream(mid->to);
- check_stream(mid, mid->to, NULL, mid->error);
+ check_stream(mid, mid->to, "not a block stream", mid->error);
mid->from = block_stream(mid->from);
- check_stream(mid, mid->from, NULL, mid->error);
+ check_stream(mid, mid->from, "not a block stream", mid->error);
}
try_again_after_redirect:
@@ -4676,7 +4686,7 @@ mapi_fetch_line(MapiHdl hdl)
result->tableid,
result->cache.first +
result->cache.tuplecount) < 0 ||
mnstr_flush(hdl->mid->to, MNSTR_FLUSH_DATA))
- check_stream(hdl->mid, hdl->mid->to, NULL, NULL);
+ check_stream(hdl->mid, hdl->mid->to, "sending export
command", NULL);
reply = mapi_fetch_line_internal(hdl);
}
return reply;
@@ -5201,7 +5211,7 @@ mapi_fetch_all_rows(MapiHdl hdl)
if (mnstr_printf(mid->to, "X" "export %d %" PRId64 "\n",
result->tableid, result->cache.first
+ result->cache.tuplecount) < 0 ||
mnstr_flush(mid->to, MNSTR_FLUSH_DATA))
- check_stream(mid, mid->to, NULL, 0);
+ check_stream(mid, mid->to, "sending export
command", 0);
}
if (mid->active)
read_into_cache(mid->active, 0);
diff --git a/clients/mapilib/mapi.h b/clients/mapilib/mapi.h
--- a/clients/mapilib/mapi.h
+++ b/clients/mapilib/mapi.h
@@ -53,110 +53,199 @@ extern "C" {
#define mapi_export extern
#endif
+#ifndef __GNUC__
+/* This feature is available in gcc versions 2.5 and later. */
+# ifndef __attribute__
+# define __attribute__(Spec) /* empty */
+# endif
+#endif
+
/* connection-oriented functions */
mapi_export Mapi mapi_mapi(const char *host, int port, const char *username,
const char *password, const char *lang, const char *dbname);
mapi_export Mapi mapi_mapiuri(const char *url, const char *user, const char
*pass, const char *lang);
-mapi_export MapiMsg mapi_destroy(Mapi mid);
-mapi_export MapiMsg mapi_start_talking(Mapi mid);
+mapi_export MapiMsg mapi_destroy(Mapi mid)
+ __attribute__((__nonnull__(1)));
mapi_export Mapi mapi_connect(const char *host, int port, const char
*username, const char *password, const char *lang, const char *dbname);
mapi_export char **mapi_resolve(const char *host, int port, const char
*pattern);
-mapi_export MapiMsg mapi_disconnect(Mapi mid);
-mapi_export MapiMsg mapi_reconnect(Mapi mid);
-mapi_export MapiMsg mapi_ping(Mapi mid);
+mapi_export MapiMsg mapi_disconnect(Mapi mid)
+ __attribute__((__nonnull__(1)));
+mapi_export MapiMsg mapi_reconnect(Mapi mid)
+ __attribute__((__nonnull__(1)));
+mapi_export MapiMsg mapi_ping(Mapi mid)
+ __attribute__((__nonnull__(1)));
mapi_export void mapi_setfilecallback(
Mapi mid,
char *(*getfunc)(void *priv, const char *filename,
bool binary, uint64_t offset, size_t *size),
char *(*putfunc)(void *priv, const char *filename,
const void *data, size_t size),
- void *priv);
+ void *priv)
+ __attribute__((__nonnull__(1)));
-mapi_export MapiMsg mapi_error(Mapi mid);
-mapi_export const char *mapi_error_str(Mapi mid);
-mapi_export void mapi_noexplain(Mapi mid, const char *errorprefix);
-mapi_export void mapi_explain(Mapi mid, FILE *fd);
-mapi_export void mapi_explain_query(MapiHdl hdl, FILE *fd);
+mapi_export MapiMsg mapi_error(Mapi mid)
+ __attribute__((__nonnull__(1)));
+mapi_export const char *mapi_error_str(Mapi mid)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list