Class Project

    • Field Detail

      • exps

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

      • Project

        protected Project​(RelOptCluster cluster,
                          RelTraitSet traits,
                          RelNode input,
                          java.util.List<? extends RexNode> projects,
                          RelDataType rowType)
        Creates a Project.
        Parameters:
        cluster - Cluster that this relational expression belongs to
        traits - Traits of this relational expression
        input - Input relational expression
        projects - List of expressions for the input columns
        rowType - Output row type
      • Project

        protected Project​(RelInput input)
        Creates a Project by parsing serialized output.
    • Method Detail

      • copy

        public final RelNode copy​(RelTraitSet traitSet,
                                  java.util.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,
                                     java.util.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.
      • getChildExps

        public java.util.List<RexNode> getChildExps()
        Description copied from interface: RelNode
        Returns a list of this relational expression's child expressions. (These are scalar expressions, and so do not include the relational inputs that are returned by RelNode.getInputs().

        The caller should treat the list as unmodifiable; typical implementations will return an immutable list. If there are no child expressions, returns an empty list, not null.

        Specified by:
        getChildExps in interface RelNode
        Overrides:
        getChildExps in class AbstractRelNode
        Returns:
        List of this relational expression's child expressions
        See Also:
        RelNode.accept(org.apache.calcite.rex.RexShuttle)
      • 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 java.util.List<RexNode> getProjects()
        Returns the project expressions.
        Returns:
        Project expressions
      • getNamedProjects

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

        @Deprecated
        public int getFlags()
        Deprecated.
      • 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
      • 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,
                                                        java.util.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,
                                                               java.util.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,
                                                 java.util.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.