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

Reply via email to