BloomFilterMightContain Predicate Expression¶
BloomFilterMightContain is a Predicate that uses BloomFilter when executed (evaluate and doGenCode) to mightContainLong.
BloomFilterMightContain is a BinaryExpression.
null Result
BloomFilterMightContain returns null when executed and there is neither BloomFilter nor value (for an InternalRow) defined.
Creating Instance¶
BloomFilterMightContain takes the following to be created:
BloomFilterMightContain is created when:
- InjectRuntimeFilter logical optimization is executed (and injects a BloomFilter)
Bloom Filter Expression¶
BloomFilterMightContain is given a Bloom Filter Expression when created.
The Bloom Filter expression is always a ScalarSubquery expression over an Aggregate logical operator.
The Aggregate logical operator is created as follows:
- No grouping (all rows are in the same group)
- BloomFilterAggregate as the aggregate function (with
XxHash64child expression)
Value Expression¶
BloomFilterMightContain is given a Value Expression when created.
The Value expression is always an XxHash64 expression (of type Long).
null Value
If the value evaluates to null, BloomFilterMightContain evaluates to null (in eval and doGenCode).
BloomFilter¶
bloomFilter: BloomFilter
Lazy Value
bloomFilter is a Scala lazy value to guarantee that the code to initialize it is executed once only (when accessed for the first time) and the computed value never changes afterwards.
Learn more in the Scala Language Specification.
bloomFilter requests the Bloom Filter Expression to evaluate (that gives an Array[Byte]).
In the end, bloomFilter deserializes the bytes (to re-create a BloomFilter).
Note
If the Array[Byte] is null (undefined), bloomFilter is null.
bloomFilter is used when:
Pretty Name¶
prettyName is the following text:
might_contain