Changeset: 221e5219491f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/221e5219491f
Modified Files:
sql/server/rel_exp.c
Branch: default
Log Message:
For commutative functions use a more relaxed expression match criteria
diffs (30 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
@@ -1337,16 +1337,17 @@ exp_match_exp( sql_exp *e1, sql_exp *e2)
need_no_nil(e1) == need_no_nil(e2))
return 1;
break;
- case e_func:
- if (!subfunc_cmp(e1->f, e2->f) && /* equal functions */
- exps_equal(e1->l, e2->l) &&
- /* optional order by expressions */
- exps_equal(e1->r, e2->r)) {
- sql_subfunc *f = e1->f;
- if (!f->func->side_effect)
+ case e_func: {
+ sql_subfunc *e1f = (sql_subfunc*) e1->f;
+ int (*comp)(list*, list*) = !e1f->func->s &&
is_commutative(e1f->func->base.name) ? exp_match_list : exps_equal;
+
+ if (!e1f->func->side_effect &&
+ !subfunc_cmp(e1f, e2->f) && /* equal functions
*/
+ comp(e1->l, e2->l) &&
+ /* optional order by expressions */
+ exps_equal(e1->r, e2->r))
return 1;
- }
- break;
+ } break;
case e_atom:
if (e1->l && e2->l && !atom_cmp(e1->l, e2->l))
return 1;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list