Update of /cvsroot/monetdb/pathfinder/compiler/include
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv26788/include
Modified Files:
Tag: XQuery_0-24
algebra.h logical.h
Log Message:
-- Re-implemented the join pushdown optimization phase
(due to incorrect rewrites).
o The special equi-join operator working on unique column
names now incorporates for each operand a projection.
Based on this projection we can now always maintain the
correct schema and push the join even through renaming
projections.
The old variant did in some cases 'forget' from which
operand of an equi-join columns with the same name stem
from.
o The new equi-join pushdown phase is a lot more effective
than the old one and thus generates very wide relations
(where a large number of columns can be pruned afterwards).
Placing a projection pushdown phase (icols optimization)
afterwards allows us to map the resulting plans back to
bit-encoded column names without running out of column
bits.
U algebra.h
Index: algebra.h
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/include/algebra.h,v
retrieving revision 1.85
retrieving revision 1.85.2.1
diff -u -d -r1.85 -r1.85.2.1
--- algebra.h 9 May 2008 19:24:59 -0000 1.85
+++ algebra.h 28 May 2008 11:37:35 -0000 1.85.2.1
@@ -495,7 +495,12 @@
/**
* Checks whether a name is unique or not.
*/
-bool PFalg_is_unq_name(PFalg_att_t att);
+bool PFalg_is_unq_name (PFalg_att_t att);
+
+/**
+ * Return the id of a unique name
+ */
+unsigned int PFalg_unq_name_id (PFalg_att_t att);
/**
* Create a unique name based on an id @a id and
U logical.h
Index: logical.h
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/include/logical.h,v
retrieving revision 1.59
retrieving revision 1.59.2.1
diff -u -d -r1.59 -r1.59.2.1
--- logical.h 8 May 2008 20:13:21 -0000 1.59
+++ logical.h 28 May 2008 11:37:36 -0000 1.59.2.1
@@ -238,8 +238,8 @@
/* semantic content for clone column aware equi-join operator */
struct {
- PFalg_att_t att1; /**< name of attribute from "left" rel */
- PFalg_att_t att2; /**< name of attribute from "right" rel */
+ PFarray_t *lproj; /**< projection list of the "left" rel */
+ PFarray_t *rproj; /**< projection list of the "right" rel */
PFalg_att_t res; /**< name of result attribute */
} eqjoin_unq;
@@ -651,11 +651,10 @@
/**
* Equi-join between two relations.
- * Duplicate attribute names allowed.
+ * Duplicate attribute names for join columns allowed.
*/
PFla_op_t * PFla_eqjoin_clone (const PFla_op_t *n1, const PFla_op_t *n2,
- PFalg_att_t att1, PFalg_att_t att2,
- PFalg_att_t res);
+ PFarray_t *lproj, PFarray_t *rproj);
/**
* Construct projection operator
-------------------------------------------------------------------------
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