Changeset: 48b9f94f43ec for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/48b9f94f43ec
Branch: sqlfuncfix
Log Message:

Merged with default


diffs (135 lines):

diff --git a/sql/server/rel_unnest.c b/sql/server/rel_unnest.c
--- a/sql/server/rel_unnest.c
+++ b/sql/server/rel_unnest.c
@@ -3121,7 +3121,8 @@ rewrite_exists(visitor *v, sql_rel *rel,
                        }
 
                        sq = exp_rel_get_rel(v->sql->sa, ie); /* get subquery */
-
+                       if (is_set(sq->op) && list_length(sq->exps) > 1) /* 
number of expressions in set relations must match the children */
+                               sq = rel_project(v->sql->sa, sq, 
rel_projections(v->sql, sq, NULL, 1, 1));
                        le = rel_reduce2one_exp(v->sql, sq);
                        le = exp_ref(v->sql, le);
                        if (is_project(rel->op) && is_freevar(le)) {
diff --git a/sql/test/SQLancer/Tests/sqlancer18.test 
b/sql/test/SQLancer/Tests/sqlancer18.test
--- a/sql/test/SQLancer/Tests/sqlancer18.test
+++ b/sql/test/SQLancer/Tests/sqlancer18.test
@@ -547,3 +547,8 @@ DROP TABLE t0
 statement ok
 DROP TABLE t1
 
+query T nosort
+select (case when false then v100.vc1 when true then (values (2)) end) in (3) 
from (values (1),(2)) v100(vc1)
+----
+False
+False
diff --git a/sql/test/SQLancer/Tests/sqlancer19.SQL.py 
b/sql/test/SQLancer/Tests/sqlancer19.SQL.py
--- a/sql/test/SQLancer/Tests/sqlancer19.SQL.py
+++ b/sql/test/SQLancer/Tests/sqlancer19.SQL.py
@@ -315,6 +315,14 @@ with SQLTestCase() as cli:
         
.assertSucceeded().assertDataResultMatch([(None,),(-7,),(-1,),(0,),(0,),(0,),(0,),(0,),(1,),(3,),(3,),(4,),(4,),(4,),(5,),(5,),(5,),(5,),(6,),(6,),(7,),(7,),(8,),(9,),(9,)])
     cli.execute("SELECT CAST(SUM(count) AS BIGINT) FROM (SELECT CAST((((('5' 
LIKE '0.53')OR((VALUES (0 < ANY(VALUES (7), (0)))))))OR(4 NOT BETWEEN -rt7.c0 
AND rt7.c0)) AS INT) as count FROM rt7) as res;") \
         .assertSucceeded().assertDataResultMatch([(25,)])
+    cli.execute("create view v8(vc0) as (select -24.6 from t3);") \
+        .assertSucceeded()
+    cli.execute("create view v9(vc0) as (select -24.6 from rt3);") \
+        .assertSucceeded()
+    cli.execute("SELECT 1 FROM t3 WHERE EXISTS ((SELECT 0.3, 4 FROM v8) EXCEPT 
ALL (SELECT 8, 1 FROM v8));") \
+        
.assertSucceeded().assertDataResultMatch([(1,),(1,),(1,),(1,),(1,),(1,)])
+    cli.execute("SELECT 1 FROM t3 WHERE EXISTS ((SELECT 0.3, 4 FROM v9) EXCEPT 
ALL (SELECT 8, 1 FROM v9));") \
+        
.assertSucceeded().assertDataResultMatch([(1,),(1,),(1,),(1,),(1,),(1,)])
     cli.execute("SELECT c1 FROM t6;") \
         
.assertSucceeded().assertDataResultMatch([("3",),("8ጮk|1*",),("27",),("Vrx^qA齀",),("J",),("18",),(">*4嘁pAP",),("+Jm*W0{",),(">V鷓",),
         ("BW5z",),(".#OJruk",),("lU1覃Nlm",),(None,),("968786590",)])
@@ -323,13 +331,6 @@ with SQLTestCase() as cli:
         ("BW5z",),(".#OJruk",),("lU1覃Nlm",),(None,),("968786590",)])
     cli.execute("ROLLBACK;")
 
