Package org.h2.expression.aggregate
Class JavaAggregate
- java.lang.Object
-
- org.h2.expression.Expression
-
- org.h2.expression.analysis.DataAnalysisOperation
-
- org.h2.expression.aggregate.AbstractAggregate
-
- org.h2.expression.aggregate.JavaAggregate
-
public class JavaAggregate extends AbstractAggregate
This class wraps a user-defined aggregate.
-
-
Field Summary
Fields Modifier and Type Field Description private int[]argTypesprivate intdataTypeprivate UserAggregateuserAggregateprivate JdbcConnectionuserConnection-
Fields inherited from class org.h2.expression.aggregate.AbstractAggregate
args, distinct, filterCondition, type
-
Fields inherited from class org.h2.expression.analysis.DataAnalysisOperation
over, overOrderBySort, select, STAGE_GROUP, STAGE_RESET, STAGE_WINDOW
-
Fields inherited from class org.h2.expression.Expression
AUTO_PARENTHESES, MAP_IN_AGGREGATE, MAP_IN_WINDOW, MAP_INITIAL, WITH_PARENTHESES, WITHOUT_PARENTHESES
-
Fields inherited from interface org.h2.util.HasSQL
ADD_PLAN_INFORMATION, DEFAULT_SQL_FLAGS, NO_CASTS, QUOTE_ONLY_WHEN_REQUIRED, REPLACE_LOBS_FOR_TRACE, TRACE_SQL_FLAGS
-
-
Constructor Summary
Constructors Constructor Description JavaAggregate(UserAggregate userAggregate, Expression[] args, Select select, boolean distinct)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.lang.ObjectcreateAggregateData()Create aggregate data object specific to the subclass.ValuegetAggregatedValue(SessionLocal session, java.lang.Object aggregateData)Returns aggregated value.intgetCost()Estimate the cost to process the expression.private AggregategetInstance()protected intgetNumExpressions()Returns the number of expressions, excluding OVER clause.java.lang.StringBuildergetUnenclosedSQL(java.lang.StringBuilder builder, int sqlFlags)Get the SQL statement of this expression.booleanisEverything(ExpressionVisitor visitor)Check if this expression and all sub-expressions can fulfill a criteria.Expressionoptimize(SessionLocal session)Try to optimize the expression.protected voidrememberExpressions(SessionLocal session, Value[] array)Stores current values of expressions into the specified array.protected voidupdateAggregate(SessionLocal session, java.lang.Object aggregateData)Updates an aggregate value.private voidupdateData(SessionLocal session, java.lang.Object aggregateData, Value[] remembered)protected voidupdateFromExpressions(SessionLocal session, java.lang.Object aggregateData, Value[] array)Updates the provided aggregate data from the remembered expressions.protected voidupdateGroupAggregates(SessionLocal session, int stage)Invoked when processing group stage of grouped window queries to update arguments of this aggregate.-
Methods inherited from class org.h2.expression.aggregate.AbstractAggregate
appendTailConditions, getOrderedResultLoop, getSubexpression, getSubexpressionCount, getType, isAggregate, mapColumnsAnalysis, setEvaluatable, setFilterCondition, updateAggregate
-
Methods inherited from class org.h2.expression.analysis.DataAnalysisOperation
createOrder, getGroupData, getOverOrderBySort, getValue, getWindowData, mapColumns, setOverCondition, updateAggregate, updateOrderedAggregate
-
Methods inherited from class org.h2.expression.Expression
addFilterConditions, createIndexConditions, getAlias, getBooleanValue, getColumnName, getColumnNameForView, getEnclosedSQL, getNonAliasExpression, getNotIfPossible, getNullable, getSchemaName, getSQL, getSQL, getSQL, getSQL, getTableAlias, getTableName, getWhenSQL, getWhenValue, isConstant, isIdentity, isNullConstant, isValueSet, isWhenConditionOperand, needParentheses, optimizeCondition, toString, writeExpressions, writeExpressions
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.h2.util.HasSQL
getTraceSQL
-
-
-
-
Field Detail
-
userAggregate
private final UserAggregate userAggregate
-
argTypes
private int[] argTypes
-
dataType
private int dataType
-
userConnection
private JdbcConnection userConnection
-
-
Constructor Detail
-
JavaAggregate
public JavaAggregate(UserAggregate userAggregate, Expression[] args, Select select, boolean distinct)
-
-
Method Detail
-
getCost
public int getCost()
Description copied from class:ExpressionEstimate the cost to process the expression. Used when optimizing the query, to calculate the query plan with the lowest estimated cost.- Specified by:
getCostin classExpression- Returns:
- the estimated cost
-
getUnenclosedSQL
public java.lang.StringBuilder getUnenclosedSQL(java.lang.StringBuilder builder, int sqlFlags)Description copied from class:ExpressionGet 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:
getUnenclosedSQLin classExpression- Parameters:
builder- string buildersqlFlags- formatting flags- Returns:
- the specified string builder
-
isEverything
public boolean isEverything(ExpressionVisitor visitor)
Description copied from class:ExpressionCheck if this expression and all sub-expressions can fulfill a criteria. If any part returns false, the result is false.- Overrides:
isEverythingin classDataAnalysisOperation- Parameters:
visitor- the visitor- Returns:
- if the criteria can be fulfilled
-
optimize
public Expression optimize(SessionLocal session)
Description copied from class:ExpressionTry to optimize the expression.- Overrides:
optimizein classAbstractAggregate- Parameters:
session- the session- Returns:
- the optimized expression
-
getInstance
private Aggregate getInstance()
-
getAggregatedValue
public Value getAggregatedValue(SessionLocal session, java.lang.Object aggregateData)
Description copied from class:DataAnalysisOperationReturns aggregated value.- Specified by:
getAggregatedValuein classDataAnalysisOperation- Parameters:
session- the sessionaggregateData- the aggregate data- Returns:
- aggregated value.
-
updateAggregate
protected void updateAggregate(SessionLocal session, java.lang.Object aggregateData)
Description copied from class:AbstractAggregateUpdates an aggregate value.- Specified by:
updateAggregatein classAbstractAggregate- Parameters:
session- the sessionaggregateData- aggregate data
-
updateData
private void updateData(SessionLocal session, java.lang.Object aggregateData, Value[] remembered)
-
updateGroupAggregates
protected void updateGroupAggregates(SessionLocal session, int stage)
Description copied from class:DataAnalysisOperationInvoked when processing group stage of grouped window queries to update arguments of this aggregate.- Overrides:
updateGroupAggregatesin classAbstractAggregate- Parameters:
session- the sessionstage- select stage
-
getNumExpressions
protected int getNumExpressions()
Description copied from class:DataAnalysisOperationReturns the number of expressions, excluding OVER clause.- Specified by:
getNumExpressionsin classDataAnalysisOperation- Returns:
- the number of expressions
-
rememberExpressions
protected void rememberExpressions(SessionLocal session, Value[] array)
Description copied from class:DataAnalysisOperationStores current values of expressions into the specified array.- Specified by:
rememberExpressionsin classDataAnalysisOperation- Parameters:
session- the sessionarray- array to store values of expressions
-
updateFromExpressions
protected void updateFromExpressions(SessionLocal session, java.lang.Object aggregateData, Value[] array)
Description copied from class:AbstractAggregateUpdates the provided aggregate data from the remembered expressions.- Specified by:
updateFromExpressionsin classAbstractAggregate- Parameters:
session- the sessionaggregateData- aggregate dataarray- values of expressions
-
createAggregateData
protected java.lang.Object createAggregateData()
Description copied from class:DataAnalysisOperationCreate aggregate data object specific to the subclass.- Specified by:
createAggregateDatain classDataAnalysisOperation- Returns:
- aggregate-specific data object.
-
-