predicate_funcs Expression Audits#
Audit notes for expressions in this category that have been audited. Absence of an entry means the expression has not been audited yet, not that it is unsupported. See the user guide Spark Expression Support for current support status.
!#
Spark 3.4.3 (audited 2026-05-27): registry alias of
Not. Same support asnot.Spark 3.5.8 (audited 2026-05-27): identical to 3.4.3.
Spark 4.0.1 (audited 2026-05-27): identical to 3.4.3.
Spark 4.1.1 (audited 2026-05-27): identical to 3.4.3.
<#
Spark 3.4.3 (audited 2026-05-27): identical to 3.5.8.
Spark 3.5.8 (audited 2026-05-27): baseline.
LessThan(left, right) extends BinaryComparison. Comet routes viaCometLessThanto the proto’sltbinary expression.Spark 4.0.1 (audited 2026-05-27): semantics unchanged.
Spark 4.1.1 (audited 2026-05-27): identical to 4.0.1.
<=#
Spark 3.4.3 (audited 2026-05-27): identical to 3.5.8.
Spark 3.5.8 (audited 2026-05-27): baseline.
LessThanOrEqual(left, right) extends BinaryComparison. Comet routes viaCometLessThanOrEqualto the proto’slt_eqbinary expression.Spark 4.0.1 (audited 2026-05-27): semantics unchanged.
Spark 4.1.1 (audited 2026-05-27): identical to 4.0.1.
<=>#
Spark 3.4.3 (audited 2026-05-27): identical to 3.5.8.
Spark 3.5.8 (audited 2026-05-27): baseline.
EqualNullSafe(left, right) extends BinaryComparison; treats two NULLs as equal and a NULL with a non-NULL as not equal. Comet routes viaCometEqualNullSafeto the proto’seq_null_safebinary expression.Spark 4.0.1 (audited 2026-05-27): semantics unchanged.
Spark 4.1.1 (audited 2026-05-27): identical to 4.0.1.
=#
Spark 3.4.3 (audited 2026-05-27): identical to 3.5.8.
Spark 3.5.8 (audited 2026-05-27): baseline.
EqualTo(left, right) extends BinaryComparison. Comet routes viaCometEqualToto the proto’seqbinary expression.Spark 4.0.1 (audited 2026-05-27): semantics unchanged.
Spark 4.1.1 (audited 2026-05-27): identical to 4.0.1.
==#
Spark 3.4.3 (audited 2026-05-27): registry alias of
EqualTo. Same support as=.Spark 3.5.8 (audited 2026-05-27): identical to 3.4.3.
Spark 4.0.1 (audited 2026-05-27): identical to 3.4.3.
Spark 4.1.1 (audited 2026-05-27): identical to 3.4.3.
>#
Spark 3.4.3 (audited 2026-05-27): identical to 3.5.8.
Spark 3.5.8 (audited 2026-05-27): baseline.
GreaterThan(left, right) extends BinaryComparison. Comet routes viaCometGreaterThanto the proto’sgtbinary expression.Spark 4.0.1 (audited 2026-05-27): semantics unchanged.
Spark 4.1.1 (audited 2026-05-27): identical to 4.0.1.
>=#
Spark 3.4.3 (audited 2026-05-27): identical to 3.5.8.
Spark 3.5.8 (audited 2026-05-27): baseline.
GreaterThanOrEqual(left, right) extends BinaryComparison. Comet routes viaCometGreaterThanOrEqualto the proto’sgt_eqbinary expression.Spark 4.0.1 (audited 2026-05-27): semantics unchanged.
Spark 4.1.1 (audited 2026-05-27): identical to 4.0.1.
and#
Spark 3.4.3 (audited 2026-05-27): identical to 3.5.8.
Spark 3.5.8 (audited 2026-05-27): baseline.
And(left, right) extends BinaryOperator with Predicate; short-circuit left-to-right. Comet routes viaCometAndto the proto’sandbinary expression.Spark 4.0.1 (audited 2026-05-27): semantics unchanged.
Spark 4.1.1 (audited 2026-05-27): identical to 4.0.1.
between#
Spark 3.4.3 (audited 2026-05-27): the SQL form
expr BETWEEN low AND highis rewritten at the parser level toexpr >= low AND expr <= high. Comet sees only the resultingAnd(GreaterThanOrEqual, LessThanOrEqual)and routes viaCometAnd+CometGreaterThanOrEqual+CometLessThanOrEqual.Spark 3.5.8 (audited 2026-05-27): identical to 3.4.3.
Spark 4.0.1 (audited 2026-05-27): identical to 3.4.3.
Spark 4.1.1 (audited 2026-05-27): identical to 3.4.3.
ilike#
Spark 3.4.3 (audited 2026-05-27): identical to 3.5.8.
Spark 3.5.8 (audited 2026-05-27): baseline.
ILike(left, right, escapeChar) extends RuntimeReplaceable; the analyzer rewrites toLike(Lower(left), Lower(right), escapeChar). Comet handles viaCometLikeandCometLower(case-conversion path, gated byspark.comet.caseConversion.enabled=falseby default).Spark 4.0.1 (audited 2026-05-27): identical to 3.5.8.
Spark 4.1.1 (audited 2026-05-27): identical to 4.0.1.
in#
Spark 3.4.3 (audited 2026-05-27): identical to 3.5.8.
Spark 3.5.8 (audited 2026-05-27): baseline.
In(value, list: Seq[Expression]) extends Predicate; NULL-sensitive set membership (NULL in any element of the list yields NULL when no match found). Comet routes viaCometInto the proto’sInexpression withnegated = false;InSetis rewritten toInso the native side can perform its own set-lookup optimization.Spark 4.0.1 (audited 2026-05-27): semantics unchanged.
Spark 4.1.1 (audited 2026-05-27): identical to 4.0.1.
isnan#
Spark 3.4.3 (audited 2026-05-27): identical to 3.5.8.
Spark 3.5.8 (audited 2026-05-27): baseline.
IsNaN(child) extends UnaryExpression; returnsBooleanType;falsefor NULL or non-float types. Comet routes viaCometIsNaNto the nativeisnanscalar.Spark 4.0.1 (audited 2026-05-27): semantics unchanged.
Spark 4.1.1 (audited 2026-05-27): identical to 4.0.1.
isnotnull#
Spark 3.4.3 (audited 2026-05-27): identical to 3.5.8.
Spark 3.5.8 (audited 2026-05-27): baseline.
IsNotNull(child) extends UnaryExpression with Predicate. Comet routes viaCometIsNotNullto the proto’sis_not_nullunary expression.Spark 4.0.1 (audited 2026-05-27): semantics unchanged.
Spark 4.1.1 (audited 2026-05-27): identical to 4.0.1.
isnull#
Spark 3.4.3 (audited 2026-05-27): identical to 3.5.8.
Spark 3.5.8 (audited 2026-05-27): baseline.
IsNull(child) extends UnaryExpression with Predicate. Comet routes viaCometIsNullto the proto’sis_nullunary expression.Spark 4.0.1 (audited 2026-05-27): semantics unchanged.
Spark 4.1.1 (audited 2026-05-27): identical to 4.0.1.
like#
See
string_funcs / like(audited in PR #4461).CometLikeonly supports the default\\escape character.
not#
Spark 3.4.3 (audited 2026-05-27): identical to 3.5.8.
Spark 3.5.8 (audited 2026-05-27): baseline.
Not(child) extends UnaryExpression with Predicate. Comet routes viaCometNot, which optimizes a few special cases:Not(EqualTo)-> protoneq,Not(EqualNullSafe)-> protoneq_null_safe,Not(In)-> protoIn(negated = true).Spark 4.0.1 (audited 2026-05-27): semantics unchanged.
Spark 4.1.1 (audited 2026-05-27): identical to 4.0.1.
or#
Spark 3.4.3 (audited 2026-05-27): identical to 3.5.8.
Spark 3.5.8 (audited 2026-05-27): baseline.
Or(left, right) extends BinaryOperator with Predicate; short-circuit left-to-right. Comet routes viaCometOrto the proto’sorbinary expression.Spark 4.0.1 (audited 2026-05-27): semantics unchanged.
Spark 4.1.1 (audited 2026-05-27): identical to 4.0.1.
rlike#
See
string_funcs / regexp_replaceand theCometRLikenotes (audited in PR #4461).CometRLikeconsults a plan-time whitelist (CometRegex) for non-nullUTF8_BINARYliteral patterns. Analyzer-admitted patterns (ASCII literals, simple character classes, greedy quantifiers, groups, alternation) run natively by default. Every other literal stays on the JVM codegen dispatcher unlessspark.comet.expression.RLike.allowIncompatible=trueforces the Rust path. Non-literal and NULL patterns, and Spark 4 non-default collations, always stay on the dispatcher. Anchors (^,$) and./\d/\w/\sare out of subset because Java and Rust disagree on line terminators and Unicode character classes. Rust class set operators (&&/~~/--), unescaped class delimiters used as atoms or range endpoints, and counted, aggregate, or nested patterns over a conservative compile-size budget are also out of subset so they cannot silently change results, suppress Spark errors, or fail native plan construction.