Decouple logql engine/AST from execution context #1605
Merged
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.
What
This PR introduces a few changes/refactorings designed to decouple the LogQL engine and AST from its execution context. The idea is that an AST is just a stateless tree structure which can be processed by an evaluation engine. Separating the evaluation from AST will allow us to more easily build different evaluation contexts (sharding comes to mind).
Engine
is now an interfaceEvaluator
interfaceWhy
Previously, evaluators and iterators were tied directly into the AST nodes themselves. This makes them difficult to extend/refactor/etc.