This repository was archived by the owner on May 17, 2024. It is now read-only.
Compile all AST elements always via dialects, never directly #713
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR inverses the flow of AST-to-SQL compilation.
Previously, it was going from the root code -> database -> compiler -> AST nodes, which in turn sometimes (but not always) redirected back to the compiler -> dialect for some pieces of SQL.
As a result, the SQL logic was spread over the code base and was difficult to override per database.
Now, the root code goes -> database -> compiler -> dialect directly. The dialect knows how to render all SQL. Specifically, the base dialect provides the core SQL for all databases, with each and every AST node being possible to override. The AST nodes know nothing about SQL, they only express our intentions of what should be executed, not how.
A very simple chart:
