Class WindowFunction

    • Field Detail

      • fromLast

        private boolean fromLast
      • ignoreNulls

        private boolean ignoreNulls
    • Constructor Detail

      • WindowFunction

        public WindowFunction​(WindowFunctionType type,
                              Select select,
                              Expression[] args)
        Creates new instance of a window function.
        Parameters:
        type - the type
        select - the select statement
        args - arguments, or null
    • Method Detail

      • getMinArgumentCount

        public static int getMinArgumentCount​(WindowFunctionType type)
        Returns minimal number of arguments for the specified type.
        Parameters:
        type - the type of a window function
        Returns:
        minimal number of arguments
      • getMaxArgumentCount

        public static int getMaxArgumentCount​(WindowFunctionType type)
        Returns maximal number of arguments for the specified type.
        Parameters:
        type - the type of a window function
        Returns:
        maximal number of arguments
      • getNthValue

        private static Value getNthValue​(java.util.Iterator<Value[]> iterator,
                                         int number,
                                         boolean ignoreNulls)
      • getFunctionType

        public WindowFunctionType getFunctionType()
        Returns the type of this function.
        Returns:
        the type of this function
      • setFromLast

        public void setFromLast​(boolean fromLast)
        Sets FROM FIRST or FROM LAST clause value.
        Parameters:
        fromLast - whether FROM LAST clause was specified.
      • setIgnoreNulls

        public void setIgnoreNulls​(boolean ignoreNulls)
        Sets RESPECT NULLS or IGNORE NULLS clause value.
        Parameters:
        ignoreNulls - whether IGNORE NULLS clause was specified
      • isAggregate

        public boolean isAggregate()
        Description copied from class: DataAnalysisOperation
        Checks whether this expression is an aggregate function.
        Specified by:
        isAggregate in class DataAnalysisOperation
        Returns:
        true if this is an aggregate function (including aggregates with OVER clause), false if this is a window function
      • updateGroupAggregates

        protected void updateGroupAggregates​(SessionLocal session,
                                             int stage)
        Description copied from class: DataAnalysisOperation
        Invoked when processing group stage of grouped window queries to update arguments of this aggregate.
        Overrides:
        updateGroupAggregates in class DataAnalysisOperation
        Parameters:
        session - the session
        stage - select stage
      • getOrderedResultLoop

        protected void getOrderedResultLoop​(SessionLocal session,
                                            java.util.HashMap<java.lang.Integer,​Value> result,
                                            java.util.ArrayList<Value[]> ordered,
                                            int rowIdColumn)
        Description copied from class: DataAnalysisOperation
        Returns result of this window function or window aggregate. This method may not be called on window aggregate without window order clause.
        Specified by:
        getOrderedResultLoop in class DataAnalysisOperation
        Parameters:
        session - the session
        result - the map to append result to
        ordered - ordered data
        rowIdColumn - the index of row id value
      • getRank

        private void getRank​(java.util.HashMap<java.lang.Integer,​Value> result,
                             java.util.ArrayList<Value[]> ordered,
                             int rowIdColumn)
      • getCumeDist

        private void getCumeDist​(java.util.HashMap<java.lang.Integer,​Value> result,
                                 java.util.ArrayList<Value[]> orderedData,
                                 int rowIdColumn)
      • getNtile

        private static void getNtile​(java.util.HashMap<java.lang.Integer,​Value> result,
                                     java.util.ArrayList<Value[]> orderedData,
                                     int rowIdColumn)
      • getLeadLag

        private void getLeadLag​(java.util.HashMap<java.lang.Integer,​Value> result,
                                java.util.ArrayList<Value[]> ordered,
                                int rowIdColumn,
                                SessionLocal session)
      • getNth

        private void getNth​(SessionLocal session,
                            java.util.HashMap<java.lang.Integer,​Value> result,
                            java.util.ArrayList<Value[]> ordered,
                            int rowIdColumn)
      • getRatioToReport

        private static void getRatioToReport​(java.util.HashMap<java.lang.Integer,​Value> result,
                                             java.util.ArrayList<Value[]> ordered,
                                             int rowIdColumn)
      • mapColumnsAnalysis

        public void mapColumnsAnalysis​(ColumnResolver resolver,
                                       int level,
                                       int innerState)
        Description copied from class: DataAnalysisOperation
        Map the columns of the resolver to expression columns.
        Overrides:
        mapColumnsAnalysis in class DataAnalysisOperation
        Parameters:
        resolver - the column resolver
        level - the subquery nesting level
        innerState - one of the Expression MAP_IN_* values
      • setEvaluatable

        public void setEvaluatable​(TableFilter tableFilter,
                                   boolean b)
        Description copied from class: Expression
        Tell the expression columns whether the table filter can return values now. This is used when optimizing the query.
        Overrides:
        setEvaluatable in class DataAnalysisOperation
        Parameters:
        tableFilter - the table filter
        b - true if the table filter can return value
      • getType

        public TypeInfo getType()
        Description copied from class: Expression
        Returns the data type. The data type may be unknown before the optimization phase.
        Specified by:
        getType in interface Typed
        Specified by:
        getType in class Expression
        Returns:
        the data type
      • getUnenclosedSQL

        public java.lang.StringBuilder getUnenclosedSQL​(java.lang.StringBuilder builder,
                                                        int sqlFlags)
        Description copied from class: Expression
        Get the SQL statement of this expression. This may not always be the original SQL statement, especially after optimization. Enclosing '(' and ')' are never appended.
        Specified by:
        getUnenclosedSQL in class Expression
        Parameters:
        builder - string builder
        sqlFlags - formatting flags
        Returns:
        the specified string builder
      • getCost

        public int getCost()
        Description copied from class: Expression
        Estimate the cost to process the expression. Used when optimizing the query, to calculate the query plan with the lowest estimated cost.
        Specified by:
        getCost in class Expression
        Returns:
        the estimated cost