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
XxHash64
child 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