object GpuCanonicalize
Rewrites an expression using rules that are guaranteed preserve the result while attempting
to remove cosmetic variations. Deterministic expressions that are equal after canonicalization
will always return the same answer given the same input (i.e. false positives should not be
possible). However, it is possible that two canonical expressions that are not equal will in fact
return the same answer given any input (i.e. false negatives are possible).
The following rules are applied:
- Names and nullability hints for
org.apache.spark.sql.types.DataTypesare stripped. - Names for
GetStructFieldare stripped. - TimeZoneId for
CastandAnsiCastare stripped ifneedsTimeZoneis false. - Commutative and associative operations (
AddandMultiply) have their children ordered byhashCode. EqualToandEqualNullSafeare reordered by hashCode.- Other comparisons (
GreaterThan,LessThan) are reversed byhashCode. - Elements in
Inare reordered byhashCode.
This is essentially a copy of the Spark Canonicalize class but updated for GPU operators
- Alphabetic
- By Inheritance
- GpuCanonicalize
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def execute(e: Expression): Expression
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
ignoreNamesTypes(e: Expression): Expression
Remove names and nullability from types, and names from
GetStructField. -
def
ignoreTimeZoneInCast(e: Expression): Expression
Remove TimeZoneId for Cast if needsTimeZone return false.
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()