Class Aggregate

    • Field Detail

      • ADDITIONAL_SUM_PRECISION

        private static final int ADDITIONAL_SUM_PRECISION
        The additional result precision in decimal digits for a SUM aggregate function.
        See Also:
        Constant Field Values
      • ADDITIONAL_AVG_SCALE

        private static final int ADDITIONAL_AVG_SCALE
        The additional precision and scale in decimal digits for an AVG aggregate function.
        See Also:
        Constant Field Values
      • AGGREGATES

        private static final java.util.HashMap<java.lang.String,​AggregateType> AGGREGATES
      • orderByList

        private java.util.ArrayList<QueryOrderBy> orderByList
      • extraArguments

        private java.lang.Object extraArguments
      • flags

        private int flags
    • Constructor Detail

      • Aggregate

        public Aggregate​(AggregateType aggregateType,
                         Expression[] args,
                         Select select,
                         boolean distinct)
        Create a new aggregate object.
        Parameters:
        aggregateType - the aggregate type
        args - the aggregated expressions
        select - the select statement
        distinct - if distinct is used
    • Method Detail

      • addAggregate

        private static void addAggregate​(java.lang.String name,
                                         AggregateType type)
      • getAggregateType

        public static AggregateType getAggregateType​(java.lang.String name)
        Get the aggregate type for this name, or -1 if no aggregate has been found.
        Parameters:
        name - the aggregate function name
        Returns:
        null if no aggregate function has been found, or the aggregate type
      • setOrderByList

        public void setOrderByList​(java.util.ArrayList<QueryOrderBy> orderByList)
        Set the order for ARRAY_AGG() or GROUP_CONCAT() aggregate.
        Parameters:
        orderByList - the order by list
      • getAggregateType

        public AggregateType getAggregateType()
        Returns the type of this aggregate.
        Returns:
        the type of this aggregate
      • setExtraArguments

        public void setExtraArguments​(java.lang.Object extraArguments)
        Sets the additional arguments.
        Parameters:
        extraArguments - the additional arguments
      • getExtraArguments

        public java.lang.Object getExtraArguments()
        Returns the additional arguments.
        Returns:
        the additional arguments
      • setFlags

        public void setFlags​(int flags)
        Description copied from interface: ExpressionWithFlags
        Set the flags for this expression.
        Specified by:
        setFlags in interface ExpressionWithFlags
        Parameters:
        flags - the flags to set
      • sortWithOrderBy

        private void sortWithOrderBy​(Value[] array)
      • updateAggregate

        protected void updateAggregate​(SessionLocal session,
                                       java.lang.Object aggregateData)
        Description copied from class: AbstractAggregate
        Updates an aggregate value.
        Specified by:
        updateAggregate in class AbstractAggregate
        Parameters:
        session - the session
        aggregateData - aggregate data
      • 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 AbstractAggregate
        Parameters:
        session - the session
        stage - select stage
      • updateFromExpressions

        protected void updateFromExpressions​(SessionLocal session,
                                             java.lang.Object aggregateData,
                                             Value[] array)
        Description copied from class: AbstractAggregate
        Updates the provided aggregate data from the remembered expressions.
        Specified by:
        updateFromExpressions in class AbstractAggregate
        Parameters:
        session - the session
        aggregateData - aggregate data
        array - values of expressions
      • getRank

        private Value getRank​(Value[] ordered,
                              Value arg,
                              java.util.Comparator<Value> sort)
      • getCumeDist

        private static Value getCumeDist​(Value[] ordered,
                                         Value arg,
                                         java.util.Comparator<Value> sort)
      • getListaggError

        private java.lang.StringBuilder getListaggError​(Value[] array,
                                                        java.lang.String separator)
      • getListaggTruncate

        private java.lang.StringBuilder getListaggTruncate​(Value[] array,
                                                           java.lang.String separator,
                                                           java.lang.String filter,
                                                           boolean withoutCount)
      • getListaggItem

        private java.lang.String getListaggItem​(Value v)
      • 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 AbstractAggregate
        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 AbstractAggregate
        Parameters:
        tableFilter - the table filter
        b - true if the table filter can return value
      • 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
      • getSQLArrayAggregate

        private java.lang.StringBuilder getSQLArrayAggregate​(java.lang.StringBuilder builder,
                                                             int sqlFlags)
      • getSQLListagg

        private java.lang.StringBuilder getSQLListagg​(java.lang.StringBuilder builder,
                                                      int sqlFlags)
      • getSQLJsonObjectAggregate

        private java.lang.StringBuilder getSQLJsonObjectAggregate​(java.lang.StringBuilder builder,
                                                                  int sqlFlags)
      • getSQLJsonArrayAggregate

        private java.lang.StringBuilder getSQLJsonArrayAggregate​(java.lang.StringBuilder builder,
                                                                 int sqlFlags)
      • getMinMaxColumnIndex

        private Index getMinMaxColumnIndex()
      • isEverything

        public boolean isEverything​(ExpressionVisitor visitor)
        Description copied from class: Expression
        Check if this expression and all sub-expressions can fulfill a criteria. If any part returns false, the result is false.
        Overrides:
        isEverything in class DataAnalysisOperation
        Parameters:
        visitor - the visitor
        Returns:
        if the criteria can be fulfilled
      • 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
      • getSelect

        public Select getSelect()
        Returns the select statement.
        Returns:
        the select statement
      • isDistinct

        public boolean isDistinct()
        Returns if distinct is used.
        Returns:
        if distinct is used