Changeset: 6adb25a09d39 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6adb25a09d39
Modified Files:
Branch: default
Log Message:
Merge bugfix from Oct2010 branch.
diffs (52 lines):
diff -r 8d10d762fd7f -r 6adb25a09d39
pathfinder/compiler/algebra/opt/opt_join_pd.c
--- a/pathfinder/compiler/algebra/opt/opt_join_pd.c Thu Nov 04 10:10:46
2010 +0100
+++ b/pathfinder/compiler/algebra/opt/opt_join_pd.c Thu Nov 04 10:32:46
2010 +0100
@@ -226,8 +226,7 @@
its operands */
for (unsigned int c = 0; c < 2; c++) {
/* only process equi-joins */
- if (p->kind != la_internal_op)
- break;
+ assert (p->kind == la_internal_op);
/* remove unnecessary joins
(where both children references point to the same node) */
@@ -498,10 +497,10 @@
a modification if this rewrite wasn't
the only one. Otherwise we might end up
in an infinite loop. */
- modified = join_pushdown_worker (next_join,
- clean_up_list);
- next_join = NULL;
-
+ /* Make sure that we don't continue rewriting
+ with a different join operator (c=1). */
+ return join_pushdown_worker (next_join,
+ clean_up_list);
} break;
case la_semijoin:
@@ -675,9 +674,8 @@
a modification if this rewrite wasn't
the only one. Otherwise we might end up
in an infinite loop. */
- modified = join_pushdown_worker (next_join,
- clean_up_list);
- next_join = NULL;
+ return join_pushdown_worker (next_join,
+ clean_up_list);
} break;
case la_select:
@@ -815,10 +813,9 @@
*p = *disjunion (eqjoin_opt (L(lp), rp, lproj, rproj),
eqjoin_opt (R(lp), rp, lproj, rproj));
- modified = true;
-
join_pushdown_worker (L(p), clean_up_list);
join_pushdown_worker (R(p), clean_up_list);
+ return true;
} break;
#endif
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list