Changeset: e47523ab243d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e47523ab243d
Modified Files:
common/options/monet_options.c
monetdb5/modules/mal/mdb.c
sql/server/rel_select.c
sql/test/subquery/Tests/subquery.sql
sql/test/subquery/Tests/subquery.stable.err
sql/test/subquery/Tests/subquery2.sql
tools/merovingian/ChangeLog.Nov2019
tools/merovingian/daemon/forkmserver.c
tools/merovingian/utils/properties.c
tools/mserver/mserver5.1.in
Branch: default
Log Message:
Merge with Nov2019
diffs (240 lines):
diff --git a/common/options/monet_options.c b/common/options/monet_options.c
--- a/common/options/monet_options.c
+++ b/common/options/monet_options.c
@@ -209,7 +209,6 @@ mo_system_config(opt **Set, int setlen)
return setlen;
}
-
int
mo_builtin_settings(opt **Set)
{
diff --git a/monetdb5/modules/mal/mdb.c b/monetdb5/modules/mal/mdb.c
--- a/monetdb5/modules/mal/mdb.c
+++ b/monetdb5/modules/mal/mdb.c
@@ -869,4 +869,3 @@ CMDmodules(bat *bid)
BBPkeepref(*bid);
return MAL_SUCCEED;
}
-
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -1822,11 +1822,10 @@ rel_compare(sql_query *query, sql_rel *r
/* get inner queries result value, ie
get last expression of r */
- /*
- if (r && list_length(r->exps) != 2)
- return sql_error(sql, 02, SQLSTATE(42000)
"SELECT: subquery must return only one column\n");
- */
if (r) {
+ assert(is_project(r->op));
+ if (list_length(r->exps) != 1)
+ return sql_error(sql, 02,
SQLSTATE(42000) "SELECT: subquery must return only one column\n");
rs = rel_lastexp(sql, r);
if (r->card <= CARD_ATOM) {
@@ -1883,7 +1882,8 @@ rel_compare(sql_query *query, sql_rel *r
}
}
} else if (r) {
- if (list_length(r->exps) != 1)
+ assert(is_project(r->op));
+ if (list_length(r->exps) != 1)
return sql_error(sql, 02, SQLSTATE(42000)
"SELECT: subquery must return only one column\n");
rs = rel_lastexp(sql, r);
@@ -2397,6 +2397,9 @@ rel_logical_value_exp(sql_query *query,
/* get inner queries result value, ie
get last expression of r */
if (r) {
+ assert(is_project(r->op));
+ if (list_length(r->exps) != 1)
+ return sql_error(sql, 02,
SQLSTATE(42000) "SELECT: subquery must return only one column\n");
rs = rel_lastexp(sql, r);
if (quantifier) {
@@ -6774,7 +6777,7 @@ rel_selects(sql_query *query, symbol *s)
exp_kind ek = {type_value, card_relation, TRUE};
SelectNode *sn = (SelectNode *) s;
- if(!stack_push_frame(sql, "SELECT"))
+ if (!stack_push_frame(sql, "SELECT"))
return sql_error(sql, 02, SQLSTATE(HY001)
MAL_MALLOC_FAIL);
if (sn->into) {
diff --git a/sql/test/subquery/Tests/subquery.sql
b/sql/test/subquery/Tests/subquery.sql
--- a/sql/test/subquery/Tests/subquery.sql
+++ b/sql/test/subquery/Tests/subquery.sql
@@ -79,6 +79,8 @@ SELECT 1 FROM integers WHERE SUM(i) > 1;
SELECT SUM(SUM(i)) FROM integers; -- aggregates cannot be nested
+SELECT i1.i FROM integers i1 WHERE i1.i >= (SELECT i1.i, i2.i FROM integers i2
WHERE i2.i > 1); --error, subquery must return a single column
+
drop TABLE integers;
-- varchar tests
diff --git a/sql/test/subquery/Tests/subquery.stable.err
b/sql/test/subquery/Tests/subquery.stable.err
--- a/sql/test/subquery/Tests/subquery.stable.err
+++ b/sql/test/subquery/Tests/subquery.stable.err
@@ -54,6 +54,10 @@ MAPI = (monetdb) /var/tmp/mtest-1030/.s
QUERY = SELECT SUM(SUM(i)) FROM integers; -- aggregates cannot be nested
ERROR = !SUM: aggregate functions cannot be nested
CODE = 42000
+MAPI = (monetdb) /var/tmp/mtest-8966/.s.monetdb.37628
+QUERY = SELECT i1.i FROM integers i1 WHERE i1.i >= (SELECT i1.i, i2.i FROM
integers i2 WHERE i2.i > 1); --error, subquery must return a single column
+ERROR = !SELECT: subquery must return only one column
+CODE = 42000
# 17:27:37 >
# 17:27:37 > "Done."
diff --git a/sql/test/subquery/Tests/subquery2.sql
b/sql/test/subquery/Tests/subquery2.sql
--- a/sql/test/subquery/Tests/subquery2.sql
+++ b/sql/test/subquery/Tests/subquery2.sql
@@ -106,7 +106,7 @@ GROUP BY col1;
-- TODO incorrect empty result
SELECT NOT col2 <> ANY (SELECT 20 FROM tbl_ProductSales GROUP BY ColID HAVING
NOT MAX(col1) <> col1 * AVG(col1 + ColID) * ColID) FROM another_T GROUP BY
col1, col2, col5, col8;
-/*
+/* BROKEN
SELECT
NOT -SUM(col2) NOT IN (SELECT ColID FROM tbl_ProductSales GROUP BY
ColID HAVING SUM(ColID - col8) <> col5),
NOT col5 = ALL (SELECT 1 FROM tbl_ProductSales HAVING MAX(col8) > 2 AND
MIN(col8) IS NOT NULL),
@@ -220,6 +220,32 @@ FROM another_T t1;
-- NULL
SELECT
+ CASE WHEN 1 IN (SELECT MAX(col7) UNION ALL (SELECT MIN(ColID) FROM
tbl_ProductSales INNER JOIN another_T t2 ON t2.col5 = t2.col1)) THEN 2 ELSE
NULL END
+FROM another_T t1;
+ -- NULL
+ -- NULL
+ -- NULL
+ -- NULL
+
+/* BROKEN
+SELECT
+ CASE WHEN 1 IN (SELECT (SELECT MAX(col7))) THEN 2 ELSE NULL END
+FROM another_T t1;
+*/
+ -- NULL
+ -- NULL
+ -- NULL
+ -- NULL
+
+SELECT
+ CASE WHEN 1 IN (SELECT (SELECT MIN(ColID) FROM tbl_ProductSales INNER
JOIN another_T t2 ON t2.col5 = t2.col1) UNION ALL (SELECT MAX(col7))) THEN 2
ELSE NULL END
+FROM another_T t1;
+ -- NULL
+ -- NULL
+ -- NULL
+ -- NULL
+
+SELECT
CASE WHEN NOT col1 NOT IN (SELECT (SELECT MAX(col7)) UNION (SELECT
MIN(ColID) FROM tbl_ProductSales LEFT JOIN another_T t2 ON t2.col5 = t1.col1))
THEN 1 ELSE 2 END
FROM another_T t1
GROUP BY col1;
diff --git a/tools/merovingian/ChangeLog.Nov2019
b/tools/merovingian/ChangeLog.Nov2019
--- a/tools/merovingian/ChangeLog.Nov2019
+++ b/tools/merovingian/ChangeLog.Nov2019
@@ -1,6 +1,11 @@
# ChangeLog file for sql/src/backends/monet5/merovingian
# This file is updated with mchangelog
+* Thu Oct 17 2019 Pedro Ferreira <[email protected]>
+- Added "vmmaxsize" and "memmaxsize" mserver5 options to the daemon in
+ order to set mserver5's maximum virtual and committed memory
+ respectively.
+
* Thu May 2 2019 Pedro Ferreira <[email protected]>
- Added ipv6 property to monetdbd properties to force IPv6 addresses
binding only. By default this property is false to allow IPv4
diff --git a/tools/merovingian/daemon/forkmserver.c
b/tools/merovingian/daemon/forkmserver.c
--- a/tools/merovingian/daemon/forkmserver.c
+++ b/tools/merovingian/daemon/forkmserver.c
@@ -201,14 +201,16 @@ forkMserver(char *database, sabdb** stat
char *sabdbfarm;
char dbpath[1024];
char dbextra_path[1024];
- char port[24];
+ char port[32];
char listenaddr[512];
char muri[512]; /* possibly undersized */
char usock[512];
char mydoproxy;
- char nthreads[24];
- char nclients[24];
+ char nthreads[32];
+ char nclients[32];
char pipeline[512];
+ char memmaxsize[64];
+ char vmmaxsize[64];
char *readonly = NULL;
char *embeddedr = NULL;
char *embeddedpy = NULL;
@@ -475,6 +477,20 @@ forkMserver(char *database, sabdb** stat
pipeline[0] = '\0';
}
+ kv = findConfKey(ckv, "memmaxsize");
+ if (kv->val != NULL) {
+ snprintf(memmaxsize, sizeof(memmaxsize), "gdk_mem_maxsize=%s",
kv->val);
+ } else {
+ memmaxsize[0] = '\0';
+ }
+
+ kv = findConfKey(ckv, "vmmaxsize");
+ if (kv->val != NULL) {
+ snprintf(vmmaxsize, sizeof(vmmaxsize), "gdk_vm_maxsize=%s",
kv->val);
+ } else {
+ vmmaxsize[0] = '\0';
+ }
+
kv = findConfKey(ckv, "readonly");
if (kv->val != NULL && strcmp(kv->val, "no") != 0)
readonly = "--readonly";
@@ -584,6 +600,12 @@ forkMserver(char *database, sabdb** stat
if (pipeline[0] != '\0') {
argv[c++] = "--set"; argv[c++] = pipeline;
}
+ if (memmaxsize[0] != '\0') {
+ argv[c++] = "--set"; argv[c++] = memmaxsize;
+ }
+ if (vmmaxsize[0] != '\0') {
+ argv[c++] = "--set"; argv[c++] = vmmaxsize;
+ }
if (embeddedr != NULL) {
argv[c++] = "--set"; argv[c++] = embeddedr;
}
diff --git a/tools/merovingian/utils/properties.c
b/tools/merovingian/utils/properties.c
--- a/tools/merovingian/utils/properties.c
+++ b/tools/merovingian/utils/properties.c
@@ -39,6 +39,8 @@ static const confkeyval _internal_prop_k
{"nclients", NULL, 0, INT},
{"mfunnel", NULL, 0, STR},
{"dbextra", NULL, 0, STR},
+ {"memmaxsize", NULL, 0, INT},
+ {"vmmaxsize", NULL, 0, INT},
{ NULL, NULL, 0, INVALID}
};
diff --git a/tools/mserver/mserver5.1.in b/tools/mserver/mserver5.1.in
--- a/tools/mserver/mserver5.1.in
+++ b/tools/mserver/mserver5.1.in
@@ -74,15 +74,6 @@ This file can contain all options as can
See
.IR "CONFIG FILE FORMAT" .
.TP
-.B \-\-daemon=yes
-.PD 0
-.TP
-.B \-\-daemon=no
-.PD
-Disable the console prompt, do not read commands from standard input.
-Default:
-.BR no .
-.TP
\fB\-\-set\fP \fIoption\fP\fB=\fP\fIvalue\fP
Set individual configuration option.
For possible options, see
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list