Changeset: f07f939ed6b6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/f07f939ed6b6
Modified Files:
        sql/backends/monet5/sql_statement.c
        sql/test/SQLancer/Tests/sqlancer19.SQL.py
        sql/test/SQLancer/Tests/sqlancer20.SQL.py
Branch: default
Log Message:

Before optimizing a remote plan, make sure the topmost relation only contains 
references


diffs (60 lines):

diff --git a/sql/backends/monet5/sql_statement.c 
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -3410,6 +3410,8 @@ stmt_func(backend *be, stmt *ops, const 
 
        if ((p = find_prop(rel->p, PROP_REMOTE)))
                rel->p = prop_remove(rel->p, p);
+       /* sql_processrelation may split projections, so make sure the topmost 
relation only contains references */
+       rel = rel_project(be->mvc->sa, rel, rel_projections(be->mvc, rel, NULL, 
1, 1));
        if (!(rel = sql_processrelation(be->mvc, rel, 1, 1)))
                return NULL;
        if (p) {
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
@@ -256,6 +256,12 @@ with SQLTestCase() as cli:
         .assertSucceeded()
     cli.execute("SELECT 1 FROM v7 CROSS JOIN ((SELECT 1) UNION ALL (SELECT 2)) 
AS sub0(c0);") \
         
.assertSucceeded().assertDataResultMatch([(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,)])
+    cli.execute("""
+        SELECT 1 FROM (VALUES (2),(3)) x(x) FULL OUTER JOIN (SELECT rt1.c1 <= 
CAST(rt1.c1 AS INT) FROM rt1) AS sub0(c0) ON true WHERE sub0.c0
+        UNION ALL
+        SELECT 1 FROM (VALUES (2),(3)) x(x) FULL OUTER JOIN (SELECT rt1.c1 <= 
CAST(rt1.c1 AS INT) FROM rt1) AS sub0(c0) ON true;
+        """).assertSucceeded() \
+        
.assertDataResultMatch([(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,)])
     cli.execute("ROLLBACK;")
 
     cli.execute("CREATE FUNCTION mybooludf(a bool) RETURNS BOOL RETURN a;")
diff --git a/sql/test/SQLancer/Tests/sqlancer20.SQL.py 
b/sql/test/SQLancer/Tests/sqlancer20.SQL.py
--- a/sql/test/SQLancer/Tests/sqlancer20.SQL.py
+++ b/sql/test/SQLancer/Tests/sqlancer20.SQL.py
@@ -10,8 +10,6 @@ with SQLTestCase() as cli:
     cli.connect(username="monetdb", password="monetdb")
     cli.execute("""
     START TRANSACTION;
-    CREATE TABLE "t0" ("c0" INTERVAL SECOND NOT NULL, "c1" JSON);
-    INSERT INTO "t0" VALUES (INTERVAL '9' SECOND, '""');
     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);
     COMMIT;
@@ -20,12 +18,6 @@ with SQLTestCase() as cli:
     CREATE REMOTE TABLE "rt1" ("c0" BIGINT,"c1" INTERVAL MONTH) ON 
'mapi:monetdb://localhost:%s/%s/sys/t1';
     COMMIT;""" % (port, db)).assertSucceeded()
 
-    cli.execute("""
-        SELECT 1 FROM t0 FULL OUTER JOIN (SELECT rt1.c0 <= CAST(rt1.c0 AS INT) 
FROM rt1) AS sub0(c0) ON true WHERE sub0.c0
-        UNION ALL
-        SELECT 1 FROM t0 FULL OUTER JOIN (SELECT rt1.c0 <= CAST(rt1.c0 AS INT) 
FROM rt1) AS sub0(c0) ON true;
-        
""").assertSucceeded().assertDataResultMatch([(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,),(1,)])
-
     # Issues related to digits and scale propagation in the sql layer
     cli.execute("SELECT CAST(2 AS DECIMAL) & CAST(3 AS DOUBLE) FROM t1 where 
t1.c0 = 1;") \
         .assertSucceeded().assertDataResultMatch([(Decimal('0.002'),)])
@@ -35,6 +27,5 @@ with SQLTestCase() as cli:
     cli.execute("""
     START TRANSACTION;
     DROP TABLE rt1;
-    DROP TABLE t0;
     DROP TABLE t1;
     COMMIT;""").assertSucceeded()
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to