Changeset: e96d34a5f391 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/e96d34a5f391
Modified Files:
        sql/server/rel_dump.c
        sql/test/SQLancer/Tests/sqlancer19.SQL.py
Branch: Jul2021
Log Message:

Propagate symmetric flag properly


diffs (43 lines):

diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -1406,19 +1406,19 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
                                sym = 1;
                        }
                        if (e->type == e_cmp) {
-                               sql_exp *ne = exp_compare2(sql->sa, e->l, exp, 
e->r, compare2range(swap_compare((comp_type)f), e->flag), sym);
-                               if (is_anti(exp))
-                                       set_anti(ne);
+                               exp = exp_compare2(sql->sa, e->l, exp, e->r, 
compare2range(swap_compare((comp_type)f), e->flag), is_symmetric(e));
+                               if (is_anti(e))
+                                       set_anti(exp);
                                if (exp_name(e)) /* propagate a possible alias 
already parsed */
-                                       exp_prop_alias(sql->sa, ne, e);
-                               exp_setalias(e, NULL, NULL);
-                               exp = ne;
+                                       exp_prop_alias(sql->sa, exp, e);
                        } else {
                                sql_exp *ne = exp_compare(sql->sa, exp, e, f);
                                if (is_anti(exp))
                                        set_anti(ne);
                                if (is_semantics(exp))
                                        set_semantics(ne);
+                               if (sym) /* set it, so it gets propagated to 
the range comparison */
+                                       set_symmetric(ne);
                                if (exp_name(e)) /* propagate a possible alias 
already parsed */
                                        exp_prop_alias(sql->sa, ne, e);
                                exp_setalias(e, NULL, NULL);
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
@@ -38,6 +38,10 @@ with SQLTestCase() as cli:
         .assertSucceeded().assertRowCount(0)
     cli.execute('SELECT 1 FROM (values (0)) mv(vc0) LEFT OUTER JOIN (SELECT 1 
FROM rt1) AS sub0(c0) ON 2 = 0.05488666234725814;') \
         .assertSucceeded().assertDataResultMatch([(1,),])
+    cli.execute('SELECT c1 FROM rt1 WHERE rt1.c1 NOT BETWEEN 1 AND NULL;') \
+        .assertSucceeded().assertDataResultMatch([(0,),])
+    cli.execute('SELECT c1 FROM rt1 WHERE rt1.c1 NOT BETWEEN SYMMETRIC 1 AND 
NULL;') \
+        .assertSucceeded().assertDataResultMatch([])
     cli.execute("ROLLBACK;")
 
     cli.execute("""
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to