Hi Maurice, this operator is only a shortcut of the pattern sketched below. It basically evaluates the path step for all context nodes separately. (By ignoring the iter information we thus may introduce duplicates.) The resulting schema of the path step operator contains all the columns of the 'context relation' plus an additional column (from the document relation) storing the result of the path step operator (and thus is a real join without duplicate removal). (If you want to see that operator in the generated plans you however have to stop after introduction of proxy nodes parameter '}' of option '-o'.) Cheers, Jan On 11/13/2006 02:23 PM, Maurice van Keulen wrote with possible deletions:
Hi Jan,
Can you explain a little bit more about this? Or is there a Wiki page that explains it? I'm rather curious about what you mean by "duplicate generating path step operator" Maurice.
Jan Rittinger wrote:
Update of /cvsroot/monetdb/pathfinder/compiler/include In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv28492/include
Modified Files: logical.h logical_mnemonic.h Log Message: -- Introduced a new duplicate generating path step operator. This operator is introduced in the proxy detection phase and replaces the following pattern by a new dup_scjoin operator:
|X| __/ \__ / \ (pi) | | | scjoin (pi) / | | (pi) | \__ __/ \ / #
The new operator keeps all the columns of its right argument -- the left argument refers to the fragment information -- and adds a new column (stored in the semantical field scjoin.item_res) based on the context column (stored in the semantical field scjoin.item). Because the result may change the cardinality all the other columns are mapped based on the input context nodes.
-- Jan Rittinger Database Systems Technische Universität München (Germany) http://www-db.in.tum.de/~rittinge/