Changeset: 7bc61183af34 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7bc61183af34 Branch: default Log Message:
Merge with Oct2020 branch. diffs (144 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 @@ -441,8 +441,8 @@ SERVERlistenThread(SOCKET *Sock) TRC_CRITICAL(MAL_SERVER, "Unknown command type in first byte\n"); continue; } + } #endif - } data = GDKmalloc(sizeof(*data)); if( data == NULL){ @@ -709,15 +709,11 @@ SERVERlisten(int port, const char *usock throw(ILLARG, "mal_mapi.listen", OPERATION_FAILED ": port number should be between 0 and 65535"); } - psock = GDKmalloc(sizeof(socks)); - if (psock == NULL) - throw(MAL,"mal_mapi.listen", SQLSTATE(HY013) MAL_MALLOC_FAIL); socks[0] = socks[1] = socks[2] = INVALID_SOCKET; if (listenaddr == NULL || strcmp(listenaddr, "none") != 0) { char *msg = start_listen(socks, &port, listenaddr, host, sizeof(host), maxusers); if (msg != MAL_SUCCEED) { - GDKfree(psock); return msg; } } @@ -732,7 +728,6 @@ SERVERlisten(int port, const char *usock closesocket(socks[0]); if (socks[1] != INVALID_SOCKET) closesocket(socks[1]); - GDKfree(psock); throw(MAL, "mal_mapi.listen", OPERATION_FAILED ": UNIX socket path too long: %s", usockfile); @@ -753,7 +748,6 @@ SERVERlisten(int port, const char *usock closesocket(socks[0]); if (socks[1] != INVALID_SOCKET) closesocket(socks[1]); - GDKfree(psock); throw(IO, "mal_mapi.listen", OPERATION_FAILED ": creation of UNIX socket failed: %s", err); } @@ -772,7 +766,6 @@ SERVERlisten(int port, const char *usock if (socks[1] != INVALID_SOCKET) closesocket(socks[1]); closesocket(socks[2]); - GDKfree(psock); return e; } if (bind(socks[2], (struct sockaddr *) &userver, length) == SOCKET_ERROR) { @@ -787,7 +780,6 @@ SERVERlisten(int port, const char *usock closesocket(socks[1]); closesocket(socks[2]); (void) remove(usockfile); - GDKfree(psock); throw(IO, "mal_mapi.listen", OPERATION_FAILED ": binding to UNIX socket file %s failed: %s", @@ -805,7 +797,6 @@ SERVERlisten(int port, const char *usock closesocket(socks[1]); closesocket(socks[2]); (void) remove(usockfile); - GDKfree(psock); throw(IO, "mal_mapi.listen", OPERATION_FAILED ": setting UNIX socket file %s to listen failed: %s", @@ -818,17 +809,21 @@ SERVERlisten(int port, const char *usock * predictable... */ srand((unsigned int) GDKusec()); + psock = GDKmalloc(sizeof(socks)); + if (psock == NULL) { + for (int i = 0; i < 3; i++) { + if (socks[i] != INVALID_SOCKET) + closesocket(socks[i]); + } + throw(MAL,"mal_mapi.listen", SQLSTATE(HY013) MAL_MALLOC_FAIL); + } memcpy(psock, socks, sizeof(socks)); if (MT_create_thread(&pid, (void (*)(void *)) SERVERlistenThread, psock, MT_THR_DETACHED, "listenThread") != 0) { - if (socks[0] != INVALID_SOCKET) - closesocket(socks[0]); - if (socks[1] != INVALID_SOCKET) - closesocket(socks[1]); -#ifdef HAVE_SYS_UN_H - if (socks[2] != INVALID_SOCKET) - closesocket(socks[2]); -#endif + for (int i = 0; i < 3; i++) { + if (socks[i] != INVALID_SOCKET) + closesocket(socks[i]); + } GDKfree(psock); throw(MAL, "mal_mapi.listen", OPERATION_FAILED ": starting thread failed"); } diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c --- a/sql/server/rel_optimizer.c +++ b/sql/server/rel_optimizer.c @@ -5983,15 +5983,6 @@ rel_groupby_distinct(visitor *v, sql_rel } } - /*if the input expressions are atoms, drop distinct property */ - if (is_groupby(rel->op) && !list_empty(rel->exps)) { - for (n=rel->exps->h; n ; n = n->next) { - sql_exp *e = n->data; - if (e->type == e_aggr && need_distinct(e) && (!e->l || exps_are_atoms(e->l))) - set_nodistinct(e); - } - } - if (is_groupby(rel->op)) { sql_rel *l = rel->l; if (!l || is_groupby(l->op)) diff --git a/sql/test/miscellaneous/Tests/groupby_error.sql b/sql/test/miscellaneous/Tests/groupby_error.sql --- a/sql/test/miscellaneous/Tests/groupby_error.sql +++ b/sql/test/miscellaneous/Tests/groupby_error.sql @@ -193,7 +193,7 @@ SELECT CAST(COUNT ( DISTINCT + CAST ( NU -- 93 -- 93 select group_concat(distinct 'a') from tab0; - -- a,a,a + -- a INSERT INTO "tab0" VALUES (83, 0, 38), (26, 0, 79), (43, 81, 24); select group_concat(distinct col1, col2) from tab0 group by col0; -- 0 diff --git a/sql/test/miscellaneous/Tests/groupby_error.stable.out b/sql/test/miscellaneous/Tests/groupby_error.stable.out --- a/sql/test/miscellaneous/Tests/groupby_error.stable.out +++ b/sql/test/miscellaneous/Tests/groupby_error.stable.out @@ -501,8 +501,8 @@ project ( % .%1 # table_name % %1 # name % clob # type -% 5 # length -[ "a,a,a" ] +% 1 # length +[ "a" ] #INSERT INTO "tab0" VALUES (83, 0, 38), (26, 0, 79), (43, 81, 24); [ 3 ] #ROLLBACK; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list