-    cli.execute("CREATE FUNCTION mybooludf(a bool) RETURNS BOOL RETURN a;")
-    # At the moment I take this as a feature. Later we could replace the 
algebra.fetch call with something more appropriate
-    cli.execute("SELECT 1 FROM rt3 HAVING (min(TIME '02:00:00') IN (TIME 
'02:00:00')) IS NULL;") \
-        .assertFailed(err_message="Illegal argument: cannot fetch a single row 
from an empty input")
-    cli.execute("SELECT 1 FROM rt3 HAVING mybooludf(min(false));") \
-        .assertFailed(err_message="Illegal argument: cannot fetch a single row 
from an empty input")
-
     cli.execute("""
     START TRANSACTION;
     DROP TABLE rt1;
@@ -347,5 +348,4 @@ with SQLTestCase() as cli:
     DROP TABLE t5;
     DROP TABLE t6;
     DROP TABLE t7;
-    DROP FUNCTION mybooludf(bool);
     COMMIT;""").assertSucceeded()
diff --git a/sql/test/SQLancer/Tests/sqlancer21.SQL.py 
b/sql/test/SQLancer/Tests/sqlancer21.SQL.py
--- a/sql/test/SQLancer/Tests/sqlancer21.SQL.py
+++ b/sql/test/SQLancer/Tests/sqlancer21.SQL.py
@@ -12,6 +12,7 @@ with SQLTestCase() as cli:
     START TRANSACTION;
     CREATE TABLE "t1" ("c0" BIGINT,"c1" INTERVAL MONTH);
     INSERT INTO "t1" VALUES (1, INTERVAL '9' MONTH),(5, INTERVAL '6' 
MONTH),(5, NULL),(7, NULL),(2, INTERVAL '1' MONTH),(2, INTERVAL '1' MONTH);
+    CREATE FUNCTION mybooludf(a bool) RETURNS BOOL RETURN a;
     COMMIT;
 
     START TRANSACTION;
@@ -36,8 +37,19 @@ with SQLTestCase() as cli:
     cli.execute("SELECT 1 FROM rt1 where rt1.c0 = 1 AND abs(0.4) = 0;") \
         .assertSucceeded().assertDataResultMatch([])
 
+    # We should replace algebra.fetch call with something more appropriate
+    cli.execute("SELECT 1 FROM t1 HAVING (min(TIME '02:00:00') IN (TIME 
'02:00:00')) IS NULL;") \
+        .assertSucceeded().assertDataResultMatch([])
+    cli.execute("SELECT 1 FROM rt1 HAVING (min(TIME '02:00:00') IN (TIME 
'02:00:00')) IS NULL;") \
+        .assertSucceeded().assertDataResultMatch([])
+    cli.execute("SELECT 1 FROM t1 HAVING mybooludf(min(false));") \
+        .assertSucceeded().assertDataResultMatch([])
+    cli.execute("SELECT 1 FROM rt1 HAVING mybooludf(min(false));") \
+        .assertSucceeded().assertDataResultMatch([])
+
     cli.execute("""
     START TRANSACTION;
     DROP TABLE rt1;
     DROP TABLE t1;
+    DROP FUNCTION mybooludf(bool);
     COMMIT;""").assertSucceeded()
diff --git a/tools/merovingian/daemon/merovingian.c 
b/tools/merovingian/daemon/merovingian.c
--- a/tools/merovingian/daemon/merovingian.c
+++ b/tools/merovingian/daemon/merovingian.c
@@ -411,8 +411,6 @@ main(int argc, char *argv[])
        kv->val = strdup("no");
        kv = findConfKey(_mero_db_props, "embedr");
        kv->val = strdup("no");
-       kv = findConfKey(_mero_db_props, "embedpy");
-       kv->val = strdup("no");
        kv = findConfKey(_mero_db_props, "embedpy3");
        kv->val = strdup("no");
        kv = findConfKey(_mero_db_props, "embedc");
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
@@ -31,14 +31,12 @@ static const confkeyval _internal_prop_k
        {"optpipe",     NULL, 0, STR},
        {"readonly",    NULL, 0, BOOLEAN},
        {"embedr",      NULL, 0, BOOLEAN},
-       {"embedpy",     NULL, 0, BOOLEAN},
        {"embedpy3",    NULL, 0, BOOLEAN},
        {"embedc",      NULL, 0, BOOLEAN},
        {"listenaddr",  NULL, 0, LADDR},
        {"nclients",    NULL, 0, INT},
        {"mfunnel",     NULL, 0, STR},
        {"dbextra",     NULL, 0, STR},
-       {"dbtrace",     NULL, 0, STR},
        {"memmaxsize",  NULL, 0, INT},
        {"vmmaxsize",   NULL, 0, INT},
        {"raw_strings", NULL, 0, BOOLEAN},
diff --git a/tools/merovingian/utils/properties.h 
b/tools/merovingian/utils/properties.h
--- a/tools/merovingian/utils/properties.h
+++ b/tools/merovingian/utils/properties.h
@@ -12,7 +12,6 @@
 #include "utils.h"
 
 #define MEROPROPFILE ".merovingian_properties"
-#define PROFILERBEATFREQ "profilerbeatfreq"
 
 confkeyval *getDefaultProps(void);
 int writeProps(confkeyval *ckv, const char *path);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to