MonetDB: Mar2018 - Merge with Jul2017 branch.
Changeset: 65ae38a9ac5e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=65ae38a9ac5e Added Files: sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128 Removed Files: sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64 Branch: Mar2018 Log Message: Merge with Jul2017 branch. diffs (3 lines): diff --git a/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64 b/sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128 rename from sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64 rename to sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128 ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Mar2018 - Merge with Jul2017 branch.
Changeset: f8357589dd10 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f8357589dd10 Modified Files: sql/server/rel_schema.c sql/server/sql_parser.y sql/storage/store.c sql/test/mergetables/Tests/alter.stable.err Branch: Mar2018 Log Message: Merge with Jul2017 branch. diffs (103 lines): diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c --- a/sql/server/rel_schema.c +++ b/sql/server/rel_schema.c @@ -1352,15 +1352,19 @@ sql_alter_table(mvc *sql, dlist *qname, sname = s->base.name; if (te && (te->token == SQL_TABLE || te->token == SQL_DROP_TABLE)) { - char *ntname = te->data.lval->h->data.sval; + dlist *nqname = te->data.lval->h->data.lval; + char *nsname = qname_schema(nqname); + char *ntname = qname_table(nqname); - /* TODO partition sname */ + /* partition sname */ + if (!nsname) + nsname = sname; if (te->token == SQL_TABLE) { - return rel_alter_table(sql->sa, DDL_ALTER_TABLE_ADD_TABLE, sname, tname, sname, ntname, 0); + return rel_alter_table(sql->sa, DDL_ALTER_TABLE_ADD_TABLE, sname, tname, nsname, ntname, 0); } else { int drop_action = te->data.lval->h->next->data.i_val; - return rel_alter_table(sql->sa, DDL_ALTER_TABLE_DEL_TABLE, sname, tname, sname, ntname, drop_action); + return rel_alter_table(sql->sa, DDL_ALTER_TABLE_DEL_TABLE, sname, tname, nsname, ntname, drop_action); } } diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y --- a/sql/server/sql_parser.y +++ b/sql/server/sql_parser.y @@ -1055,7 +1055,7 @@ alter_statement: | ALTER TABLE qname ADD TABLE qname { dlist *l = L(); append_list(l, $3); - append_symbol(l, _symbol_create_list( SQL_TABLE, $6)); + append_symbol(l, _symbol_create_list( SQL_TABLE, append_list(L(),$6))); $$ = _symbol_create_list( SQL_ALTER_TABLE, l ); } | ALTER TABLE qname ALTER alter_table_element { dlist *l = L(); @@ -1168,9 +1168,9 @@ drop_table_element: append_string(l, $2 ); append_int(l, $3 ); $$ = _symbol_create_list( SQL_DROP_CONSTRAINT, l ); } - | TABLE ident drop_action + | TABLE qname drop_action { dlist *l = L(); - append_string(l, $2 ); + append_list(l, $2 ); append_int(l, $3 ); append_int(l, 0); append_int(l, FALSE ); /* no if exists check */ diff --git a/sql/storage/store.c b/sql/storage/store.c --- a/sql/storage/store.c +++ b/sql/storage/store.c @@ -565,7 +565,6 @@ load_part(sql_trans *tr, sql_table *t, o v = table_funcs.column_find_value(tr, find_sql_column(objects, "nr"), rid); id = *(sqlid*)v; _DELETE(v); v = table_funcs.column_find_value(tr, find_sql_column(objects, "name"), rid); - /* limitation, parts can only be within the same schema */ base_init(tr->sa, >base, id, TR_OLD, v);_DELETE(v); cs_add(>members, pt, TR_OLD); } @@ -1015,7 +1014,6 @@ load_schema(sql_trans *tr, sqlid id, oid for(rid = table_funcs.rids_next(rs); !is_oid_nil(rid); rid = table_funcs.rids_next(rs)) cs_add(>seqs, load_seq(tr, s, rid), TR_OLD); table_funcs.rids_destroy(rs); - set_members(>tables); return s; } @@ -1068,6 +1066,7 @@ load_trans(sql_trans* tr, sqlid id) sql_column *sysschema_ids = find_sql_column(sysschema, "id"); rids *schemas = table_funcs.rids_select(tr, sysschema_ids, NULL, NULL); oid rid; + node *n; if (bs_debug) fprintf(stderr, "#load trans\n"); @@ -1077,6 +1076,12 @@ load_trans(sql_trans* tr, sqlid id) if (ns && ns->base.id > id) cs_add(>schemas, ns, TR_OLD); } + /* members maybe from different schemas */ + for (n = tr->schemas.set->h; n; n = n->next) { + sql_schema *s = n->data; + + set_members(>tables); + } table_funcs.rids_destroy(schemas); } diff --git a/sql/test/mergetables/Tests/alter.stable.err b/sql/test/mergetables/Tests/alter.stable.err --- a/sql/test/mergetables/Tests/alter.stable.err +++ b/sql/test/mergetables/Tests/alter.stable.err @@ -40,7 +40,7 @@ ERROR = !ALTER TABLE: no such table 'par CODE = 42S02 MAPI = (monetdb) /var/tmp/mtest-30274/.s.monetdb.37685 QUERY = alter table mys.smalltable add table mys.part1; -ERROR = !ALTER TABLE: no such table 'mys' in schema 'mys' +ERROR = !ALTER TABLE: no such table 'part1' in schema 'mys' CODE = 42S02 MAPI = (monetdb)
MonetDB: Mar2018 - Merge with Jul2017 branch.
Changeset: 8454418ea840 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8454418ea840 Modified Files: gdk/gdk_select.c Branch: Mar2018 Log Message: Merge with Jul2017 branch. diffs (13 lines): diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c --- a/gdk/gdk_select.c +++ b/gdk/gdk_select.c @@ -1621,7 +1621,8 @@ BATselect(BAT *b, BAT *s, const void *tl bn->tsorted = 1; bn->trevsorted = bn->batCount <= 1; bn->tkey = 1; - bn->tseqbase = (bn->tdense = bn->batCount <= 1) != 0 ? 0 : oid_nil; + bn->tdense = bn->batCount <= 1; + bn->tseqbase = bn->tdense ? bn->batCount == 0 ? 0 : * (oid *) Tloc(bn, 0) : oid_nil; bn->tnil = 0; bn->tnonil = 1; if (s) { ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Mar2018 - Merge with Jul2017 branch.
Changeset: a70b6a528343 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a70b6a528343 Added Files: sql/test/BugTracker-2018/Tests/aggr-in-case.Bug-6526.stable.out.int128 sql/test/BugTracker-2018/Tests/ilike.Bug-6547.sql sql/test/BugTracker-2018/Tests/ilike.Bug-6547.stable.err sql/test/BugTracker-2018/Tests/ilike.Bug-6547.stable.out Modified Files: monetdb5/modules/mal/pcre.c sql/test/BugTracker-2018/Tests/All sql/test/BugTracker-2018/Tests/aggr-in-case.Bug-6526.stable.out Branch: Mar2018 Log Message: Merge with Jul2017 branch. diffs (truncated from 356 to 300 lines): diff --git a/monetdb5/modules/mal/pcre.c b/monetdb5/modules/mal/pcre.c --- a/monetdb5/modules/mal/pcre.c +++ b/monetdb5/modules/mal/pcre.c @@ -92,24 +92,15 @@ typedef struct RE { static const char * strcasestr(const char *haystack, const char *needle) { - const char *p, *np = 0, *startn = 0; + size_t nlen = strlen(needle); - for (p = haystack; *p; p++) { - if (np) { - if (toupper(*p) == toupper(*np)) { - if (!*++np) - return startn; - } else - np = 0; - } else if (toupper(*p) == toupper(*needle)) { - np = needle + 1; - startn = p; - if (!*np) - return startn; - } + if (nlen == 0) + return haystack; + for (size_t hlen = strlen(haystack); nlen <= hlen; haystack++, hlen--) { + if (strncasecmp(haystack, needle, nlen) == 0) + return haystack; } - - return 0; + return NULL; } #endif diff --git a/sql/test/BugTracker-2018/Tests/All b/sql/test/BugTracker-2018/Tests/All --- a/sql/test/BugTracker-2018/Tests/All +++ b/sql/test/BugTracker-2018/Tests/All @@ -13,7 +13,7 @@ update-with-correlated-subquery.Bug-6520 sqlitelogictest-in-single-column.Bug-6522 sqlitelogictest-case-subquery-missing.Bug-6523 sqlitelogictest-group-by-having-in-count.Bug-6524 -HAVE_HGE?aggr-in-case.Bug-6526 +aggr-in-case.Bug-6526 crash-orderby-alias.Bug-6527 sqlitelogictest-in-cast-null.Bug-6529 sqlitelogictest-not-in-wrong-results.Bug-6530 @@ -25,3 +25,4 @@ truncate_sys_tables.Bug-6543 truncate_empty_table.Bug-6544 sqlitelogictest-in-query.Bug-6545 sqlitelogictest-in-with-division.Bug-6546 +ilike.Bug-6547 diff --git a/sql/test/BugTracker-2018/Tests/aggr-in-case.Bug-6526.stable.out b/sql/test/BugTracker-2018/Tests/aggr-in-case.Bug-6526.stable.out --- a/sql/test/BugTracker-2018/Tests/aggr-in-case.Bug-6526.stable.out +++ b/sql/test/BugTracker-2018/Tests/aggr-in-case.Bug-6526.stable.out @@ -8,7 +8,7 @@ stdout of test 'aggr-in-case.Bug-6526` i # MonetDB 5 server v11.27.14 # This is an unreleased version # Serving database 'mTests_sql_test_BugTracker-2018', using 4 threads -# Compiled for x86_64-unknown-linux-gnu/64bit with 128bit integers +# Compiled for x86_64-unknown-linux-gnu/64bit # Found 7.324 GiB available main-memory. # Copyright (c) 1993 - July 2008 CWI. # Copyright (c) August 2008 - 2018 MonetDB B.V., all rights reserved @@ -51,7 +51,7 @@ Ready. #having sum("d1") < case when 5 > 10 then 500 else 400 end; % sys.t1, sys.L4, sys.L7 # table_name % c1, d1, d2 # name -% varchar, hugeint,hugeint # type +% varchar, bigint, bigint # type % 1, 3, 3 # length [ "A", 339,555 ] #select @@ -63,8 +63,8 @@ Ready. #group by "c1"; % sys.t1, sys.L4, sys.L7, sys.L14 # table_name % c1, d1, d2, formula # name -% varchar, hugeint,hugeint,decimal # type -% 1, 4, 4, 40 # length +% varchar, bigint, bigint, decimal # type +% 1, 4, 4, 20 # length [ "A", 339,555,0.610 ] [ "B", 5039, 610,8.260 ] [ "C", 6011, 9207, 0.652 ] @@ -79,8 +79,8 @@ Ready. #having (1.0 * sum("d1") / (1.0 * case when sum("d2") > 0 then sum("d2") else null end)) > 1; % sys.t1, sys.L4, sys.L7, sys.L14 # table_name % c1, d1, d2, formula # name -% varchar, hugeint,hugeint,decimal # type -% 1, 4, 3, 40 # length +% varchar, bigint, bigint, decimal # type +% 1, 4, 3, 20 # length [ "B", 5039, 610,8.260 ] #rollback; diff --git a/sql/test/BugTracker-2018/Tests/aggr-in-case.Bug-6526.stable.out.int128 b/sql/test/BugTracker-2018/Tests/aggr-in-case.Bug-6526.stable.out.int128 new file mode 100644 --- /dev/null +++ b/sql/test/BugTracker-2018/Tests/aggr-in-case.Bug-6526.stable.out.int128 @@ -0,0 +1,90 @@ +stdout of test 'aggr-in-case.Bug-6526` in directory 'sql/test/BugTracker-2018` itself: + + +# 18:07:27 > +# 18:07:27 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=35745" "--set"
MonetDB: Mar2018 - Merge with Jul2017 branch.
Changeset: 8cbeb3388a48 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8cbeb3388a48 Modified Files: clients/mapiclient/mclient.c Branch: Mar2018 Log Message: Merge with Jul2017 branch. diffs (66 lines): diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c --- a/clients/mapiclient/mclient.c +++ b/clients/mapiclient/mclient.c @@ -1632,27 +1632,27 @@ SQLrenderer(MapiHdl hdl, char singleinst SQLseparator(len, printfields, '-'); rows = mapi_get_row_count(hdl); snprintf(buf, sizeof(buf), "%" PRId64 " rows", rows); - printf("%" PRId64 " tuple%s", rows, rows != 1 ? "s" : ""); + mnstr_printf(toConsole, "%" PRId64 " tuple%s", rows, rows != 1 ? "s" : ""); if (fields != printfields || croppedfields > 0) - printf(" !"); + mnstr_printf(toConsole, " !"); if (fields != printfields) { rows = fields - printfields; - printf("%" PRId64 " column%s dropped", rows, rows != 1 ? "s" : ""); + mnstr_printf(toConsole, "%" PRId64 " column%s dropped", rows, rows != 1 ? "s" : ""); } if (fields != printfields && croppedfields > 0) - printf(", "); + mnstr_printf(toConsole, ", "); if (croppedfields > 0) - printf("%d field%s truncated", + mnstr_printf(toConsole, "%d field%s truncated", croppedfields, croppedfields != 1 ? "s" : ""); if (fields != printfields || croppedfields > 0) { - printf("!"); + mnstr_printf(toConsole, "!"); if (firstcrop == 1) { firstcrop = 0; - printf("\nnote: to disable dropping columns and/or truncating fields use \\w-1"); + mnstr_printf(toConsole, "\nnote: to disable dropping columns and/or truncating fields use \\w-1"); } } - printf("\n"); + mnstr_printf(toConsole, "\n"); free(len); free(hdr); @@ -1837,7 +1837,7 @@ format_result(Mapi mid, MapiHdl hdl, cha formatter == TESTformatter) mnstr_printf(toConsole, "[ %" PRId64 "\t]\n", mapi_rows_affected(hdl)); else if (formatter == TRASHformatter) { - printf("%s\n", timerHuman(sqloptimizer, maloptimizer, querytime)); + mnstr_printf(toConsole, "%s\n", timerHuman(sqloptimizer, maloptimizer, querytime)); } else { aff = mapi_rows_affected(hdl); lid = mapi_get_last_id(hdl); @@ -1866,7 +1866,7 @@ format_result(Mapi mid, MapiHdl hdl, cha timerHuman(sqloptimizer, maloptimizer, querytime)); mnstr_printf(toConsole, "\n"); } else if (formatter == TRASHformatter) { - printf("%s\n", timerHuman(sqloptimizer, maloptimizer, querytime)); + mnstr_printf(toConsole, "%s\n", timerHuman(sqloptimizer, maloptimizer, querytime)); } continue; case Q_TRANS: @@ -1956,7 +1956,7 @@ format_result(Mapi mid, MapiHdl hdl, cha } s= timerHuman(sqloptimizer, maloptimizer, querytime); if (*s) - printf("%s\n", s); + mnstr_printf(toConsole, "%s\n", s); } } while (!mnstr_errnr(toConsole) && (rc = mapi_next_result(hdl)) == 1); if (mnstr_errnr(toConsole)) { ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Mar2018 - Merge with Jul2017 branch.
Changeset: a68070b785c0 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a68070b785c0 Modified Files: clients/mapiclient/mclient.c Branch: Mar2018 Log Message: Merge with Jul2017 branch. ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Mar2018 - Merge with Jul2017 branch.
Changeset: 045a9013d4dd for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=045a9013d4dd Modified Files: buildtools/ChangeLog.Jul2017 gdk/gdk_project.c Branch: Mar2018 Log Message: Merge with Jul2017 branch. diffs (26 lines): diff --git a/buildtools/ChangeLog.Jul2017 b/buildtools/ChangeLog.Jul2017 --- a/buildtools/ChangeLog.Jul2017 +++ b/buildtools/ChangeLog.Jul2017 @@ -1,3 +1,7 @@ # ChangeLog file for buildtools # This file is updated with Maddlog +* Mon Feb 12 2018 Sjoerd Mullender+- Added the .pdb files needed for debug symbols to the Windows installer + for MonetDB/SQL. + diff --git a/gdk/gdk_project.c b/gdk/gdk_project.c --- a/gdk/gdk_project.c +++ b/gdk/gdk_project.c @@ -226,9 +226,10 @@ BATproject(BAT *l, BAT *r) bn->tkey ? "-key" : ""); return bn; } + /* if l has type void, it is either empty or not dense (i.e. nil) */ if (l->ttype == TYPE_void || BATcount(l) == 0 || (r->ttype == TYPE_void && is_oid_nil(r->tseqbase))) { - /* trivial: all values are nil */ + /* trivial: all values are nil (includes no entries at all) */ const void *nil = ATOMnilptr(r->ttype); bn = BATconstant(l->hseqbase, r->ttype == TYPE_oid ? TYPE_void : r->ttype, ___ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list
MonetDB: Mar2018 - Merge with Jul2017 branch.
Changeset: 299f427e2881 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=299f427e2881 Modified Files: NT/monetdb_config.h.in clients/mapiclient/mnc.c clients/mapilib/mapi.c common/stream/stream.c configure.ag monetdb5/mal/mal_parser.c monetdb5/modules/atoms/json.c monetdb5/modules/mal/language.c monetdb5/modules/mal/mal_mapi.c tools/merovingian/daemon/client.c tools/merovingian/daemon/connections.c tools/merovingian/daemon/controlrunner.c tools/merovingian/daemon/forkmserver.c tools/merovingian/daemon/handlers.c tools/merovingian/daemon/merovingian.c tools/merovingian/daemon/multiplex-funnel.c tools/merovingian/daemon/proxy.c tools/merovingian/utils/control.c tools/merovingian/utils/properties.c tools/mserver/shutdowntest.c Branch: Mar2018 Log Message: Merge with Jul2017 branch. diffs (truncated from 1056 to 300 lines): diff --git a/NT/monetdb_config.h.in b/NT/monetdb_config.h.in --- a/NT/monetdb_config.h.in +++ b/NT/monetdb_config.h.in @@ -892,10 +892,6 @@ c99_snprintf(char *outBuf, size_t size, #define ssize_t int #endif -/* normally defined in fcntl.h, but not on Windows */ -#define O_CLOEXEC 0 - - typedef int64_t lng; typedef uint64_t ulng; #define SIZEOF_LNG 8 diff --git a/clients/mapiclient/mnc.c b/clients/mapiclient/mnc.c --- a/clients/mapiclient/mnc.c +++ b/clients/mapiclient/mnc.c @@ -55,6 +55,9 @@ #define SOCKLEN int #endif +#if !defined(HAVE_ACCEPT4) || !defined(SOCK_CLOEXEC) +#define accept4(sockfd, addr, addlen, flags) accept(sockfd, addr, addrlen) +#endif static void usage(void) @@ -162,15 +165,19 @@ main(int argc, char **argv) exit(1); } for (rp = res; rp; rp = rp->ai_next) { - s = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); + s = socket(rp->ai_family, rp->ai_socktype +#ifdef SOCK_CLOEXEC + | SOCK_CLOEXEC +#endif + , rp->ai_protocol); if (s == INVALID_SOCKET) continue; if (connect(s, rp->ai_addr, (socklen_t) rp->ai_addrlen) != SOCKET_ERROR) break; /* success */ closesocket(s); } -#ifdef HAVE_FCNTL - fcntl(s, F_SETFD, FD_CLOEXEC); +#if !defined(SOCK_CLOEXEC) && defined(HAVE_FCNTL) + (void) fcntl(s, F_SETFD, FD_CLOEXEC); #endif freeaddrinfo(res); if (rp == NULL) { @@ -191,14 +198,18 @@ main(int argc, char **argv) memcpy(_addr, hp->h_addr_list[0], hp->h_length); server.sin_family = hp->h_addrtype; server.sin_port = htons((unsigned short) (port & 0x)); - s = socket(server.sin_family, SOCK_STREAM, IPPROTO_TCP); + s = socket(server.sin_family, SOCK_STREAM +#ifdef SOCK_CLOEXEC + | SOCK_CLOEXEC +#endif + , IPPROTO_TCP); if (s == INVALID_SOCKET) { fprintf(stderr, "opening socket failed: %s\n", strerror(errno)); exit(1); } -#ifdef HAVE_FCNTL - fcntl(s, F_SETFD, FD_CLOEXEC); +#if !defined(SOCK_CLOEXEC) && defined(HAVE_FCNTL) + (void) fcntl(s, F_SETFD, FD_CLOEXEC); #endif if (connect(s, serv, sizeof(server)) == SOCKET_ERROR) { @@ -220,12 +231,16 @@ main(int argc, char **argv) exit(1); } - if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { + if ((sock = socket(AF_INET, SOCK_STREAM +#ifdef SOCK_CLOEXEC + | SOCK_CLOEXEC +#endif + , 0)) == INVALID_SOCKET) { fprintf(stderr, "failed to create socket: %s\n", strerror(errno)); exit(1); } -#ifdef HAVE_FCNTL - fcntl(sock, F_SETFD, FD_CLOEXEC); +#if !defined(SOCK_CLOEXEC) && defined(HAVE_FCNTL) + (void) fcntl(sock, F_SETFD, FD_CLOEXEC); #endif setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char *) , sizeof on); @@ -244,13 +259,13 @@ main(int argc, char **argv) } listen(sock, 1); - if ((s = accept(sock, (SOCKPTR)0, (socklen_t *)0)) == INVALID_SOCKET) { + if ((s = accept4(sock, (SOCKPTR)0, (socklen_t *)0, SOCK_CLOEXEC)) == INVALID_SOCKET) { fprintf(stderr, "failed to accept connection: %s\n", strerror(errno)); exit(1); } -#ifdef HAVE_FCNTL - fcntl(s, F_SETFD, FD_CLOEXEC); +#if