Defines the interface for passing down a relational PROJECTION operation to the DSII. More...
Inherited by DSIExtAbstractProjectionHandler.
Public Member Functions
|virtual AutoPtr< AERelationalExpr >||Passdown (AEProject *io_node)=0|
|Pass down the given projection operation. |
Protected Member Functions
Defines the interface for passing down a relational PROJECTION operation to the DSII.
A PROJECTION is defined by a project list and a table on which the projection operates. In the project list there would be project item(s). The engine will attempt to pass down each of the project items.
If passing down the whole projection operation succeeds (all the project items are passed down), the engine will get the relational expression representing the result table of applying the passed down projection operation. The result table will be used to replace the AEProject node in AE tree.
If passing down the whole projection operation fails (any of the project items cannot be passed down), the engine will go to visit sub-expressions of the projection items not being passed down and attempt to pass down them. If it is not passed down successfully, the engine will continue to visit its sub-expressions until passing down succeeds or it has no child. In this case, the engine will update the AEProject node after applying projection operation. The updated AEProject node will be used by the engine to handle the rest of the projection operation.
For example, if the DSII is only able to handle the projection "C1" and "C2", but the SQLEngine is trying to pass down the expression "C1 + C2". Passdown() would update AEProject node defined by the following project list and table:
Project list: C1 + C2 Project table: C1 | C2 --- | --- | |
This design allows a "partial" projection operation to be handled.
Pass down the given projection operation.
|io_node||The projection operation node and will probably be updated if partial pass down occurs. Cannot be NULL. (NOT OWN)|
Implemented in DSIExtAbstractProjectionHandler.