Decomposes a projection to the input references referenced by a projection and a filter, either of which is optional. If both are provided, the filter is underneath the project.
Creates a projection containing all input references as well as preserving any special expressions. Converts the original projection and/or filter to reference the new projection. Then, finally puts on top, a final projection corresponding to the original projection.
@param defaultExpr expression to be used in the projection if no fieldsor special columns are selected
@return the converted projection if it makes sense to push elements ofthe projection; otherwise returns null