LuciferYang commented on issue #67994: URL: https://github.com/apache/doris/issues/67994#issuecomment-5675644634
Correcting my own trigger claim, which the analysis above is right to qualify. I wrote that `IS NULL` / `IS NOT NULL` already qualify as pushed common expressions. Zone-map evaluability was the wrong thing to check. `ScanLocalStateBase::_normalize_is_null_predicate` (`be/src/exec/operator/scan_operator.cpp:967-1011`) converts `is_null_pred` into a column range, so such a predicate normally leaves the common-expression set and arrives as a `ColumnPredicate`, which makes the earlier predicate loop install the constant reader first. So no currently merged shape is demonstrated to reach this; the reachable one is the column-vs-column comparison from #67774, which can never become a `ColumnPredicate`. Two other corrections to my wording: the bad entry lasts until the per-segment column cache evicts it or the segment is evicted, not necessarily the whole segment residency; and the defect is the dropped constant on the lookup, independent of any trigger. On the fix: the same-key replacement trap named in point 2 is real. `_insert_locked_nocheck` pushes a second LRU node and only overwrites the map iterator, and eviction erases `_cache_map[tail->key]`, which can drop the live entry of that key. My patch makes it a same-key in-place update instead of a second insert. I will extend the unit tests to assert the constant reader's zone map and iterator output rather than only its type, and add the concurrent physical-versus-constant case. Point 3 is the reason #67995 exists separately: a cache upgrade cannot repair a zone-map evaluation that already consumed the physical `[0,0]`, so the builders have to request the constant themselves. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
