MonetDB: protocol - mclient support for new block stream, compre...

2016-08-05 Thread Hannes Muehleisen
Changeset: 721c8b3d945f for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=721c8b3d945f
Modified Files:
clients/mapiclient/mclient.c
clients/mapilib/mapi.c
clients/mapilib/mapi.h
common/stream/stream.c
common/stream/stream.h
monetdb5/modules/mal/mal_mapi.c
Branch: protocol
Log Message:

mclient support for new block stream, compression working


diffs (truncated from 615 to 300 lines):

diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -2932,6 +2932,10 @@ usage(const char *prog, int xit)
fprintf(stderr, " -E charset  | --encoding=charset specify encoding 
(character set) of the terminal\n");
 #endif
fprintf(stderr, " -f kind | --format=kind  specify output 
format {csv,tab,raw,sql,xml}\n");
+
+   fprintf(stderr, " -P version  | --protocol=version specify protocol 
version {prot9,prot10,prot10compressed}\n");
+   fprintf(stderr, " -B size | --blocksize=size   specify protocol 
block size (>= %d)\n", BLOCK);
+
fprintf(stderr, " -H  | --history  load/save cmdline 
history (default off)\n");
fprintf(stderr, " -i  | --interactive[=tm] interpret `\\' 
commands on stdin, use time formatting {ms,s,m}\n");
fprintf(stderr, " -l language | --language=lang{sql,mal}\n");
@@ -2969,6 +2973,8 @@ main(int argc, char **argv)
char *command = NULL;
char *dbname = NULL;
char *output = NULL;/* output format as string */
+   char *protocol = NULL;
+   size_t blocksize = 0;
FILE *fp = NULL;
int trace = 0;
int dump = 0;
@@ -2992,6 +2998,9 @@ main(int argc, char **argv)
{"encoding", 1, 0, 'E'},
 #endif
{"format", 1, 0, 'f'},
+   {"protocol", 1, 0, 'P'},
+   {"blocksize", 1, 0, 'B'},
+
{"help", 0, 0, '?'},
{"history", 0, 0, 'H'},
{"host", 1, 0, 'h'},
@@ -3125,6 +3134,16 @@ main(int argc, char **argv)
free(output);
output = strdup(optarg);/* output format */
break;
+   case 'P':
+   assert(optarg);
+   if (protocol != NULL)
+   free(protocol);
+   protocol = strdup(optarg);
+   break;
+   case 'B':
+   assert(optarg);
+   blocksize = (size_t) atol(optarg);
+   break;
case 'i':
interactive = 1;
showtiming = 1;
@@ -3271,6 +3290,30 @@ main(int argc, char **argv)
if (passwd)
free(passwd);
passwd = NULL;
+
+   if (blocksize > 0) {
+   if (blocksize < BLOCK) {
+   fprintf(stderr, "invalid block size (needs to be bigger 
than %d)\n", BLOCK);
+   } else {
+   mapi_set_blocksize(mid, blocksize);
+   }
+   }
+
+   if (protocol) {
+   if (strcasecmp(protocol, "prot9") == 0) {
+   mapi_set_protocol(mid, prot9);
+   }
+   else if (strcasecmp(protocol, "prot10") == 0) {
+   mapi_set_protocol(mid, prot10);
+   }
+   else if (strcasecmp(protocol, "prot10compressed") == 0) {
+   mapi_set_protocol(mid, prot10compressed);
+   }
+   else {
+   fprintf(stderr, "invalid protocol name '%s'\n", 
protocol);
+   }
+   }
+
if (mid && mapi_error(mid) == MOK)
mapi_reconnect(mid);/* actually, initial connect */
 
diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c
--- a/clients/mapilib/mapi.c
+++ b/clients/mapilib/mapi.c
@@ -881,6 +881,7 @@ struct BlockCache {
int eos;/* end of sequence */
 };
 
+
 /* A connection to a server is represented by a struct MapiStruct.  An
application can have any number of connections to any number of
servers.  Connections are completely independent of each other.
@@ -897,6 +898,8 @@ struct MapiStruct {
char *uri;
int languageId;
char *motd; /* welcome message from server */
+   protocol_version protocol;
+   size_t blocksize;
 
int trace;  /* Trace Mapi interaction */
int auto_commit;
@@ -1884,6 +1887,9 @@ mapi_new(void)
mid->username = NULL;
mid->password = NULL;
 
+   mid->protocol = protauto;
+   mid->blocksize = 128*BLOCK; // 1 MB
+
mid->cachelimit = 100;
mid->redircnt = 0;
mid->redirmax = 10;
@@ -2193,11 +2199,6 @@ mapi_destroy(Mapi mid)
return MOK;
 }
 
-typedef enum {
-   prot9 = 1,
-  

MonetDB: protocol - merge with default

2016-08-05 Thread Hannes Muehleisen
Changeset: edcb9d8a2c8f for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=edcb9d8a2c8f
Removed Files:
monetdb5/modules/mal/Tests/zorder.malC
monetdb5/modules/mal/Tests/zorder.stable.err
monetdb5/modules/mal/Tests/zorder.stable.out
monetdb5/modules/mal/zorder.c
monetdb5/modules/mal/zorder.h
monetdb5/modules/mal/zorder.mal
sql/scripts/24_zorder.sql
Modified Files:
NT/installer32/MonetDB5-SQL-Installer.vdproj
NT/installer64/MonetDB5-SQL-Installer.vdproj
clients/Tests/MAL-signatures.stable.out
clients/Tests/MAL-signatures.stable.out.int128
clients/Tests/SQL-dump.stable.out
clients/Tests/SQL-dump.stable.out.int128
clients/Tests/exports.stable.out
clients/odbc/driver/README
clients/odbc/driver/SQLBindParameter.c
clients/odbc/driver/SQLBulkOperations.c
clients/odbc/driver/SQLCopyDesc.c
clients/odbc/driver/SQLDescribeParam.c
clients/odbc/driver/SQLEndTran.c
clients/odbc/driver/SQLExtendedFetch.c
clients/odbc/driver/SQLFetchScroll.c
clients/odbc/driver/SQLGetEnvAttr.c
clients/odbc/driver/SQLNumParams.c
clients/odbc/driver/SQLSetDescRec.c
clients/odbc/driver/SQLSetEnvAttr.c
configure.ag
java/src/main/java/nl/cwi/monetdb/jdbc/MonetBlob.java
java/src/main/java/nl/cwi/monetdb/jdbc/MonetDriver.java.in
monetdb5/ChangeLog
monetdb5/mal/mal.h
monetdb5/mal/mal_instruction.c
monetdb5/mal/mal_instruction.h
monetdb5/mal/mal_listing.c
monetdb5/mal/mal_module.c
monetdb5/mal/mal_module.h
monetdb5/mal/mal_parser.c
monetdb5/modules/mal/Makefile.ag
monetdb5/modules/mal/Tests/All
monetdb5/modules/mal/mal_init.mal
monetdb5/optimizer/opt_profiler.c
rpm.mk.in
sql/ChangeLog
sql/backends/monet5/sql_scenario.c
sql/backends/monet5/sql_upgrades.c
sql/scripts/Makefile.ag
sql/test/BugTracker-2016/Tests/All
sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out.32bit
sql/test/Tests/systemfunctions.stable.out
sql/test/Tests/systemfunctions.stable.out.int128
sql/test/emptydb-upgrade-chain-hge/Tests/check.stable.out.int128
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/check.stable.out
sql/test/emptydb-upgrade-chain/Tests/check.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/check.stable.out.int128
sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade/Tests/check.stable.out
sql/test/emptydb-upgrade/Tests/check.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.int128
sql/test/leaks/Tests/check1.stable.out.int128
sql/test/leaks/Tests/check2.stable.out.int128
sql/test/leaks/Tests/check3.stable.out.int128
sql/test/leaks/Tests/check4.stable.out.int128
sql/test/leaks/Tests/check5.stable.out.int128
sql/test/pg_regress/Tests/strings.stable.err
sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out
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
sql/test/testdb-upgrade/Tests/upgrade.stable.out
sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit
sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
Branch: protocol
Log Message:

merge with default


diffs (truncated from 5860 to 300 lines):

diff --git a/NT/installer32/MonetDB5-SQL-Installer.vdproj 
b/NT/installer32/MonetDB5-SQL-Installer.vdproj
--- a/NT/installer32/MonetDB5-SQL-Installer.vdproj
+++ b/NT/installer32/MonetDB5-SQL-Installer.vdproj
@@ -897,12 +897,6 @@
 }
 "Entry"
 {
-"MsmKey" = "8:_EC56B031A65A44BCA049E43F5A7641C4"
-"OwnerKey" = "8:_UNDEFINED"
-"MsmSig" = "8:_UNDEFINED"
-}
-"Entry"
-{
 "MsmKey" = "8:_F0AD495DD01A481B8FDB22499521AFB7"
 "OwnerKey" = "8:_UNDEFINED"
 "MsmSig" = "8:_UNDEFINED"
@@ -939,12 +933,6 @@
 }
 "Entry"
 {
-"MsmKey" = "8:_F64E69D474DA4F6A89A1B014F77E4669"
-"OwnerKey" = "8:_UNDEFINED"
-"MsmSig" = "8:_UNDEFINED"
-}
-"Entry"
-{
 "MsmKey" = "8:_F827A21B394243CA9A2DA27D42DA0C93"
 "OwnerKey" = "8:_UNDEFINED"
 "MsmSig" = "8:_UNDEFINED"
@@ -3964,26 +3952,6 @@
 "Is

MonetDB: default - Free lock before returning.

2016-08-05 Thread Sjoerd Mullender
Changeset: 8f3ebfcdd261 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8f3ebfcdd261
Modified Files:
sql/backends/monet5/sql_scenario.c
Branch: default
Log Message:

Free lock before returning.
This prevents deadlock when exiting after a failed catalogue
initialization.


diffs (15 lines):

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
@@ -241,8 +241,10 @@ SQLinit(void)
SQLdebug |= 64;
if (readonly)
SQLdebug |= 32;
-   if ((SQLnewcatalog = mvc_init(SQLdebug, store_bat, readonly, 
single_user, 0)) < 0)
+   if ((SQLnewcatalog = mvc_init(SQLdebug, store_bat, readonly, 
single_user, 0)) < 0) {
+   MT_lock_unset(&sql_contextLock);
throw(SQL, "SQLinit", "Catalogue initialization failed");
+   }
SQLinitialized = TRUE;
MT_lock_unset(&sql_contextLock);
if (MT_create_thread(&sqllogthread, (void (*)(void *)) mvc_logmanager, 
NULL, MT_THR_JOINABLE) != 0) {
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: protocol - compressed streams actually working for larg...

2016-08-05 Thread Hannes Muehleisen
Changeset: 7a7bd9024d74 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7a7bd9024d74
Modified Files:
clients/mapiclient/mclient.c
clients/mapilib/mapi.c
clients/mapilib/mapi.h
common/stream/stream.c
common/stream/stream.h
monetdb5/mal/mal_client.c
monetdb5/mal/mal_client.h
monetdb5/mal/mal_function.c
monetdb5/mal/mal_session.c
monetdb5/mal/mal_session.h
monetdb5/modules/mal/mal_mapi.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql_result.c
sql/backends/monet5/sql_result.h
Branch: protocol
Log Message:

compressed streams actually working for large results


diffs (truncated from 479 to 300 lines):

diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -3300,17 +3300,8 @@ main(int argc, char **argv)
}
 
if (protocol) {
-   if (strcasecmp(protocol, "prot9") == 0) {
-   mapi_set_protocol(mid, prot9);
-   }
-   else if (strcasecmp(protocol, "prot10") == 0) {
-   mapi_set_protocol(mid, prot10);
-   }
-   else if (strcasecmp(protocol, "prot10compressed") == 0) {
-   mapi_set_protocol(mid, prot10compressed);
-   }
-   else {
-   fprintf(stderr, "invalid protocol name '%s'\n", 
protocol);
+   if (mapi_set_protocol(mid, protocol) != 0) {
+   fprintf(stderr, "%s\n", mapi_error_str(mid));
}
}
 
diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c
--- a/clients/mapilib/mapi.c
+++ b/clients/mapilib/mapi.c
@@ -5540,8 +5540,22 @@ mapi_get_active(Mapi mid)
return mid->active;
 }
 
-void mapi_set_protocol(Mapi mid, protocol_version prot) {
-   mid->protocol = prot;
+MapiMsg mapi_set_protocol(Mapi mid, const char* protocol) {
+   if (strcasecmp(protocol, "prot9") == 0) {
+   mid->protocol = prot9;
+   }
+   else if (strcasecmp(protocol, "prot10") == 0) {
+   mid->protocol = prot10;
+   }
+   else if (strcasecmp(protocol, "prot10compressed") == 0) {
+   mid->protocol = prot10compressed;
+   }
+   else {
+   mapi_setError(mid, "invalid protocol name", 
"mapi_set_protocol", MERROR);
+   return -1;
+   }
+
+   return 0;
 }
 
 void mapi_set_blocksize(Mapi mid, size_t blocksize) {
diff --git a/clients/mapilib/mapi.h b/clients/mapilib/mapi.h
--- a/clients/mapilib/mapi.h
+++ b/clients/mapilib/mapi.h
@@ -129,13 +129,6 @@ typedef struct {   /* used by MAPI_DATETI
unsigned int fraction;  /* in 1000 millionths of a second (10e-9) */
 } MapiDateTime;
 
-typedef enum {
-   protauto = 0,
-   prot9 = 1,
-   prot10 = 2,
-   prot10compressed = 3,
-} protocol_version;
-
 /* 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);
@@ -240,7 +233,7 @@ mapi_export char *mapi_quote(const char 
 mapi_export char *mapi_unquote(char *msg);
 mapi_export MapiHdl mapi_get_active(Mapi mid);
 
-mapi_export void mapi_set_protocol(Mapi mid, protocol_version prot);
+mapi_export MapiMsg mapi_set_protocol(Mapi mid, const char* prot);
 mapi_export void mapi_set_blocksize(Mapi mid, size_t blocksize);
 
 #ifdef _MSC_VER
diff --git a/common/stream/stream.c b/common/stream/stream.c
--- a/common/stream/stream.c
+++ b/common/stream/stream.c
@@ -3977,6 +3977,7 @@ typedef struct bs2 {
size_t nr;  /* how far we got in buf */
size_t itotal;  /* amount available in current read block */
size_t bufsiz;
+   size_t readpos;
compression_method comp;
char *compbuf;
size_t compbufsiz;
@@ -4047,6 +4048,7 @@ bs2_write(stream *ss, const void *buf, s
s->nr += n;
todo -= n;
buf = ((const char *) buf + n);
+   /* block is full, write it to the stream */
if (s->nr == s->bufsiz) {
 
 #ifdef BSTREAM_DEBUG
@@ -4063,17 +4065,15 @@ bs2_write(stream *ss, const void *buf, s
}
 #endif
 
-
-   /* block is full, write it to the stream */
-
writelen = s->nr;
blksize = s->nr;
writebuf = s->buf;
 
if (s->comp == COMPRESSION_SNAPPY) {
+   snappy_status ret;
size_t compressed_length = s->compbufsiz;
-   if (snappy_compress(s->buf, s->nr, s->compbuf, 
&compressed_length) != SNAPPY_OK) {
-  

MonetDB: Jun2016 - Avoid undefined behavior in C: more overflow ...

2016-08-05 Thread Sjoerd Mullender
Changeset: 7b9d7afdeb09 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7b9d7afdeb09
Modified Files:
gdk/gdk_heap.c
monetdb5/mal/mal_runtime.c
monetdb5/modules/atoms/uuid.c
monetdb5/modules/mal/mkey.c
sql/common/sql_list.c
sql/server/sql_datetime.c
sql/server/sql_decimal.c
sql/test/pg_regress/Tests/interval.stable.err
sql/test/pg_regress/Tests/interval.stable.err.int128
sql/test/pg_regress/Tests/interval.stable.out
sql/test/pg_regress/Tests/interval.stable.out.int128
Branch: Jun2016
Log Message:

Avoid undefined behavior in C: more overflow checking.


diffs (truncated from 400 to 300 lines):

diff --git a/gdk/gdk_heap.c b/gdk/gdk_heap.c
--- a/gdk/gdk_heap.c
+++ b/gdk/gdk_heap.c
@@ -757,7 +757,7 @@ HEAPwarm(Heap *h)
int *lim = (int *) (h->base + h->free) - 4096;
 
for (; cur < lim; cur += 4096)  /* try to schedule 4 parallel 
memory accesses */
-   bogus_result += cur[0] + cur[1024] + cur[2048] + 
cur[3072];
+   bogus_result |= cur[0] | cur[1024] | cur[2048] | 
cur[3072];
}
return bogus_result;
 }
diff --git a/monetdb5/mal/mal_runtime.c b/monetdb5/mal/mal_runtime.c
--- a/monetdb5/mal/mal_runtime.c
+++ b/monetdb5/mal/mal_runtime.c
@@ -250,8 +250,11 @@ lng getVolume(MalStkPtr stk, InstrPtr pc
for (; i < limit; i++) {
if (stk->stk[getArg(pci, i)].vtype == TYPE_bat) {
oid cnt = 0;
+   bat bt;
 
-   b = BBPquickdesc(abs(stk->stk[getArg(pci, 
i)].val.bval), TRUE);
+   if ((bt = stk->stk[getArg(pci, i)].val.bval) == bat_nil)
+   continue;
+   b = BBPquickdesc(abs(bt), TRUE);
if (b == NULL)
continue;
cnt = BATcount(b);
diff --git a/monetdb5/modules/atoms/uuid.c b/monetdb5/modules/atoms/uuid.c
--- a/monetdb5/modules/atoms/uuid.c
+++ b/monetdb5/modules/atoms/uuid.c
@@ -231,10 +231,14 @@ UUIDhash(const void *v)
const uuid *u = (const uuid *) v;
unsigned int u1, u2, u3, u4;
 
-   u1 = u->u[0] << 24 | u->u[1] << 16 | u->u[2] << 8 | u->u[3];
-   u2 = u->u[4] << 24 | u->u[5] << 16 | u->u[6] << 8 | u->u[7];
-   u3 = u->u[8] << 24 | u->u[9] << 16 | u->u[10] << 8 | u->u[11];
-   u4 = u->u[12] << 24 | u->u[13] << 16 | u->u[14] << 8 | u->u[15];
+   u1 = (unsigned int) u->u[0] << 24 | (unsigned int) u->u[1] << 16 |
+   (unsigned int) u->u[2] << 8 | (unsigned int) u->u[3];
+   u2 = (unsigned int) u->u[4] << 24 | (unsigned int) u->u[5] << 16 |
+   (unsigned int) u->u[6] << 8 | (unsigned int) u->u[7];
+   u3 = (unsigned int) u->u[8] << 24 | (unsigned int) u->u[9] << 16 |
+   (unsigned int) u->u[10] << 8 | (unsigned int) u->u[11];
+   u4 = (unsigned int) u->u[12] << 24 | (unsigned int) u->u[13] << 16 |
+   (unsigned int) u->u[14] << 8 | (unsigned int) u->u[15];
return (BUN) mix_int(u1 ^ u2 ^ u3 ^ u4);
 }
 
diff --git a/monetdb5/modules/mal/mkey.c b/monetdb5/modules/mal/mkey.c
--- a/monetdb5/modules/mal/mkey.c
+++ b/monetdb5/modules/mal/mkey.c
@@ -34,6 +34,14 @@
 #endif
 #endif
 
+#undef GDK_ROTATE
+
+static inline wrd
+GDK_ROTATE(wrd x, int y, int z, wrd m)
+{
+   return ((wrd) ((ulng) x << y) & ~m) | ((x >> z) & m);
+}
+
 /* TODO: nil handling. however; we do not want to lose time in 
bulk_rotate_xor_hash with that */
 str
 MKEYrotate(wrd *res, const wrd *val, const int *n)
diff --git a/sql/common/sql_list.c b/sql/common/sql_list.c
--- a/sql/common/sql_list.c
+++ b/sql/common/sql_list.c
@@ -331,7 +331,7 @@ int
 list_match(list *l1, list *l2, fcmp cmp)
 {
node *n, *m;
-   int chk = 0;
+   ulng chk = 0;
 
if (l1 == l2)
return 0;
@@ -342,8 +342,9 @@ list_match(list *l1, list *l2, fcmp cmp)
for (n = l1->h; n; n = n->next) {
int pos = 0, fnd = 0;
for (m = l2->h; m; m = m->next, pos++) {
-   if (!(chk&(1data) == 0) {
-   chk &= 1data) == 0) {
+   chk |= (ulng) 1 << pos;
fnd = 1;
}
}
diff --git a/sql/server/sql_datetime.c b/sql/server/sql_datetime.c
--- a/sql/server/sql_datetime.c
+++ b/sql/server/sql_datetime.c
@@ -227,7 +227,6 @@ parse_interval(mvc *sql, lng sign, char 
return -1;
if (sk == isec) {
int msec = 0;
-   val *= 1000;
if (n && n[0] == '.') {
char *nn;
msec = strtol(n+1, &nn, 10);
@@ -240,6 +239,13 @@ parse_interval(mvc *sql, lng sign, char 
n = nn;
}
}
+   

MonetDB: protocol - new result set first part and mapi read_line...

2016-08-05 Thread Hannes Muehleisen
Changeset: 8155970591cd for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8155970591cd
Modified Files:
clients/mapilib/mapi.c
common/stream/stream.c
common/stream/stream.h
sql/backends/monet5/sql_result.c
sql/include/sql_query.h
Branch: protocol
Log Message:

new result set first part and mapi read_line cleanup


diffs (truncated from 430 to 300 lines):

diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c
--- a/clients/mapilib/mapi.c
+++ b/clients/mapilib/mapi.c
@@ -876,9 +876,7 @@ struct MapiRowBuf {
 struct BlockCache {
char *buf;
int lim;
-   int nxt;
int end;
-   int eos;/* end of sequence */
 };
 
 
@@ -1894,18 +1892,12 @@ mapi_new(void)
mid->redircnt = 0;
mid->redirmax = 10;
mid->tracelog = NULL;
-   mid->blk.eos = 0;
-   mid->blk.buf = malloc(BLOCK + 1);
+   mid->blk.buf = malloc(BLOCK);
if (mid->blk.buf == NULL) {
mapi_destroy(mid);
return NULL;
}
-   mid->blk.buf[BLOCK] = 0;
-   mid->blk.buf[0] = 0;
-   mid->blk.nxt = 0;
-   mid->blk.end = 0;
mid->blk.lim = BLOCK;
-
mid->first = NULL;
 
return mid;
@@ -2558,7 +2550,7 @@ mapi_reconnect(Mapi mid)
/* consume server challenge */
len = mnstr_read_block(mid->from, buf, 1, BLOCK);
 
-   check_stream(mid, mid->from, "Connection terminated while starting", 
"mapi_reconnect", (mid->blk.eos = 1, mid->error));
+   check_stream(mid, mid->from, "Connection terminated while starting", 
"mapi_reconnect", mid->error);
 
assert(len < BLOCK);
buf[len] = 0;
@@ -3491,82 +3483,32 @@ mapi_param_store(MapiHdl hdl)
 static char *
 read_line(Mapi mid)
 {
-   char *reply;
-   char *nl;
-   char *s;/* from where to search for newline */
-
+   int ret = 0;
if (mid->active == NULL)
return 0;
-
-   /* check if we need to read more blocks to get a new line */
-   mid->blk.eos = 0;
-   s = mid->blk.buf + mid->blk.nxt;
-   while ((nl = strchr(s, '\n')) == NULL && !mid->blk.eos) {
-   ssize_t len;
-
-   if (mid->blk.lim - mid->blk.end < BLOCK) {
-   int len;
-
-   len = mid->blk.lim;
-   if (mid->blk.nxt <= BLOCK) {
-   /* extend space */
-   len += BLOCK;
+   mid->blk.end = 0;
+   do {
+   if ((mid->blk.end + 1) == mid->blk.lim) {
+   REALLOC(mid->blk.buf, mid->blk.lim + BLOCK);
+   if (!mid->blk.buf) {
+   return 0;
}
-   REALLOC(mid->blk.buf, len + 1);
-   if (mid->blk.nxt > 0) {
-   memmove(mid->blk.buf, mid->blk.buf + 
mid->blk.nxt, mid->blk.end - mid->blk.nxt + 1);
-   mid->blk.end -= mid->blk.nxt;
-   mid->blk.nxt = 0;
+   mid->blk.lim += BLOCK;
+   }
+   /* mid->from is **always** buffered, so no point in rolling an 
additional cache on top */
+   if ((ret = mnstr_readChr(mid->from, mid->blk.buf + 
mid->blk.end)) != 1) {
+   if (ret == 0) {
+   mid->blk.buf[0] = PROMPTBEG;
+   mid->blk.buf[1] = '\n';
+   mid->blk.buf[2] = 0;
+   return mid->blk.buf;
}
-   mid->blk.lim = len;
+   return 0;
}
-
-   s = mid->blk.buf + mid->blk.end;
-
-   /* fetch one more block */
-   if (mid->trace == MAPI_TRACE)
-   printf("fetch next block: start at:%d\n", mid->blk.end);
-   len = mnstr_read(mid->from, mid->blk.buf + mid->blk.end, 1, 
BLOCK);
-   check_stream(mid, mid->from, "Connection terminated during read 
line", "read_line", (mid->blk.eos = 1, (char *) 0));
-   if (mid->tracelog) {
-   mapi_log_header(mid, "R");
-   mnstr_write(mid->tracelog, mid->blk.buf + mid->blk.end, 
1, len);
-   mnstr_flush(mid->tracelog);
-   }
-   mid->blk.buf[mid->blk.end + len] = 0;
-   if (mid->trace == MAPI_TRACE) {
-   printf("got next block: length:" SSZFMT "\n", len);
-   printf("text:%s\n", mid->blk.buf + mid->blk.end);
-   }
-   if (len == 0) { /* add prompt */
-   if (mid->blk.end > mid->blk.nxt) {
-   /* add fake newline since newline was
-* missing from server */
-   n

MonetDB: default - Merge with Jun2016 branch.

2016-08-05 Thread Sjoerd Mullender
Changeset: b2acec955af0 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b2acec955af0
Modified Files:
clients/odbc/driver/SQLGetFunctions.c
gdk/gdk_aggr.c
gdk/gdk_atoms.h
gdk/gdk_heap.c
gdk/gdk_unique.c
monetdb5/mal/mal_debugger.c
monetdb5/mal/mal_interpreter.c
monetdb5/mal/mal_runtime.c
monetdb5/modules/atoms/uuid.c
monetdb5/modules/mal/mkey.c
sql/common/sql_keyword.c
sql/common/sql_list.c
sql/server/sql_datetime.c
sql/server/sql_decimal.c
sql/test/pg_regress/Tests/interval.stable.err
sql/test/pg_regress/Tests/interval.stable.err.int128
sql/test/pg_regress/Tests/interval.stable.out
sql/test/pg_regress/Tests/interval.stable.out.int128
tools/merovingian/daemon/argvcmds.c
tools/merovingian/daemon/handlers.c
tools/merovingian/daemon/monetdbd.service.in
Branch: default
Log Message:

Merge with Jun2016 branch.


diffs (truncated from 618 to 300 lines):

diff --git a/clients/odbc/driver/SQLGetFunctions.c 
b/clients/odbc/driver/SQLGetFunctions.c
--- a/clients/odbc/driver/SQLGetFunctions.c
+++ b/clients/odbc/driver/SQLGetFunctions.c
@@ -399,7 +399,7 @@ SQLGetFunctions(SQLHDBC ConnectionHandle
UWORD *p;
 
for (p = FuncImplemented; p < 
&FuncImplemented[NFUNCIMPLEMENTED]; p++)
-   FuncExistMap[*p >> 4] |= 1 << (*p & 0xF);
+   FuncExistMap[*p >> 4] |= (UWORD) 1 << (*p & 0xF);
}
 
if (FunctionId == SQL_API_ODBC3_ALL_FUNCTIONS) {
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -235,8 +235,8 @@ BATgroupaggrinit(BAT *b, BAT *g, BAT *e,
}   \
} else {\
if (nil_if_empty && \
-   !(seen[gid >> 5] & (1 << 
(gid & 0x1F { \
-   seen[gid >> 5] |= 1 << 
(gid & 0x1F); \
+   !(seen[gid >> 5] & (1U << 
(gid & 0x1F { \
+   seen[gid >> 5] |= 1U << 
(gid & 0x1F); \
sums[gid] = 0;  \
}   \
if (sums[gid] != TYPE2##_nil) { 
\
@@ -275,8 +275,8 @@ BATgroupaggrinit(BAT *b, BAT *g, BAT *e,
}   \
} else {\
if (nil_if_empty && \
-   !(seen[gid >> 5] & (1 << 
(gid & 0x1F { \
-   seen[gid >> 5] |= 1 << 
(gid & 0x1F); \
+   !(seen[gid >> 5] & (1U << 
(gid & 0x1F { \
+   seen[gid >> 5] |= 1U << 
(gid & 0x1F); \
sums[gid] = 0;  \
}   \
if (sums[gid] != TYPE2##_nil) { 
\
@@ -679,8 +679,8 @@ BATsum(void *res, int tp, BAT *b, BAT *s
}   \
} else {\
if (nil_if_empty && \
-   !(seen[gid >> 5] & (1 << (gid & 
0x1F { \
-   seen[gid >> 5] |= 1 << (gid & 
0x1F); \
+   !(seen[gid >> 5] & (1U << (gid & 
0x1F { \
+   seen[gid >> 5] |= 1U << (gid & 
0x1F); \
prods[gid] = 1; \
}   \
if (prods[gid] != TYPE2##_nil) { \
@@ -724,8 +724,8 @@ BATsum(void *res, int tp, BAT *b, BAT *s
gid = (oid) i;  \
}   \
if (nil_if_empty && \
-   !(seen[gid >> 5] & (1 << (gid & 0x1F { \
-   seen[gid >> 5] |= 1 << (gid & 0x1F); \
+   !(seen[gid >> 5] & (1U << (gid & 0x1F { 
\
+   seen[gid >> 5] |= 1U << (gid & 0x1F); \
  

MonetDB: default - Remove unused macro.

2016-08-05 Thread Sjoerd Mullender
Changeset: 32e9a79a78bc for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=32e9a79a78bc
Modified Files:
monetdb5/modules/mal/mkey.c
monetdb5/modules/mal/mkey.h
Branch: default
Log Message:

Remove unused macro.


diffs (24 lines):

diff --git a/monetdb5/modules/mal/mkey.c b/monetdb5/modules/mal/mkey.c
--- a/monetdb5/modules/mal/mkey.c
+++ b/monetdb5/modules/mal/mkey.c
@@ -25,8 +25,6 @@
 #define MKEYHASH_hge(valp) (((lng*)(valp))[0] ^ ((lng*)(valp))[1])
 #endif
 
-#undef GDK_ROTATE
-
 static inline lng
 GDK_ROTATE(lng x, int y, int z, lng m)
 {
diff --git a/monetdb5/modules/mal/mkey.h b/monetdb5/modules/mal/mkey.h
--- a/monetdb5/modules/mal/mkey.h
+++ b/monetdb5/modules/mal/mkey.h
@@ -107,8 +107,6 @@
 #include "mal_interpreter.h"
 #include "mal_exception.h"
 
-#define GDK_ROTATE(x,y,z,m) x) << (y)) & ~(m)) | (((x) >> (z)) & (m)))
-
 mal_export str  MKEYrotate(lng *ret, const lng *v, const int *nbits);
 mal_export str  MKEYhash(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr 
p);
 mal_export str  MKEYrotate_xor_hash(Client cntxt, MalBlkPtr mb, MalStkPtr stk, 
InstrPtr p);
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - add first support for new sql table level key...

2016-08-05 Thread Niels Nes
Changeset: f43f1b79f22a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f43f1b79f22a
Added Files:
sql/test/lateral/Tests/All
sql/test/lateral/Tests/lateral.sql
sql/test/lateral/Tests/lateral.stable.err
sql/test/lateral/Tests/lateral.stable.out
Modified Files:
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_statement.h
sql/include/sql_catalog.h
sql/include/sql_relation.h
sql/server/Makefile.ag
sql/server/rel_exp.c
sql/server/rel_optimizer.c
sql/server/rel_psm.c
sql/server/rel_psm.h
sql/server/rel_rel.c
sql/server/rel_rel.h
sql/server/rel_select.c
sql/server/rel_select.h
sql/server/rel_updates.c
sql/server/sql_parser.y
sql/server/sql_scan.c
sql/server/sql_symbol.c
sql/server/sql_symbol.h
Branch: default
Log Message:

add first support for new sql table level keyword lateral
It allows looking left, into the tables (relations)


diffs (truncated from 1524 to 300 lines):

diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -479,6 +479,9 @@ exp_bin(mvc *sql, sql_exp *e, stmt *left
s = stmt_mirror(sql->sa, l->h->data);
else
*/
+   if (f->func->rel) 
+   s = stmt_func(sql->sa, stmt_list(sql->sa, l), 
sa_strdup(sql->sa, f->func->base.name), f->func->rel, (f->func->type == 
F_UNION));
+   else
s = stmt_Nop(sql->sa, stmt_list(sql->sa, l), e->f); 
}   break;
case e_aggr: {
@@ -1425,8 +1428,18 @@ rel2bin_table( mvc *sql, sql_rel *rel, l
s = stmt_alias(sql->sa, s, rnme, a->name);
list_append(l, s);
}
+   if (list_length(f->res) == list_length(f->func->res) + 
1) {
+   /* add missing %TID% column */
+   sql_subtype *t = f->res->t->data;
+   stmt *s = stmt_rs_column(sql->sa, psub, i, t); 
+   const char *rnme = exp_find_rel_name(op);
+   
+   s = stmt_alias(sql->sa, s, rnme, TID);
+   list_append(l, s);
+   }
}
-   if (!rel->flag && sub && sub->nrcols) { /* add sub, table func 
with table input, we expect alignment */
+   if (!rel->flag && sub && sub->nrcols) { 
+   assert(0);
list_merge(l, sub->op4.lval, NULL);
osub = sub;
}
@@ -1439,7 +1452,7 @@ rel2bin_table( mvc *sql, sql_rel *rel, l
 
l = rel2bin_args(sql, rel->l, sa_list(sql->sa));
sub = stmt_list(sql->sa, l);
-   sub = stmt_func(sql->sa, sub, sa_strdup(sql->sa, nme), rel->l);
+   sub = stmt_func(sql->sa, sub, sa_strdup(sql->sa, nme), rel->l, 
0);
l = sa_list(sql->sa);
for(i = 0, n = rel->exps->h; n; n = n->next, i++ ) {
sql_exp *c = n->data;
diff --git a/sql/backends/monet5/sql_gencode.c 
b/sql/backends/monet5/sql_gencode.c
--- a/sql/backends/monet5/sql_gencode.c
+++ b/sql/backends/monet5/sql_gencode.c
@@ -466,8 +466,10 @@ static int
int type = t->type->localtype;
int varid = 0;
const char *nme = 
(op->op3)?op->op3->op4.aval->data.val.sval:op->cname;
-
-   varid = newVariable(curBlk, (char *)nme, strlen(nme), 
type);
+   char buf[64];
+
+   snprintf(buf,64,"A%s",nme);
+   varid = newVariable(curBlk, (char *)buf, strlen(buf), 
type);
curInstr = pushArgument(curBlk, curInstr, varid);
setVarType(curBlk, varid, type);
setVarUDFtype(curBlk, varid);
@@ -557,8 +559,10 @@ static int
int type = t->type->localtype;
int varid = 0;
const char *nme = 
(op->op3)?op->op3->op4.aval->data.val.sval:op->cname;
-
-   varid = newVariable(curBlk, (char*) nme,strlen(nme), 
type);
+   char buf[64];
+
+   snprintf(buf,64,"A%s",nme);
+   varid = newVariable(curBlk, (char*) buf,strlen(buf), 
type);
curInstr = pushArgument(curBlk, curInstr, varid);
setVarType(curBlk, varid, type);
setVarUDFtype(curBlk, varid);
@@ -2178,8 +2182,15 @@ static int
if (monet5_create_relational_function(s

MonetDB: default - Portability issues.

2016-08-05 Thread Sjoerd Mullender
Changeset: 157a94a141ba for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=157a94a141ba
Modified Files:
configure.ag
Branch: default
Log Message:

Portability issues.
Do not use double quotes inside backquotes inside double quotes.
Also removed a bunch of other unnecessary double quotes.


diffs (truncated from 1085 to 300 lines):

diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -105,23 +105,23 @@ AS_VAR_IF([prefix], [NONE],
[Qprefix="${ac_default_prefix}"].
[Qprefix="${prefix}"])
 
-Qprefix="`echo "$Qprefix" | sed 's///g'`"
+Qprefix=`echo "$Qprefix" | sed 's///g'`
 AC_SUBST([Qprefix])
 # exec_prefix is created very late, so let make do the expansion
 AS_VAR_IF([exec_prefix], [NONE],
[Qexec_prefix='${prefix}'],
-   [Qexec_prefix="`echo "$exec_prefix" | sed 's///g'`"])
+   [Qexec_prefix=`echo "$exec_prefix" | sed 's///g'`])
 AC_SUBST([Qexec_prefix])
 
 # small hack to get icc -no-gcc, done here because AC_PROG_CC shouldn't
 # set GCC=yes if we use icc.
-AS_CASE(["$CC"],
+AS_CASE([$CC],
[*icc*-no-gcc*], [],
[*icc*], [
#  Since version 8.0, ecc/ecpc are also called icc/icpc,
#  and icc/icpc requires "-no-gcc" to avoid predefining
#  __GNUC__, __GNUC_MINOR__, and __GNUC_PATCHLEVEL__ macros.
-   icc_ver="`$CC -dumpversion 2>/dev/null`"
+   icc_ver=`$CC -dumpversion 2>/dev/null`
AS_CASE([$icc_ver],
[8.*], [CC="$CC -no-gcc"],
[9.*], [CC="$CC -no-gcc"],
@@ -192,7 +192,7 @@ AC_ARG_ENABLE([monetdb5],
[enable support for MonetDB5 (default=yes)])],
[enable_monetdb5=$enableval],
[enable_monetdb5=$dft_monetdb5])
-AS_CASE(["$enable_gdk-$enable_monetdb5"],
+AS_CASE([$enable_gdk-$enable_monetdb5],
[no-yes], [AC_MSG_ERROR([MonetDB5 requires GDK.])],
[no-auto], [
enable_monetdb5=no
@@ -204,7 +204,7 @@ AC_ARG_ENABLE([sql],
[enable support for MonetDB/SQL (default=yes)])],
[enable_sql=$enableval],
[enable_sql=$dft_sql])
-AS_CASE(["$enable_monetdb5-$enable_sql"],
+AS_CASE([$enable_monetdb5-$enable_sql],
 [no-yes], [
AC_MSG_ERROR([MonetDB/SQL requires MonetDB5.])],
 [no-auto], [
@@ -217,7 +217,7 @@ AC_ARG_ENABLE([geom],
[enable support for geom module (default=auto)])],
[enable_geom=$enableval],
[enable_geom=$dft_geom])
-AS_CASE(["$enable_monetdb5-$enable_geom"],
+AS_CASE([$enable_monetdb5-$enable_geom],
 [no-yes], [
AC_MSG_ERROR([geom module requires MonetDB5])],
 [no-auto], [
@@ -251,7 +251,7 @@ AC_ARG_ENABLE([shp],
[enable support for ESRI Shapefiles (default=auto)])],
[have_shp=$enableval],
[have_shp=$dft_shp])
-AS_CASE(["$enable_geom-$have_shp"],
+AS_CASE([$enable_geom-$have_shp],
 [no-yes], [
AC_MSG_ERROR([ESRI Shapefile vault requires the geom module])],
 [no-auto], [
@@ -397,7 +397,7 @@ AC_ARG_WITH([password-backend],
[AS_HELP_STRING([--with-password-backend=HASHALG],
[password hash algorithm, one of MD5, SHA1, RIPEMD160, SHA224, 
SHA256, SHA384, SHA512, defaults to SHA512])],
[password_backend="$withval"])
-AS_CASE(["$password_backend"],
+AS_CASE([$password_backend],
[yes|no|auto|""],
[],
[MD5|SHA1|RIPEMD160|SHA224|SHA256|SHA384|SHA512],
@@ -416,7 +416,7 @@ logdir='${localstatedir}/log/monetdb'
 AC_ARG_WITH([logdir],
[AS_HELP_STRING([--with-logdir=DIR],
[Where to put log files (LOCALSTATEDIR/log/monetdb/)])],
-   [AS_CASE(["$withval"],
+   [AS_CASE([$withval],
[yes|no|auto],
[AC_MSG_WARN([--with-logdir called without argument - will use 
default])],
[logdir="$withval"])])
@@ -426,7 +426,7 @@ rundir='${localstatedir}/run/monetdb'
 AC_ARG_WITH([rundir],
[AS_HELP_STRING([--with-rundir=DIR],
[Where to put pid files (LOCALSTATEDIR/run/monetdb/)])],
-   [AS_CASE(["$withval"],
+   [AS_CASE([$withval],
[yes|no|auto],
[AC_MSG_WARN([--with-rundir called without argument - will use 
default])],
[rundir="$withval"])])
@@ -468,20 +468,20 @@ AC_MSG_CHECKING([compiler type & version
 gcc_ver=""
 icc_ver=""
 CC_ver=""
-CC_version="`$CC --version 2>&1`"
-AS_CASE(["$CC_version"],
+CC_version=`$CC --version 2>&1`
+AS_CASE([$CC_version],
[*'(GCC)'*|*'Copyright (C) '*' Free Software Foundation, Inc.'*], [
-   gcc_ver="`$CC -dumpversion 2>/dev/null`"
+   gcc_ver=`$CC -dumpversion 2>/dev/null`
CC_ver="gcc-$gcc_ver"],
[*'(ICC)'*|*'Copyright (C) '*' Intel Corporation.  All rights 
reserved.'*], [
-   icc_ver="`$CC -dumpversion 2>/dev/null`"
+   icc_ver=`$CC -dumpversion 2>/dev/n

MonetDB: iot - Fixed compilation issue

2016-08-05 Thread Martin Kersten
Changeset: a2d709a3668e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a2d709a3668e
Modified Files:
monetdb5/mal/mal_module.c
sql/backends/monet5/iot/Tests/logger.sql
sql/backends/monet5/iot/basket.c
Branch: iot
Log Message:

Fixed compilation issue


diffs (37 lines):

diff --git a/monetdb5/mal/mal_module.c b/monetdb5/mal/mal_module.c
--- a/monetdb5/mal/mal_module.c
+++ b/monetdb5/mal/mal_module.c
@@ -44,7 +44,7 @@ mal_module_reset(void)
 {
Module m,n;
 
-   for( m = moduleChain; m; ){
+   for( m = moduleChain, moduleChain = 0; m; ){
n = m->next;
freeModule(m);
m= n;
diff --git a/sql/backends/monet5/iot/Tests/logger.sql 
b/sql/backends/monet5/iot/Tests/logger.sql
--- a/sql/backends/monet5/iot/Tests/logger.sql
+++ b/sql/backends/monet5/iot/Tests/logger.sql
@@ -9,8 +9,8 @@ begin
insert into log values(now(), iot.getheartbeat('iot','cqlogger'));
 end;
 
+call iot.heartbeat('iot','log',1000);
 call iot.query('iot','cqlogger');
-call iot.heartbeat('iot','log',1000);
 
 -- wait for 2 seconds
 call iot.wait(4000);
diff --git a/sql/backends/monet5/iot/basket.c b/sql/backends/monet5/iot/basket.c
--- a/sql/backends/monet5/iot/basket.c
+++ b/sql/backends/monet5/iot/basket.c
@@ -695,7 +695,7 @@ static str
 BSKTtumbleInternal(Client cntxt, str sch, str tbl, int stride)
 {
BAT *b;
-   BUN cnt= 0, shift;
+   BUN cnt= 0, shift=0;
int i, bskt;
(void) cntxt;
 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list