Changeset: feef4e0f5995 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=feef4e0f5995
Modified Files:
sql/server/rel_optimizer.c
Branch: default
Log Message:
optimize out 'select true'
fixed endless loop in optimizer when to expressions point back to
each other.
diffs (28 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
@@ -2105,7 +2105,8 @@ exp_shares_exps( sql_exp *e, list *share
*uses &= used;
return 0;
}
- if (ne && ne != e) /* maybe ne refers to a local
complex exp */
+ if (ne && ne != e && (list_position(shared, e) < 0 ||
list_position(shared, e) > list_position(shared, ne)))
+ /* maybe ne refers to a local complex exp */
return exp_shares_exps( ne, shared, uses);
return 0;
}
@@ -5764,6 +5765,14 @@ rel_simplify_predicates(int *changes, mv
for (n = rel->exps->h; n; n = n->next) {
sql_exp *e = n->data;
+ if (is_atom(e) && e->l) { /* direct literal */
+ atom *a = e->l;
+ int flag = a->data.val.bval;
+
+ /* remove simple select true expressions */
+ if (flag)
+ break;
+ }
if (e->type == e_cmp && get_cmp(e) == cmp_equal) {
sql_exp *l = e->l;
sql_exp *r = e->r;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list