Class CountClauseIterator
java.lang.Object
org.rumbledb.runtime.plan.RuntimePlan<FlworTuple>
org.rumbledb.runtime.TupleRuntimePlan
org.rumbledb.runtime.flwor.clauses.CountClauseIterator
- All Implemented Interfaces:
Serializable,DataFrameRuntimePlan<FlworTuple>,LocalRuntimePlan<FlworTuple>,NativeQueryRuntimePlan
public class CountClauseIterator
extends TupleRuntimePlan
implements DataFrameRuntimePlan<FlworTuple>
- See Also:
-
Field Summary
Fields inherited from class org.rumbledb.runtime.TupleRuntimePlan
child, evaluationDepthLimit, inputTupleProjection, outputTupleProjectionFields inherited from class org.rumbledb.runtime.plan.RuntimePlan
staticContext -
Constructor Summary
ConstructorsConstructorDescriptionCountClauseIterator(TupleRuntimePlan child, Name variableName, RuntimeStaticContext staticContext) -
Method Summary
Modifier and TypeMethodDescriptionstatic org.apache.spark.sql.Dataset<org.apache.spark.sql.Row>addSerializedCountColumn(org.apache.spark.sql.Dataset<org.apache.spark.sql.Row> df, Map<Name, DynamicContext.VariableDependency> outputDependencies, Name variableName) booleancontainsClause(FLWOR_CLAUSES kind) Says whether or not the clause and its descendants include a clause of the specified kind.createNativeCursor(DynamicContext context) Creates an independent cursor for one native local evaluation.createNativeDataFrame(DynamicContext context) Builds the DataFrame for one evaluation.generateNativeQuery(NativeClauseContext nativeClauseContext) This function generate (if possible) a native spark-sql query that maps the inner working of the iteratorVariable dependencies are variables that MUST be provided by the parent clause in the dynamic context for successful execution of this clause.getInputTupleVariableDependencies(Map<Name, DynamicContext.VariableDependency> parentProjection) Builds the DataFrame projection that this clause needs to receive from its child clause.Returns the output tuple variable names.booleanSays whether this expression evaluation triggers a Spark job.voidprint(StringBuilder buffer, int indent) Methods inherited from class org.rumbledb.runtime.TupleRuntimePlan
canSetEvaluationDepthLimit, getChildIterator, getEvaluationDepthLimit, getHeight, getStaticContext, getSubtreeBeyondLimit, isDataFrame, setEvaluationDepthLimit, setInputAndOutputTupleVariableDependencies, toStringMethods inherited from class org.rumbledb.runtime.plan.RuntimePlan
getConfiguration, getCursor, getDataFrame, getMetadata, getRDD, getRuntimeStaticContext, materialize, materializeAtMost, materializeAtMostOne, materializeExactlyOne, materializeFirstOrNull
-
Constructor Details
-
CountClauseIterator
public CountClauseIterator(TupleRuntimePlan child, Name variableName, RuntimeStaticContext staticContext)
-
-
Method Details
-
getVariableName
-
createNativeCursor
Description copied from interface:LocalRuntimePlanCreates an independent cursor for one native local evaluation.- Specified by:
createNativeCursorin interfaceLocalRuntimePlan<FlworTuple>- Specified by:
createNativeCursorin classTupleRuntimePlan- Parameters:
context- the dynamic context for that evaluation- Returns:
- an unopened cursor
-
createNativeDataFrame
Description copied from interface:DataFrameRuntimePlanBuilds the DataFrame for one evaluation.- Specified by:
createNativeDataFramein interfaceDataFrameRuntimePlan<FlworTuple>- Parameters:
context- the dynamic context for that evaluation- Returns:
- the resulting DataFrame
-
addSerializedCountColumn
public static org.apache.spark.sql.Dataset<org.apache.spark.sql.Row> addSerializedCountColumn(org.apache.spark.sql.Dataset<org.apache.spark.sql.Row> df, Map<Name, DynamicContext.VariableDependency> outputDependencies, Name variableName) -
getDynamicContextVariableDependencies
Description copied from class:TupleRuntimePlanVariable dependencies are variables that MUST be provided by the parent clause in the dynamic context for successful execution of this clause. These variables are: 1. All variables that the expression of the clause depends on (recursive call of getVariableDependencies on the expression) 2. Except those variables bound in the current FLWOR (obtained from the auxiliary method getVariablesBoundInCurrentFLWORExpression), because those are provided in the Tuples 3. Plus (recursively calling getVariableDependencies) all the Variable Dependencies of the child clause if it exists.- Overrides:
getDynamicContextVariableDependenciesin classTupleRuntimePlan- Returns:
- a map of variable names to dependencies (FULL, COUNT, ...) that this clause needs to obtain from the dynamic context.
-
getOutputTupleVariableNames
Description copied from class:TupleRuntimePlanReturns the output tuple variable names. These variables can be removed from the dependencies of expressions in ascendent (subsequent) clauses, because their values are provided in the tuples rather than the dynamic context object.- Overrides:
getOutputTupleVariableNamesin classTupleRuntimePlan- Returns:
- the set of variable names that are bound by descendant clauses.
-
print
- Overrides:
printin classTupleRuntimePlan
-
getInputTupleVariableDependencies
public Map<Name,DynamicContext.VariableDependency> getInputTupleVariableDependencies(Map<Name, DynamicContext.VariableDependency> parentProjection) Description copied from class:TupleRuntimePlanBuilds the DataFrame projection that this clause needs to receive from its child clause. The intent is that the result of this method is forwarded to the child clause in getDataFrame() so it can optimize some values away. Invariant: all keys in getInputTupleVariableDependencies(...) MUST be output tuple variables, i.e., appear in this.child.getOutputTupleVariableNames()- Specified by:
getInputTupleVariableDependenciesin classTupleRuntimePlan- Parameters:
parentProjection- the projection needed by the parent clause.- Returns:
- the projection needed by this clause.
-
containsClause
Description copied from class:TupleRuntimePlanSays whether or not the clause and its descendants include a clause of the specified kind.- Specified by:
containsClausein classTupleRuntimePlan- Parameters:
kind- the kind of clause to test for.- Returns:
- true if there is one. False otherwise.
-
isSparkJobNeeded
public boolean isSparkJobNeeded()Says whether this expression evaluation triggers a Spark job.- Specified by:
isSparkJobNeededin classTupleRuntimePlan- Returns:
- true if the execution triggers a Spark, false otherwise, null if undetermined yet.
-
generateNativeQuery
Description copied from class:TupleRuntimePlanThis function generate (if possible) a native spark-sql query that maps the inner working of the iterator- Specified by:
generateNativeQueryin interfaceNativeQueryRuntimePlan- Overrides:
generateNativeQueryin classTupleRuntimePlan- Parameters:
nativeClauseContext- context information to generate the native query- Returns:
- a native clause context with the spark-sql native query to get an equivalent result of the iterator, or [NativeClauseContext.NoNativeQuery] if it is not possible
-