Changeset: 1b6472d7573e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/1b6472d7573e
Modified Files:
        sql/server/rel_exp.c
        sql/test/SQLancer/Tests/sqlancer16.test
Branch: Jul2021
Log Message:

Two comparisons match if neither ->f is set or both ->f are set and match. Also 
test for same 'symmetric' flag


diffs (51 lines):

diff --git a/sql/server/rel_exp.c b/sql/server/rel_exp.c
--- a/sql/server/rel_exp.c
+++ b/sql/server/rel_exp.c
@@ -1305,7 +1305,7 @@ exp_match_exp( sql_exp *e1, sql_exp *e2)
                return 1;
        if (is_ascending(e1) != is_ascending(e2) || nulls_last(e1) != 
nulls_last(e2) || zero_if_empty(e1) != zero_if_empty(e2) ||
                need_no_nil(e1) != need_no_nil(e2) || is_anti(e1) != 
is_anti(e2) || is_semantics(e1) != is_semantics(e2) ||
-               need_distinct(e1) != need_distinct(e2))
+               is_symmetric(e1) != is_symmetric(e2) || need_distinct(e1) != 
need_distinct(e2))
                return 0;
        if (e1->type == e2->type) {
                switch(e1->type) {
@@ -1313,7 +1313,7 @@ exp_match_exp( sql_exp *e1, sql_exp *e2)
                        if (e1->flag == e2->flag && !is_complex_exp(e1->flag) &&
                            exp_match_exp(e1->l, e2->l) &&
                            exp_match_exp(e1->r, e2->r) &&
-                           ((!e1->f && !e2->f) || exp_match_exp(e1->f, e2->f)))
+                           ((!e1->f && !e2->f) || (e1->f && e2->f && 
exp_match_exp(e1->f, e2->f))))
                                return 1;
                        else if (e1->flag == e2->flag && e1->flag == cmp_or &&
                            exp_match_list(e1->l, e2->l) &&
diff --git a/sql/test/SQLancer/Tests/sqlancer16.test 
b/sql/test/SQLancer/Tests/sqlancer16.test
--- a/sql/test/SQLancer/Tests/sqlancer16.test
+++ b/sql/test/SQLancer/Tests/sqlancer16.test
@@ -35,6 +35,26 @@ statement ok
 START TRANSACTION
 
 statement ok
+CREATE TABLE "t1" ("c0" UUID)
+
+statement ok rowcount 4
+INSERT INTO "t1" VALUES ('f4ecc4d5-5f7c-ce6a-199e-dd98c59f7bbf'), 
('f4ecc4d5-5f7c-ce6a-199e-dd98c59f7bbf'), 
('f4ecc4d5-5f7c-ce6a-199e-dd98c59f7bbf'), 
('f4ecc4d5-5f7c-ce6a-199e-dd98c59f7bbf')
+
+query T rowsort
+SELECT t1.c0 FROM t1 WHERE ((((FALSE)OR(CAST(greatest(5, 1) AS 
BOOLEAN))))OR((((t1.c0) BETWEEN SYMMETRIC (t1.c0) AND 
(t1.c0))OR(((t1.c0)<(t1.c0))))))
+----
+f4ecc4d5-5f7c-ce6a-199e-dd98c59f7bbf
+f4ecc4d5-5f7c-ce6a-199e-dd98c59f7bbf
+f4ecc4d5-5f7c-ce6a-199e-dd98c59f7bbf
+f4ecc4d5-5f7c-ce6a-199e-dd98c59f7bbf
+
+statement ok
+ROLLBACK
+
+statement ok
+START TRANSACTION
+
+statement ok
 CREATE TABLE t0(c0 INTERVAL DAY PRIMARY KEY, c1 BIGINT)
 
 statement ok
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to