Type: New Feature
Affects Version/s: BIGDATA_RELEASE_1_3_0
Fix Version/s: None
Component/s: Query Plan Generator
We obtain key range cardinality estimates for the access paths when analyzing a query. If any of those estimates is a zero (for a required join), then we should just replace fail the entire join group since no solutions can survive.
This should probably be done as an ASTOptimizer.
When using transactional isolation, the estimated cardinality for an access path will also count deleted tuples. This is a side-effect of (a) marking deleted tuples in the index using a delete marker until the tuples are purged; and (b) estimating the key-range of the access path based on the #of tuples that lie between the fromKey and the toKey. This can result in a non-zero estimate when there are no solutions in the data.
Therefore, we should also fail the join group if any access path can be proven to be empty in the data. This can occur with the RTO when it attempts to sample an access path. If it fully materializes the AP and finds no solutions, then the AP is provably empty. If this is done for a required join, then there will be no solutions for that join group.
See BLZG-265 (RTO).