Changeset: 686bb0d2e8b6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=686bb0d2e8b6
Modified Files:
sql/server/rel_optimizer.c
sql/test/BugTracker-2017/Tests/sqlitelogictest-cast-decimal.Bug-6445.stable.out
sql/test/SQLancer/Tests/sqlancer04.stable.out
Branch: Oct2020
Log Message:
a-a => 0 if and only if a has no nil
diffs (69 lines):
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
@@ -3169,7 +3169,7 @@ exp_simplify_math( mvc *sql, sql_exp *e,
}
}
}
- if (exp_equal(le,re) == 0) { /* a - a = 0 */
+ if (exp_is_not_null(le) && exp_is_not_null(re) &&
exp_equal(le,re) == 0) { /* a - a = 0 */
atom *a;
sql_exp *ne;
diff --git
a/sql/test/BugTracker-2017/Tests/sqlitelogictest-cast-decimal.Bug-6445.stable.out
b/sql/test/BugTracker-2017/Tests/sqlitelogictest-cast-decimal.Bug-6445.stable.out
---
a/sql/test/BugTracker-2017/Tests/sqlitelogictest-cast-decimal.Bug-6445.stable.out
+++
b/sql/test/BugTracker-2017/Tests/sqlitelogictest-cast-decimal.Bug-6445.stable.out
@@ -25,8 +25,8 @@ stdout of test 'sqlitelogictest-cast-dec
#CREATE TABLE tab1(col0 INTEGER, col1 INTEGER, col2 INTEGER);
#SELECT col0 + - - CAST ( NULL AS REAL ) - + col0 + + col1 FROM tab1 cor0
WHERE ( NULL ) IS NOT NULL;
-% .%2 # table_name
-% %2 # name
+% sys.%1 # table_name
+% %1 # name
% real # type
% 15 # length
#SELECT col0 + - - CAST( NULL AS DECIMAL ) - + col0 + + col1 FROM tab1 cor0
WHERE ( NULL ) IS NOT NULL;
diff --git a/sql/test/SQLancer/Tests/sqlancer04.stable.out
b/sql/test/SQLancer/Tests/sqlancer04.stable.out
--- a/sql/test/SQLancer/Tests/sqlancer04.stable.out
+++ b/sql/test/SQLancer/Tests/sqlancer04.stable.out
@@ -501,6 +501,39 @@ stdout of test 'sqlancer04` in directory
#BETWEEN (t2.c0) AND (0.8918001896191873), (t2.c0) NOT IN (-682776732));
[ 0 ]
#DROP TABLE t2;
+#START TRANSACTION;
+#CREATE TABLE "sys"."t0" ("c0" BOOLEAN,CONSTRAINT "t0_c0_unique" UNIQUE
("c0"));
+#INSERT INTO "sys"."t0" VALUES (true), (false);
+[ 2 ]
+#create view v3(vc0) as (values (least(909916901, - (1451705231))));
+#create view v4(vc0, vc1, vc2, vc3) as (select case sql_min(true, r'TRUE')
when (-1243138496) not between
+#asymmetric (-1723862249) and (253857921) then least(-1523235132,
-1.04665549E9) end, cast(nullif(r'', r'') as bigint),
+#weekofyear(sql_sub(date '1970-01-10', interval '58931850' month)),
0.16610325448814467 where least(false, false));
+#create view v6(vc0, vc1, vc2) as (values (cast((true) = true as int),
cast(((1576421008)&(null)) as decimal),
+#((((0.15598454)-(-235033638)))<<(((0.50459784)/(1078999181))))), (abs(20223),
+ (cast(0.6995354 as real)),
+#cast(-1695180722 as bigint)));
+#SELECT v3.vc0 FROM v3, v6 CROSS JOIN (SELECT ALL ((sign(0.9241489178039545))*
+#(scale_down(0.74460343372682225027148206208948977291584014892578125,
0.33816958610011738084466514919768087565898895263671875)))
+#FROM t0 LEFT OUTER JOIN (SELECT DISTINCT upper(r'bŀ') WHERE FALSE) AS sub0 ON
TRUE WHERE greatest(t0.c0, TRUE)) AS sub0
+#LEFT OUTER JOIN (SELECT DISTINCT 5688 FROM v4 WHERE (v4.vc0) IN (-2081865947,
30436)) AS sub1 ON least(FALSE, TRUE)
+#RIGHT OUTER JOIN (VALUES (CAST(greatest(r'77',
0.10216334194461484941029993933625519275665283203125) AS STRING(478)))) AS sub2
+% .v3 # table_name
+% vc0 # name
+% int # type
+% 11 # length
+[ -1451705231 ]
+[ -1451705231 ]
+#SELECT CAST(SUM(count) AS BIGINT) FROM (SELECT ALL CAST((((v6.vc1)-(v6.vc1)))
IS NOT NULL AS INT) as count FROM v3, v6 CROSS JOIN
+#(SELECT
((sign(0.9241489178039545))*(scale_down(0.74460343372682225027148206208948977291584014892578125,
+#0.33816958610011738084466514919768087565898895263671875))) FROM t0 LEFT OUTER
JOIN (SELECT DISTINCT upper(r'bŀ') WHERE FALSE)
+#AS sub0 ON TRUE WHERE greatest(t0.c0, TRUE)) AS sub0 LEFT OUTER JOIN (SELECT
DISTINCT 5688 FROM v4
+#WHERE (v4.vc0) IN (-2081865947, 30436)) AS sub1 ON least(FALSE, TRUE) RIGHT
OUTER JOIN (VALUES (CAST(greatest(r'77',
+% .%34 # table_name
+% %34 # name
+% bigint # type
+% 1 # length
+[ 2 ]
+#ROLLBACK;
# 09:44:50 >
# 09:44:50 > "Done."
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list