Changeset: 4bad58f72991 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/4bad58f72991
Modified Files:
monetdb5/modules/mal/remote.c
sql/server/rel_optimizer.c
sql/test/SQLancer/Tests/sqlancer19.SQL.py
Branch: default
Log Message:
Fixed two small issues: 1. Set hseqbase on the remote bat 2. Don't push down
select relation under projection with identity function call (later we can
optimize this by extracting the identity function call from the projection)
diffs (76 lines):
diff --git a/monetdb5/modules/mal/remote.c b/monetdb5/modules/mal/remote.c
--- a/monetdb5/modules/mal/remote.c
+++ b/monetdb5/modules/mal/remote.c
@@ -726,7 +726,7 @@ RMTinternalcopyfrom(BAT **ret, char *hdr
hdr++;
}
- b = COLnew2(0, bb.Ttype, bb.size, TRANSIENT, bb.size > 0 ? (uint16_t)
(bb.tailsize / bb.size) : 0);
+ b = COLnew2(bb.Hseqbase, bb.Ttype, bb.size, TRANSIENT, bb.size > 0 ?
(uint16_t) (bb.tailsize / bb.size) : 0);
if (b == NULL)
throw(MAL, "remote.get", SQLSTATE(HY013) MAL_MALLOC_FAIL);
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -4689,7 +4689,7 @@ rel_push_select_down(visitor *v, sql_rel
if (is_select(rel->op) && r && r->op == op_project && !rel_is_ref(r) &&
!is_single(r)){
sql_rel *pl = r->l;
/* we cannot push through window functions (for safety I
disabled projects over DDL too) */
- if (pl && pl->op != op_ddl && !exps_have_unsafe(r->exps, 1)) {
+ if (pl && pl->op != op_ddl && !exps_have_unsafe(r->exps, 0)) {
/* introduce selects under the project (if needed) */
set_processed(pl);
for (n = exps->h; n;) {
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
@@ -31,6 +31,8 @@ with SQLTestCase() as cli:
CREATE TABLE "t6" ("c1" CLOB);
INSERT INTO "t6" VALUES('3'), ('8ጮk|1*'), ('27'), ('Vrx^qA齀'), ('J'),
('18'), ('>*4嘁pAP'), ('+Jm*W0{'), ('>V鷓'), ('BW5z'), ('.#OJruk'),
('lU1覃Nlm'), (NULL), ('968786590');
+ CREATE TABLE "t7" ("c0" SMALLINT);
+ INSERT INTO "t7" VALUES
(0),(0),(3),(3),(7),(-1),(5),(NULL),(5),(0),(5),(6),(4),(4),(4),(6),(7),(-7),(0),(1),(5),(9),(9),(8),(0);
COMMIT;
START TRANSACTION;
@@ -40,7 +42,8 @@ with SQLTestCase() as cli:
CREATE REMOTE TABLE "rt4" ("c0" BIGINT PRIMARY KEY,"c1" INTERVAL MONTH) ON
'mapi:monetdb://localhost:%s/%s/sys/t4';
CREATE REMOTE TABLE "rt5" ("c0" DECIMAL(18,3),"c1" BOOLEAN) ON
'mapi:monetdb://localhost:%s/%s/sys/t5';
CREATE REMOTE TABLE "rt6" ("c1" CLOB) ON
'mapi:monetdb://localhost:%s/%s/sys/t6';
- COMMIT;""" % (port, db, port, db, port, db, port, db, port, db, port,
db)).assertSucceeded()
+ CREATE REMOTE TABLE "rt7" ("c0" SMALLINT) ON
'mapi:monetdb://localhost:%s/%s/sys/t7';
+ COMMIT;""" % (port, db, port, db, port, db, port, db, port, db, port, db,
port, db)).assertSucceeded()
cli.execute("START TRANSACTION;")
cli.execute('SELECT json."integer"(JSON \'1\') FROM t3;') \
@@ -304,6 +307,14 @@ with SQLTestCase() as cli:
.assertSucceeded().assertDataResultMatch([])
cli.execute("SELECT 1 FROM rt3 INNER JOIN (SELECT 1 FROM t2) AS sub0(c0)
ON ((2) IN (3, 6)) WHERE 4 < least(NULL, least(rt3.c0, rt3.c0));") \
.assertSucceeded().assertDataResultMatch([])
+ cli.execute("SELECT t7.c0 FROM t7 WHERE (((('5' LIKE '0.53')OR((VALUES (0
< ANY(VALUES (7), (0)))))))OR(4 NOT BETWEEN -t7.c0 AND t7.c0)) ORDER BY c0;") \
+
.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("SELECT rt7.c0 FROM rt7 WHERE (((('5' LIKE '0.53')OR((VALUES
(0 < ANY(VALUES (7), (0)))))))OR(4 NOT BETWEEN -rt7.c0 AND rt7.c0)) ORDER BY
c0;") \
+
.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("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",)])
@@ -327,6 +338,7 @@ with SQLTestCase() as cli:
DROP TABLE rt4;
DROP TABLE rt5;
DROP TABLE rt6;
+ DROP TABLE rt7;
DROP TABLE t0;
DROP TABLE t1;
DROP TABLE t2;
@@ -334,5 +346,6 @@ with SQLTestCase() as cli:
DROP TABLE t4;
DROP TABLE t5;
DROP TABLE t6;
+ DROP TABLE t7;
DROP FUNCTION mybooludf(bool);
COMMIT;""").assertSucceeded()
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list