MonetDB: protocol - mclient support for new block stream, compre...
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
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.
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...
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 ...
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...
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.
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.
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...
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.
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
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