Call this method to record information about type conversions via DataTypeMeta.
Call this method to record information about type conversions via DataTypeMeta.
Whether there exists runtime data transition for the wrapped plan, if true, the overriding of output attributes will always work even when the wrapped plan can't be replaced by GPU overrides.
Whether there exists runtime data transition for the wrapped plan, if true, the overriding of output attributes will always work even when the wrapped plan can't be replaced by GPU overrides.
Returns true iff all of the data writing commands can be replaced.
Returns true iff all of the data writing commands can be replaced.
Returns true iff all of the expressions and their children could be replaced.
Returns true iff all of the expressions and their children could be replaced.
Returns true iff all of the partitioning can be replaced.
Returns true iff all of the partitioning can be replaced.
Returns true iff this could be replaced.
Returns true iff this could be replaced.
When AQE is enabled and we are planning a new query stage, we need to look at meta-data previously stored on the spark plan to determine whether this operator can run on GPU
When AQE is enabled and we are planning a new query stage, we need to look at meta-data previously stored on the spark plan to determine whether this operator can run on GPU
The wrapped data writing commands that should be examined
The wrapped data writing commands that should be examined
The wrapped expressions that should be examined
The wrapped expressions that should be examined
The wrapped partitioning that should be examined
The wrapped partitioning that should be examined
The wrapped plans that should be examined
The wrapped plans that should be examined
the config
the config
If this is enabled to be converted to a GPU version convert it and return the result, else do what is needed to possibly convert the rest of the plan.
If this is enabled to be converted to a GPU version convert it and return the result, else do what is needed to possibly convert the rest of the plan.
Keep this on the CPU, but possibly convert its children under it to run on the GPU if enabled.
Keep this on the CPU, but possibly convert its children under it to run on the GPU if enabled. By default this just returns what is wrapped by this. For some types of operators/stages, like SparkPlan, each part of the query can be converted independent of other parts. As such in a subclass this should be overridden to do the correct thing.
Returns the list of reasons the entire plan can't be replaced.
Returns the list of reasons the entire plan can't be replaced. An empty set means the entire plan is ok to be replaced, do the normal checking per exec and children.
Call this if there is a condition found that the entire plan is not allowed to run on the GPU.
Call this if there is a condition found that the entire plan is not allowed to run on the GPU.
Returns true iff this must be replaced because its children have already been replaced and this needs to also be replaced for compatibility.
Returns true iff this must be replaced because its children have already been replaced and this needs to also be replaced for compatibility.
Gets output attributes of current SparkPlanMeta, which is supposed to be called during type checking for the current plan.
Gets output attributes of current SparkPlanMeta, which is supposed to be called during type checking for the current plan.
By default, it simply returns the output of wrapped plan. For specific plans, they can override outputTypeMetas to apply custom conversions on the output of wrapped plan. For plans which just pass through the schema of childPlan, they can set useOutputAttributesOfChild to true, in order to propagate the custom conversions of childPlan if they exist.
Overrides this method to implement custom conversions for specific plans.
Overrides this method to implement custom conversions for specific plans.
the parent of this node, if there is one.
the parent of this node, if there is one.
Create a string representation of this in append.
Create a string representation of this in append.
where to place the string representation.
how far down the tree this is.
should all the data be printed or just what does not work on the GPU?
When converting this to a string should we include the string representation of what this wraps too? This is off by default.
When converting this to a string should we include the string representation of what this wraps too? This is off by default.
Recursively force a section of the plan back onto CPU, stopping once a plan is reached that is already on CPU.
Recursively force a section of the plan back onto CPU, stopping once a plan is reached that is already on CPU.
Run rules that happen for the entire tree after it has been tagged initially.
Run rules that happen for the entire tree after it has been tagged initially.
Returns true if this node should be removed.
Returns true if this node should be removed.
Tag all of the children to see if they are GPU compatible first.
Tag all of the children to see if they are GPU compatible first. Do basic common verification for the operators, and then call tagSelfForGpu
Called to verify that this plan will work on the GPU.
Called to verify that this plan will work on the GPU. Generic checks will have already been
done. In general this method should only tag this operator as bad. If it needs to tag
one of its children please take special care to update the comment inside
tagSelfForGpu
so we don't end up with something that could be cyclical.
Do any extra checks and tag yourself if you are compatible or not.
Do any extra checks and tag yourself if you are compatible or not. Be aware that this may already have been marked as incompatible for a number of reasons.
All of your children should have already been tagged so if there are situations where you may need to disqualify your children for various reasons you may do it here too.
Whether to pass through the outputAttributes of childPlan's meta, only for UnaryPlan
Whether to pass through the outputAttributes of childPlan's meta, only for UnaryPlan
Call this to indicate that this should not be replaced with a GPU enabled version
Call this to indicate that this should not be replaced with a GPU enabled version
why it should not be replaced.
what we are wrapping
what we are wrapping