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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list