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