Update of /cvsroot/monetdb/pathfinder/compiler/algebra/opt
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv25736
Modified Files:
Tag: XQuery_0-24
opt_algebra_cse.c
Log Message:
Bugfix:
Do not rely on the alignment of the schema of the original plan nodes
and those in the CSE plan.
U opt_algebra_cse.c
Index: opt_algebra_cse.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/opt/opt_algebra_cse.c,v
retrieving revision 1.30
retrieving revision 1.30.2.1
diff -u -d -r1.30 -r1.30.2.1
--- opt_algebra_cse.c 3 Apr 2008 11:03:20 -0000 1.30
+++ opt_algebra_cse.c 28 May 2008 12:48:32 -0000 1.30.2.1
@@ -1527,11 +1527,17 @@
* a projection if this is the case */
for (i = 0; i < CSE(L(n))->schema.count; i++) {
for (j = 0; j < CSE(R(n))->schema.count; j++) {
- if (REVACTATT(L(n), CSE(L(n))->schema.items[i].name) ==
- REVACTATT(R(n), CSE(R(n))->schema.items[j].name)) {
- if (ACTATT(L(n), L(n)->schema.items[i].name) !=
- ACTATT(R(n), R(n)->schema.items[j].name))
- projection = true;
+ PFalg_att_t rev_l = att_NULL,
+ rev_r =
att_NULL;
+ if ((rev_l = REVACTATT(
+ L(n),
CSE(L(n))->schema.items[i].name)) ==
+ (rev_r = REVACTATT(
+ R(n),
CSE(R(n))->schema.items[j].name))) {
+
+ if (ACTATT(L(n), rev_l) !=
+ ACTATT(R(n), rev_r))
+ projection = true;
+
break;
}
}
@@ -1546,41 +1552,39 @@
if (projection) {
p = (PFalg_proj_t *)
PFmalloc (R(n)->schema.count * sizeof (PFalg_proj_t));
-
for (i = 0; i < CSE(L(n))->schema.count; i++) {
for (j = 0; j < CSE(R(n))->schema.count; j++) {
- if (REVACTATT(L(n), CSE(L(n))->schema.items[i].name) ==
- REVACTATT(R(n), CSE(R(n))->schema.items[j].name)) {
+ PFalg_att_t rev_l = att_NULL,
+ rev_r =
att_NULL;
+
+ if ((rev_l = REVACTATT(L(n),
+
CSE(L(n))->schema.items[i].name)) ==
+ (rev_r = REVACTATT(R(n),
+
CSE(R(n))->schema.items[j].name))) {
/* the names are conflicting */
if (ACTATT(L(n), L(n)->schema.items[i].name) !=
ACTATT(R(n), R(n)->schema.items[j].name)) {
p[i] = PFalg_proj (
ACTATT(L(n),
- L(n)->schema.items[i].name),
+ rev_l),
ACTATT(R(n),
- R(n)->schema.items[j].name));
+ rev_r));
INACTATT (actmap,
actatt (ACTATT(L(n),
- L(n)->schema.items[i].name),
+ rev_l),
REVACTATT (R(n),
CSE(R(n))->schema.items[j]
.name)));
}
else {
- p[i] = PFalg_proj (
- ACTATT(R(n),
- R(n)->schema.items[j].name),
- ACTATT(R(n),
- R(n)->schema.items[j].name));
+ PFalg_att_t t =
ACTATT(R(n), rev_r);
+
+ p[i] =
PFalg_proj (t,t);
INACTATT (
- actmap,
- actatt (
- ACTATT(R(n),
- R(n)->schema.items[j].name),
- ACTATT(R(n),
- R(n)->schema.items[j].name)));
+ actmap,
+ actatt
(t,t));
}
}
}
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins