-
Notifications
You must be signed in to change notification settings - Fork 603
make Parser
generic around dialect
#1381
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
I disagree with this blanket assertion. It's a trade-off, and you can't actually say which way is better out of the context of a specific use case. If you only use |
Sure it will lead to a larger binary, but I wouldn't be at all sure that the overall performance will be worse in your case. Avoiding the lookup stuff related to dynamic dispatch will still improve performance. |
I suggest the next step if anyone wants to pursue this would be to create a |
My anecdotal observations confirm this guess. From working on DataFusion for 4 years and looking at many profiling traces (including just query planning) is that I have never seen the SQL parser show up at all as a significant time consumer. |
if we care about performance, we should stop using dynamic dispatch and make the parser generic around the dialect, with that we could make lots of these methods
const
(or drop thePrecedence
enum and just have const values on the trait) and probably improve performance significantly in general.That would of course be a big change to the public API.
This is definitely how would implement
Parser
if I was starting now, but I think we should see some evidence that parsing SQL is a meaningful chunk of time for anyone before making a change like this.My guess is that:
Parser
generic and therefore dropping the restriction onDialect
that it has to be 'object safe' would actually only save us ~20%If both those assumptions are right, this doesn't seem worth it unless it makes the code generally easier to reason with and work on.
Originally posted by @samuelcolvin in #1379 (comment)
(separate issue seems worth it for this discussion)
The text was updated successfully, but these errors were encountered: