Class Project

    • Field Detail

      • exps

        protected final com.google.common.collect.ImmutableList<RexNode> exps
      • hints

        protected final com.google.common.collect.ImmutableList<RelHint> hints
    • Method Detail

      • copy

        public final RelNode copy​(RelTraitSet traitSet,
                                  List<RelNode> inputs)
        Description copied from interface: RelNode
        Creates a copy of this relational expression, perhaps changing traits and inputs.

        Sub-classes with other important attributes are encouraged to create variants of this method with more parameters.

        Specified by:
        copy in interface RelNode
        Overrides:
        copy in class AbstractRelNode
        Parameters:
        traitSet - Trait set
        inputs - Inputs
        Returns:
        Copy of this relational expression, substituting traits and inputs
      • copy

        public abstract Project copy​(RelTraitSet traitSet,
                                     RelNode input,
                                     List<RexNode> projects,
                                     RelDataType rowType)
        Copies a project.
        Parameters:
        traitSet - Traits
        input - Input
        projects - Project expressions
        rowType - Output row type
        Returns:
        New Project if any parameter differs from the value of this Project, or just this if all the parameters are the same
        See Also:
        copy(RelTraitSet, List)
      • isBoxed

        @Deprecated
        public boolean isBoxed()
        Deprecated.
      • accept

        public RelNode accept​(RexShuttle shuttle)
        Description copied from interface: RelNode
        Accepts a visit from a shuttle. If the shuttle updates expression, then a copy of the relation should be created. This new relation might have a different row-type.
        Specified by:
        accept in interface RelNode
        Overrides:
        accept in class AbstractRelNode
        Parameters:
        shuttle - Shuttle
        Returns:
        A copy of this node incorporating changes made by the shuttle to this node's children
      • getProjects

        public List<RexNode> getProjects()
        Returns the project expressions.
        Returns:
        Project expressions
      • getNamedProjects

        public final List<Pair<RexNode,​String>> getNamedProjects()
        Returns a list of (expression, name) pairs. Convenient for various transformations.
        Returns:
        List of (expression, name) pairs
      • getHints

        public com.google.common.collect.ImmutableList<RelHint> getHints()
        Description copied from interface: Hintable
        Returns the hints of this relational expressions as an immutable list.
        Specified by:
        getHints in interface Hintable
      • getFlags

        @Deprecated
        public int getFlags()
        Deprecated.
      • containsOver

        public final boolean containsOver()
        Returns whether this Project contains any windowed-aggregate functions.
      • isValid

        public boolean isValid​(Litmus litmus,
                               RelNode.Context context)
        Description copied from interface: RelNode
        Returns whether this relational expression is valid.

        If assertions are enabled, this method is typically called with litmus = THROW, as follows:

        assert rel.isValid(Litmus.THROW)

        This signals that the method can throw an AssertionError if it is not valid.

        Specified by:
        isValid in interface RelNode
        Overrides:
        isValid in class AbstractRelNode
        Parameters:
        litmus - What to do if invalid
        context - Context for validity checking
        Returns:
        Whether relational expression is valid
      • deepEquals0

        @API(since="1.24",
             status=INTERNAL)
        protected boolean deepEquals0​(Object obj)
      • deepHashCode0

        @API(since="1.24",
             status=INTERNAL)
        protected int deepHashCode0()
      • getMapping

        public Mappings.TargetMapping getMapping()
        Returns a mapping, or null if this projection is not a mapping.
        Returns:
        Mapping, or null if this projection is not a mapping
      • getMapping

        public static Mappings.TargetMapping getMapping​(int inputFieldCount,
                                                        List<? extends RexNode> projects)
        Returns a mapping of a set of project expressions.

        The mapping is an inverse surjection. Every target has a source field, but no source has more than one target. Thus you can safely call Mappings.TargetMapping.getSourceOpt(int).

        Parameters:
        inputFieldCount - Number of input fields
        projects - Project expressions
        Returns:
        Mapping of a set of project expressions, or null if projection is not a mapping
      • getPartialMapping

        public static Mappings.TargetMapping getPartialMapping​(int inputFieldCount,
                                                               List<? extends RexNode> projects)
        Returns a partial mapping of a set of project expressions.

        The mapping is an inverse function. Every target has a source field, but a source might have 0, 1 or more targets. Project expressions that do not consist of a mapping are ignored.

        Parameters:
        inputFieldCount - Number of input fields
        projects - Project expressions
        Returns:
        Mapping of a set of project expressions, never null
      • getPermutation

        public Permutation getPermutation()
        Returns a permutation, if this projection is merely a permutation of its input fields; otherwise null.
        Returns:
        Permutation, if this projection is merely a permutation of its input fields; otherwise null
      • getPermutation

        public static Permutation getPermutation​(int inputFieldCount,
                                                 List<? extends RexNode> projects)
        Returns a permutation, if this projection is merely a permutation of its input fields; otherwise null.
      • isMapping

        public boolean isMapping()
        Checks whether this is a functional mapping. Every output is a source field, but a source field may appear as zero, one, or more output fields.