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