Package org.h2.command.query
Class SelectGroups
- java.lang.Object
-
- org.h2.command.query.SelectGroups
-
public abstract class SelectGroups extends java.lang.ObjectGrouped data for aggregates.Call sequence:
reset().- For each source row
nextSource()should be invoked. done().next()is invoked inside a loop until it returns null.
Call sequence for lazy group sorted result:
resetLazy()(not required before the first execution).- For each source group
nextLazyGroup()should be invoked. - For each source row
nextLazyRow()should be invoked. Each group can have one or more rows.
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voiddone()Invoked after all source rows are evaluated.java.lang.ObjectgetCurrentGroupExprData(Expression expr)Get the group-by data for the current group and the passed in expression.intgetCurrentGroupRowId()Returns identity of the current row.static SelectGroupsgetInstance(SessionLocal session, java.util.ArrayList<Expression> expressions, boolean isGroupQuery, int[] groupIndex)Creates new instance of grouped data.PartitionDatagetWindowExprData(DataAnalysisOperation expr, Value partitionKey)Get the window data for the specified expression.booleanisCurrentGroup()Is there currently a group-by active.abstract ValueRownext()Returns the key of the next group.voidnextLazyGroup()Moves group data to the next group in lazy mode.voidnextLazyRow()Moves group data to the next row in lazy mode.abstract voidnextSource()Invoked for each source row to evaluate group key and setup all necessary data for aggregates.voidremove()Removes the data for the current key.voidreset()Resets this group data for reuse.voidresetLazy()Resets this group data for reuse in lazy mode.voidsetCurrentGroupExprData(Expression expr, java.lang.Object obj)Set the group-by data for the current group and the passed in expression.voidsetWindowExprData(DataAnalysisOperation expr, Value partitionKey, PartitionData obj)Set the window data for the specified expression.
-
-
-
Method Detail
-
getInstance
public static SelectGroups getInstance(SessionLocal session, java.util.ArrayList<Expression> expressions, boolean isGroupQuery, int[] groupIndex)
Creates new instance of grouped data.- Parameters:
session- the sessionexpressions- the expressionsisGroupQuery- is this query is a group querygroupIndex- the indexes of group expressions, or null- Returns:
- new instance of the grouped data.
-
isCurrentGroup
public boolean isCurrentGroup()
Is there currently a group-by active.- Returns:
trueif there is currently a group-by active, otherwise returnsfalse.
-
getCurrentGroupExprData
public final java.lang.Object getCurrentGroupExprData(Expression expr)
Get the group-by data for the current group and the passed in expression.- Parameters:
expr- expression- Returns:
- expression data or null
-
setCurrentGroupExprData
public final void setCurrentGroupExprData(Expression expr, java.lang.Object obj)
Set the group-by data for the current group and the passed in expression.- Parameters:
expr- expressionobj- expression data to set
-
getWindowExprData
public final PartitionData getWindowExprData(DataAnalysisOperation expr, Value partitionKey)
Get the window data for the specified expression.- Parameters:
expr- expressionpartitionKey- a key of partition- Returns:
- expression data or null
-
setWindowExprData
public final void setWindowExprData(DataAnalysisOperation expr, Value partitionKey, PartitionData obj)
Set the window data for the specified expression.- Parameters:
expr- expressionpartitionKey- a key of partitionobj- window expression data to set
-
getCurrentGroupRowId
public int getCurrentGroupRowId()
Returns identity of the current row. Used by aggregates to check whether they already processed this row or not.- Returns:
- identity of the current row
-
reset
public void reset()
Resets this group data for reuse.
-
nextSource
public abstract void nextSource()
Invoked for each source row to evaluate group key and setup all necessary data for aggregates.
-
done
public void done()
Invoked after all source rows are evaluated.
-
next
public abstract ValueRow next()
Returns the key of the next group.- Returns:
- the key of the next group, or null
-
remove
public void remove()
Removes the data for the current key.- See Also:
next()
-
resetLazy
public void resetLazy()
Resets this group data for reuse in lazy mode.
-
nextLazyGroup
public void nextLazyGroup()
Moves group data to the next group in lazy mode.
-
nextLazyRow
public void nextLazyRow()
Moves group data to the next row in lazy mode.
-
-