Changeset: 0eb02f97a5ab for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/0eb02f97a5ab
Modified Files:
monetdb5/modules/mal/mal_mapi.c
sql/backends/monet5/sql_scenario.c
Branch: clientinfo
Log Message:
Accept Xclientinfo command
diffs (42 lines):
diff --git a/monetdb5/modules/mal/mal_mapi.c b/monetdb5/modules/mal/mal_mapi.c
--- a/monetdb5/modules/mal/mal_mapi.c
+++ b/monetdb5/modules/mal/mal_mapi.c
@@ -225,7 +225,7 @@ doChallenge(void *data)
/* Send the challenge over the block stream
* We can do binary transfers, and we can interrupt queries using
* out-of-band messages */
- mnstr_printf(fdout, "%s:mserver:9:%s:%s:%s:sql=%d:BINARY=1:OOBINTR=1:",
+ mnstr_printf(fdout,
"%s:mserver:9:%s:%s:%s:sql=%d:BINARY=1:OOBINTR=1:CLIENTINFO:",
challenge, mcrypt_getHashAlgorithms(),
#ifdef WORDS_BIGENDIAN
"BIG",
diff --git a/sql/backends/monet5/sql_scenario.c
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -1205,6 +1205,26 @@ SQLchannelcmd(Client c, backend *be)
in->pos = in->len; /* HACK: should use parsed length */
return MAL_SUCCEED;
}
+ if (strncmp(in->buf + in->pos, "clientinfo\n", 11) == 0) {
+ in->pos += 11;
+ char *end = in->buf + in->len;
+ char *key = in->buf + in->pos;
+ while (key < end) {
+ char *p = memchr(key, '\n', end - key);
+ if (!p)
+ return createException(SQL, "SQLparser",
SQLSTATE(42000) "no trailing newline in clientinfo");
+ *p = '\0';
+ char *q = memchr(key, '=', p - key);
+ if (!q)
+ return createException(SQL, "SQLparser",
SQLSTATE(42000) "found no = in clientinfo");
+ *q = '\0';
+ char *value = q + 1;
+ MCsetClientInfo(c, key, *value ? value : NULL);
+ key = p + 1;
+ }
+ in->pos = in->len;
+ return MAL_SUCCEED;
+ }
if (strncmp(in->buf + in->pos, "quit", 4) == 0) {
c->mode = FINISHCLIENT;
in->pos = in->len; /* HACK: should use parsed length */
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]