Github user paul-rogers commented on the issue:

    https://github.com/apache/drill/pull/701
  
    General comment. Wasn't the design supposed to be that the lazy lookup 
would check for the function both in planning ("Calcite") and execution times? 
The whole point of the lazy init was to avoid per-query syncs (which will be 
prohibitively expensive for short queries) and to avoid race conditions.
    
    I wonder, is the problem the *way* in which we are checking for functions? 
The issue in this particular JIRA is a function with the same name as an 
existing function, but with different signature. Did the original lazy init 
check only names? Could a fix be to check name & signature?
    
    In general, the question is, can lazy init be preserved, but enhanced to 
handle the case described in the bug? It seems a shame to move away from it 
after all the effort that went into getting it (almost) right...
    
    If we switch to relying on syncing, we've got to rethink all the race 
conditions that were meant to be resolved with lazy init. Seems we'd have to 
update the design doc. to match. I'd really like to see if we can provide a fix 
that preserves the lazy init design so we keep the performance & concurrency 
benefits that it provides.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to